一种方法是提取文档中出现频率比您偶然期望的单词高的单词。例如,在大量文档中说“马尔科夫”一词几乎从未见过。但是,在同一收藏集中的特定文档中,Markov经常出现。这表明Markov可能是与文档关联的很好的关键字或标记。
为了识别这样的关键字,您可以使用关键字和文档的逐点相互信息。由给出
PMI(term,doc) = log [ P(term, doc) / (P(term)*P(doc))]。这将大致告诉您,在大型文档中遇到该术语时,您对特定文档中的术语感到惊讶的程度是多少(或更多)。
要确定与文档相关联的5个最佳关键字,您只需按其在文档中的PMI得分对术语进行排序,然后选择得分最高的5个。
从我对这个问题的回答中借用的NLTK搭配方法介绍了如何使用n-
gram PMI在大约7行代码中提取有趣的多字表达式,例如:
import nltkfrom nltk.collocations import *bigram_measures = nltk.collocations.BigramAssocMeasures()# change this to read in your datafinder = BigramCollocationFinder.from_words( nltk.corpus.genesis.words('english-web.txt'))# only bigrams that appear 3+ timesfinder.apply_freq_filter(3)# return the 5 n-grams with the highest PMIfinder.nbest(bigram_measures.pmi, 5)


