我怀疑您不仅想要最常用的短语,还想要最有趣的搭配。否则,您最终可能会得到由常用词组成的短语过多,而有趣和信息丰富的短语则较少。
为此,您基本上需要从数据中提取 n-gram,然后找到具有最高点互信息(PMI) 的那些。也就是说,您希望找到同时出现的单词比您偶然期望的要多得多。
NLTK 搭配使用方法介绍了如何在大约 7 行代码中做到这一点,例如:
import nltk
from nltk.collocations import *
bigram_measures = nltk.collocations.BigramAssocMeasures()
trigram_measures = nltk.collocations.TrigramAssocMeasures()
# change this to read in your data
finder = BigramCollocationFinder.from_words(
nltk.corpus.genesis.words('english-web.txt'))
# only bigrams that appear 3+ times
finder.apply_freq_filter(3)
# return the 10 n-grams with the highest PMI
finder.nbest(bigram_measures.pmi, 10)