鉴于:
以及以下内容:
对于:
q(runs | the, dog) = 0.5
这不应该是1
q(runs | the, dog)
:xi =运行,xi-2 =,xi-1 =狗
概率是(wi已被换成xi):
因此:
count(the dog runs) / count(the dog) = 1 / 1 = 1
但在上面的示例中,值为0.5。 0.5如何到达?
基于http://files.asimihsan.com/courses/nlp-coursera-2013/notes/nlp.html#markov-processes-part-1
答案 0 :(得分:0)
数字0.5根本没有“到达”;为了说明的目的,作者只是取了一个任意的数字。
任何n-gram语言模型都由两件事组成:词汇量和过渡概率。并且该模型“不在乎”这些概率是如何得出的。唯一的要求是,概率必须是自洽的(也就是说,对于任何前缀,所有可能的延续的概率之和为1)。对于上述模型,这是正确的:例如p(runs|the, dog) + p(STOP|the,dog)=1
。
当然,在实际应用中,我们确实对如何从某些文本语料库中“学习”模型参数感兴趣。您可以计算出您的特定语言模型可以生成以下文本:
the # with 0.5 probability
the dog # with 0.25 probability
the dog runs # with 0.25 probability
根据这种观察,我们可以对训练语料库进行“逆向工程”:它可能包含4个句子:
the
the
the dog
the dog runs
如果您计算该语料库中的所有三语组并将其标准化,您将看到生成的相对频率等于屏幕快照中的概率。特别地,在“狗”之后有1个句子,在“狗”之后带有“ runs”的1个句子。这就是0.5(=1/(1+1)
)出现的可能性。