nlp - 实现三元马尔可夫模型

标签 nlp markov trigram

鉴于:

enter image description here

以及以下内容:

enter image description here

为了 :

q(runs | the, dog) = 0.5

这不应该是 1至于q(runs | the, dog) : xi=runs , xi-2=the , xi-1=dog

概率为(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

最佳答案

数字 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/

相关文章:

Django 三元组 : create gin index and search suggested words in Django

r - 将一列中的多个文本值转换为不同列

python - 如何使用 scikit learn 计算多类案例的准确率、召回率、准确率和 f1 分数?

markov-chains - 使用马尔可夫链进行程序音乐生成

ruby-on-rails - Rails 中八卦搜索的迁移

java - 通过传递字符串而不是字符串数组来解析句子斯坦福解析器

适用于从右到左语言的 NLP 工具?

machine-learning - 使用神经网络进行强化学习

postgresql - 如何在 postgres 中结合全文搜索和 trigrams