实现三元马尔可夫模型

8

回答你的第一个问题:不应该。P(runs | the,dog)+ P(STOP | the,dog)应该加起来等于1,因为两者都具有相同的上下文“the dog”。回答你的第二个问题,基于哪些训练数据计算count(the dog runs)? - user3639557
回答你的第一个问题:不应该。在相同的上下文“the dog”下,P(runs| the, dog)+P(STOP| the, dog)应该加起来等于1。我不确定你在回答什么问题,因为我问的是如何得出P(runs| the, dog)=0.5的值,而不是1?训练数据是V={the,dog,runs} U {STOP} U {*}。 - blue-sky
1
V={the,dog,runs, STOP, *} 不是训练数据,而是词汇表。您还没有提供训练数据。 - user3639557
@user3639557,现在我理解了我的错误,感谢您的最后一条评论。我没有训练集。为了获得我最初要求的0.5,训练集大约是:x1 = {the, dog, runs},x2 = {the. dog, walks}。 - blue-sky
1
如果你打算从事这些工作,最好在Coursera上观看迈克尔·柯林斯的讲座。他深入地介绍了ngram语言模型(以及其他一些自然语言处理主题),跟随他也很容易:https://www.coursera.org/course/nlangp - user3639557
1个回答

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)) 出现的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接