我正在开发一个需要我从对话流中提取关键字(并最终生成这些单词的标签云)的应用程序。我正在考虑以下步骤:


标记每个原始会话(输出存储为字符串列表)
删除停用词
使用词干分析器(波特词干算法)


到目前为止,nltk提供了我需要的所有工具。在此之后,我需要以某种方式对这些单词进行“排名”,并提出最重要的单词。谁能建议我为此使用nltk的哪些工具?

谢谢
尼希特

最佳答案

我想这取决于您对“重要”的定义。
如果您要谈论频率,则可以只使用单词(或词干)作为键来构建字典,然后将其视为值。然后,您可以根据其数量对字典中的键进行排序。

类似于(未经测试)的内容:

from collections import defaultdict

#Collect word statistics
counts = defaultdict(int)
for sent in stemmed_sentences:
   for stem in sent:
      counts[stem] += 1

#This block deletes all words with count <3
#They are not relevant and sorting will be way faster
pairs = [(x,y) for x,y in counts.items() if y >= 3]

#Sort (stem,count) pairs based on count
sorted_stems = sorted(pairs, key = lambda x: x[1])

09-27 23:47