给定单词概率的句子如何计算?

时间:2020-01-26 22:44:37

标签: python list numpy dictionary

我正在使用Python进行工作,试图编写一个循环,该循环将每个单词乘以句子概率的乘积来计算句子的概率。我有一本字典,其中包含数千个单词作为键,而它们的概率作为值。我遇到的问题是,无论如何,我目前的尝试似乎计算出的句子级别概率为1。这是我目前的代码:

sentence = "This is a short and boring sentence."
## we'll say that "probs" is the dictionary that contains all my word-probability pairs
## this is the loop I'm trying to run my sentence through:
problist = []
for x in sentence:
    problist += probs[x]

## my thinking is that the code above will create a list of each word in the sentence's probability
## then I can find the product of the list using numpy
import numpy
sentprob = numpy.prod(problist)

但是,就像我说的那样,这段代码似乎总是返回1的概率。我在做什么错了?

1 个答案:

答案 0 :(得分:2)

您的代码存在以下问题:

for x in sentence:
    problist += probs[x]

x这里不是单词,而是字母。表示您正在词典中搜索Thi ......的概率。
至于为什么是1的原因,doc说:

空数组的乘积是中性元素1

尝试使用此:

for x in sentence.split():
    problist += probs[x]

请注意,句子末尾的.仍然是个问题,因为最后一个世界将是sentence.。您应该删除所有.,? ...等等。