我试图找出如何提取特定词的搭配词出来的文字。如:在统计上显着的搭配,例如:整个文本语料库中的“霍比特人”一词?我期待类似于单词列表(搭配)或者可能是元组(我的单词+它的搭配)的结果。从文本语料库一个给定的单词提取搭配词 - 的Python
我知道如何使双边和使用NLTK卦,以及如何选择只包含我感兴趣字二环或卦。我正在使用下面的代码(改编自this StackOverflow question)。
import nltk
from nltk.collocations import *
corpus = nltk.Text(text) # "text" is a list of tokens
trigram_measures = nltk.collocations.TrigramAssocMeasures()
tri_finder = TrigramCollocationFinder.from_words(corpus)
# Only trigrams that appear 3+ times
tri_finder.apply_freq_filter(3)
# Only the ones containing my word
my_filter = lambda *w: 'Hobbit' not in w
tri_finder.apply_ngram_filter(my_filter)
print tri_finder.nbest(trigram_measures.likelihood_ratio, 20)
这工作得很好,给我(的其中一个因素是我的话),每一个都有数似然值卦的列表。但我并不想仅从卦列表中选择单词。我想在我选择的一个窗口中制作所有可能的N-Gram组合(例如,在我左右三个窗口中的所有单词 - 这意味着一个7克),然后检查哪一个这些N-gram单词与我的兴趣单词具有统计相关的频率。我想为此考虑Log-Likelihood值。
我的想法是:
1)计算不同尺寸的所有的N-gram组合包含我的字(不一定使用NLTK,除非它可以计算比卦更大的单位,但我还没有发现,选项),
2)计算对于每个构成我的n-gram的单词的对数似然值,并以某种方式进行比较针对它们出现在(n-gram中的频率?)。这里是我迷失的地方......我没有经历过这个,我不知道该如何思考这一步。
有没有人有任何建议,我应该怎么办? 假设我现在使用nltk提供的trigrams池:有没有人有想法如何从那里进行获取我的搜索词附近最相关的单词列表?
谢谢