Я хотел бы посчитать частоту трех слов, предшествующих и следующих за конкретным словом из текстового файла, который был преобразован в токены.
from nltk.tokenize import sent_tokenize
from nltk.tokenize import word_tokenize
from nltk.util import ngrams
with open('dracula.txt', 'r', encoding="ISO-8859-1") as textfile:
text_data = textfile.read().replace('\n', ' ').lower()
tokens = nltk.word_tokenize(text_data)
text = nltk.Text(tokens)
grams = nltk.ngrams(tokens, 4)
freq = Counter(grams)
freq.most_common(20)
Я не знаю, как искать строку«Дракула» как слово фильтра.Я также попробовал:
text.collocations(num=100)
text.concordance('dracula')
Желаемый результат выглядел бы примерно так со счетом: три слова перед 'dracula', отсортированный счет
(('and', 'he', 'saw', 'dracula'), 4),
(('one', 'cannot', 'see', 'dracula'), 2)
три слова после 'dracula', отсортированныйcount
(('dracula', 'and', 'he', 'saw'), 4),
(('dracula', 'one', 'cannot', 'see'), 2)
Триграмма, содержащая 'Дракулу' в середине, отсортированный счет
(('count', 'dracula', 'saw'), 4),
(('count', 'dracula', 'cannot'), 2)
Заранее благодарю за любую помощь.