实现trigram markov模型

时间:2016-02-21 22:06:33

标签: nlp markov trigram

鉴于:

enter image description here

以及以下内容:

enter image description here

对于:

q(runs | the, dog) = 0.5

这不应该是1 q(runs | the, dog):xi =运行,xi-2 =,xi-1 =狗

概率是(wi已被换成xi):

enter image description here

因此:

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

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))出现的可能性。