我使用genism计算我的tf-idf值如下。
texts = [['human', 'interface', 'computer'],
['survey', 'user', 'computer', 'system', 'response', 'time'],
['eps', 'user', 'interface', 'system'],
['system', 'human', 'system', 'eps'],
['user', 'response', 'time'],
['trees'],
['graph', 'trees'],
['graph', 'minors', 'trees'],
['graph', 'minors', 'survey']]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
tfidf = models.TfidfModel(corpus)
现在,我想获得具有最高tf-idf值的3个单词。请帮帮我!
答案 0 :(得分:0)
经过一些搜索,看起来你可能想要这个 - 它不是最具可读性但可能有效。
top_3 = [t[0] for t in
sorted([(word, i, j) for j, text in enumerate(texts) for i, word in enumerate(text)],
key=lambda t: tfidf[t[2]][t[1]])[:3]]
我从文本中获取单词,并使用(word, i, j)
形式的元组跟踪其行(作为i)和列(作为j)。然后我根据tfidf
中的值对单词进行排序。然后我进入前三名(使用[:3]
),并使用t[0] for t in ...
从单元格中取出单词。
可以很容易地修改它以按顺序存储任意数量的单词。