我已经开始学习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
如何使用三元组计算条件概率?
答案 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