在python nltk中查找trigram的条件概率

时间:2016-06-28 06:25:46

标签: python nlp nltk n-gram

我已经开始学习SELECT * FROM test1 t1 INNER JOIN test2 t2 ON t1.id = t2.id INNER JOIN test3 t3 ON t1.id = t3.id; 了,我正在关注here的教程,在那里他们使用像这样的bigrams找到条件概率。

$sql = "Insert into staff(client_name,address) VALUES ('$client_name $address','$address')";

但是我想找到使用三元组的条件概率。当我尝试将NLTK更改为import nltk from nltk.corpus import brown cfreq_brown_2gram = nltk.ConditionalFreqDist(nltk.bigrams(brown.words())) 时,我收到以下错误。

nltk.bigrams

如何使用三元组计算条件概率?

2 个答案:

答案 0 :(得分:4)

nltk.ConditionalFreqDist期望其数据为(condition, item)元组的序列。 nltk.trigrams返回长度为3的元组,这会导致您发布的确切错误。

从你的帖子来看,它并不完全清楚你想要用什么作为条件,但是在进行语言建模时的惯例是调整其前辈的最后一个词。 以下代码演示了您如何实现它。

brown_trigrams = nltk.trigrams(brown.words())
condition_pairs = (((w0, w1), w2) for w0, w1, w2 in brown_trigrams)
cfd_brown = nltk.ConditionalFreqDist(condition_pairs)

答案 1 :(得分:-1)

您可以使用描述为here

用法示例:

from nltk.util import ngrams

input= '...'
N = 3
trigrams = ngrams(input.split(), N)
for grams in trigrams:
  print grams

我强烈建议您阅读上述文档,我希望它会有所帮助。