q(runs | the, dog) = 0.5
这不应该是
1
至于q(runs | the, dog)
: xi=runs , xi-2=the , xi-1=dog概率为(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.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个句子以“the dog”结尾,1个句子在“the dog”之后是“runs”。这就是概率 0.5 (
=1/(1+1)
) 可能出现的方式。
关于nlp - 实现三元马尔可夫模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542740/