【问题标题】:Implementing trigram markov model实现三元马尔可夫模型
【发布时间】:2016-02-21 22:06:33
【问题描述】:

给定:

以及以下内容:

对于:

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

【问题讨论】:

  • 回答您的第一个问题:不,不应该。 P (runs| the, dog) + P(STOP| the, dog) 应该总和为 1,因为两者具有相同的上下文“狗”。要回答您的第二个问题,您根据哪些训练数据计算计数(狗跑)?
  • @user3639557 "回答你的第一个问题:不,不应该。鉴于两者都有相同的上下文“狗”“当我问到 P (runs| the, dog) = 0.5 当我到达值 1 时,不确定你在这里回答什么问题?训练数据为 V={the,dog,runs} U {STOP} U {*}
  • V={the,dog,runs, STOP, *} 不是训练数据。这是词汇集。您尚未提供训练数据。
  • @user3639557 现在由于您的最后评论,我明白了我的错误。我没有训练集。要得到 0.5,正如我最初问的那样,训练集大约是:x1 = {the , dog, runs} , x2 = {the .狗,走路}
  • 如果您打算从事这些工作,最好观看 Michael Collins 在 coursera 上的讲座。他深入介绍了 ngram 语言建模(以及其他一些 nlp 主题),并且很容易关注他:coursera.org/course/nlangp

标签: nlp markov trigram


【解决方案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)) 可能出现的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多