Как разбить текст на N-граммы и получить их смещение - PullRequest
0 голосов
/ 11 марта 2020

Я хочу разбить текст на нграммы, но также получить их смещение в тексте.
В настоящее время я использую библиотеку NLTK в Python, но я не нашел никакого собственного способа вернуть смещение N-грамм.
Я нашел этот ответ , но мне было интересно, есть ли какая-либо библиотека, которая предлагает это без необходимости ее реализации. Моя проблема в том, что у меня есть несколько вхождений одной и той же N-граммы в тексте, который я хочу разделить.

Пример использования:

    ngrams_with_offset("I like apples and I like oranges", 2)
    >>> [("I", "like", offset=0), 
         ("like", "apples", offset=2),
          ....... 
          ("I", "like", offset=18),
          ..... ]

1 Ответ

0 голосов
/ 25 марта 2020

Я не нашел никакого собственного способа сделать это, поэтому я реализовал свой собственный, чтобы соответствовать своему сценарию использования, используя функцию align_tokens () в NLTK.
Это напоминает что-то вроде этого:

tokenized_text = [word for word in word_tokenize(text) if word.lower() not in stopwords]
alignment = align_tokens(tokenized_text, text)
tokenized_with_offset = [(tokenized_text[i], alignment[i]) for i in range(len(alignment))]
ngrams(tokenized_with_offset, n)
...