使用文本搭配计算 ngram 词频

我想计算已转换为标记的文本文件中特定单词前后三个单词的频率。


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)

我不知道如何搜索字符串 'dracula' 作为过滤词。我也试过:


text.collocations(num=100)

text.concordance('dracula')

所需的输出看起来像这样的计数:“dracula”之前的三个词,排序计数


(('and', 'he', 'saw', 'dracula'), 4),

(('one', 'cannot', 'see', 'dracula'), 2)

'dracula' 后面的三个词,排序计数


(('dracula', 'and', 'he', 'saw'), 4),

(('dracula', 'one', 'cannot', 'see'), 2)

中间包含 'dracula' 的三元组,排序计数


(('count', 'dracula', 'saw'), 4),

(('count', 'dracula', 'cannot'), 2)

预先感谢您的任何帮助。


翻翻过去那场雪
浏览 195回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python