4

我看到多个问题和答案说 NLTK 搭配不能超出双​​和三克。

例如这个 - 如何在 python nltk 中获得 n-gram 搭配和关联?

我看到有一个东西叫做

nltk.QuadgramCollocationFinder

如同

nltk.BigramCollocationFinder 和 nltk.TrigramCollocationFinder

但同时不到类似的东西

nltk.collocations.QuadgramAssocMeasures()

类似于 nltk.collocations.BigramAssocMeasures() 和 nltk.collocations.TrigramAssocMeasures()

nltk.QuadgramCollocationFinder 的目的是什么,如果它不可能(没有黑客)找到双元和三元之外的 n-gram。

也许我错过了一些东西。

谢谢,

根据 Alvas 的输入添加代码并更新问题,现在可以使用

import nltk
from nltk.collocations import *
from nltk.corpus import PlaintextCorpusReader
from nltk.metrics.association import QuadgramAssocMeasures

bigram_measures = nltk.collocations.BigramAssocMeasures()
trigram_measures = nltk.collocations.TrigramAssocMeasures()
quadgram_measures = QuadgramAssocMeasures()

the_filter = lambda *w: 'crazy' not in w

finder = BigramCollocationFinder.from_words(corpus)
finder.apply_freq_filter(3)
finder.apply_ngram_filter(the_filter)
print (finder.nbest(bigram_measures.likelihood_ratio, 10))


finder = QuadgramCollocationFinder.from_words(corpus)
finder.apply_freq_filter(3)
finder.apply_ngram_filter(the_filter)
print(finder.nbest(quadgram_measures.likelihood_ratio,10))
4

1 回答 1

3

回购

from nltk.metrics.association import QuadgramAssocMeasures
于 2015-12-11T19:48:23.907 回答