如何从 NLTK 标记化的结果中获取前三个词

How to get top three words from the results tokenized in NLTK

我正在尝试获取在 NLTK 中标记化的结果中的前三个单词。这是按单词的使用频率排序的。

import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')

raw = open('sample.txt').read()
tokens = nltk.word_tokenize(raw)
text = nltk.Text(tokens)

tokens_l = [w.lower() for w in tokens]

pos = nltk.pos_tag(tokens_l)

only_nn = [x for (x,y) in pos if y in ('NN')]

freq = nltk.FreqDist(only_nn)
print(freq.items())

结果:

dict_items([('everyone', 1), ('work', 15), ('ability', 7), ('determination', 3), ('ingredient', 2), ('understood', 1)])

我想要 workabilitydetermination。如何从结果中得到这三个词?

只需调用 freq.most_common(3),并收集元组中的第一项。

for word, frequency in freq.items().__reversed__():
    print("Word:", word, "Frequency:", frequency)

这是一个字典,所以它由键值对组成。循环只是遍历它。

'reversed'部分按降序排列。