扩展NLTK的窗口大小from_document搭配方法

时间:2016-12-28 05:19:10

标签: python loops nlp nltk

使用NLTK分析嵌套的数字列表。每个子列表都独立于其他子列表,因此我使用了from_document方法。但是,与from_words方法不同,from_document没有窗口大小输入。我想扩展窗口大小,使其匹配每个文档大小。到目前为止我的代码:

 split_list = [[6, 3, 7, 8, 7, 5, 8, 8, 8, 3, 2, 1, 4],
 [5, 7, 8, 1, 8, 10, 3, 5, 5, 6, 8, 8, 5],
 [8, 9, 1, 2, 3, 8, 6, 3, 11],...]


bigram_measures = nltk.collocations.BigramAssocMeasures()
finder = BigramCollocationFinder.from_documents(split_list)
finder.score_ngrams(bigram_measures.pmi)

输出:

 [((10, 4), 2.6544750245287965),
 ((1, 4), 2.270073203392851),
 ((2, 1), 1.6606985694144463),
 ((10, 10), 1.3898880959117932),
 ((4, 1), 1.2139301253553185),...]

但这只能解决窗口大小为2的双字母,当我想要文档中所有可能的双字母组合时(例如窗口大小=文档大小)。我可以使用itertools.combinations手动计算所有内容,以制作双字母组合的所有组合,计算它们的频率,并使用非迭代的unigrams频率最终得到pmi。然而,这似乎是一种非常迂回的方式。有什么方法可以让NLTK扩大窗口大小吗?

1 个答案:

答案 0 :(得分:0)

请注意,这个问题是在不久前发布的,但是如果其他人想要类似的东西。尝试对每个文档使用BigramCollocationFinder.from_words(tokens,window_size),然后合并生成的bg和单词频率分布(fds)并手动构建新从fds搭配查找器以评分ngram。请参阅http://www.nltk.org/howto/collocations.html,以获得来自freq dist的搭配查找器示例。