使用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手动检查和计算所有内容,以创建双字母组的所有组合,计算它们的频率,并使用单字母组的非迭代频率最终获得pmi。
发布于 2018-08-12 14:13:28
注意这个问题是在不久前发布的,但是如果其他人想要为每个文档使用similar..Try (tokens,window_size),那么将得到的bg和词频分布( fds )结合起来,并从fds手动构造新的搭配查找器来为ngram评分。参见http://www.nltk.org/howto/collocations.html获取来自freq dist的搭配查找器的示例。
https://stackoverflow.com/questions/41355777
复制相似问题