0-1语言建模当中会遇到的问题

在对语言建模之前,先来说明一些基本的简单的概念。

我们假设:

有这样一个集合,在这个集合里面,是我们所有的涉及到的单词集,并且这个单词的集合是有限的(finite)。为了表示这个集合,用字母V来表示,例如V={the,a,man,telescopo,Beckham,two…}

有了单词的集合,然后还需要有一个单词串的集合,为了更形象的解释,比如:

the STOP

a STOP

the fan STOP

the fan saw Beckham STOP

the fan saw saw STOP

the fan saw Beckham play for Real Madrid STOP

这个单词串的集合使用V+来表示。

为什么在每个的末尾要加一个STOP呢,这在以后的学习当中会用到,他有利于帮助我们开发一个概率模型。(convenient start to develop a probabilistic model)

现在有了上面的定义,继续探讨自然语言处理建模当中的问题。

现在:

  • 我们有一个有许多句子的样本,叫它训练样本training sample.
  • 我们需要学习一个概率分布p(learn a probability distribution p),p满足下面的条件:

        image

          这个公式向我们表明了,x属于V+当中的元素,所有其中的元素的概率相加结果应该是1.

为了更形象的说明P是什么,可以看下面的例子:

image

那么,整体的流程是怎样的呢?

我们把training sample测试样本当中的句子当作输入input,经过模型的处理,最终的输出便是p(output)。这是我们建立模型的作用。

为什么要做这些事情(这些事情指的是上面的准备测试样本,计算概率、建模等)?

起初,研究这些是为了解决语音识别当中遇到的难题,相关的还有手写识别等。这些技术的发展在NLP的很多领域楼来都证明十分的有用。

这些概率p该怎么计算出来呢?

原始的办法:

  • 假设我们有N个训练用的句子sentences
  • 每一个单词串,用x1 x2 x3…xn来表示,x表示每一个单词。使用c(x1…xn)来表示这个单词串在训练数据training data当中出现的次数。
  • 计算方法为:p(x1…xn)=c(x1…xn)/N

这个办法,刚一看到会觉得没有什么不妥,其实如果细心的话可以发现这个公式是有问题的。如果某一个单词串并没有在训练数据中出现,那么这个概率p的值就会变为0,如果P=0的话,那么就没有能力去生成新的句子(has no ability to generalize to new sentences)。因为,在训练样本中没有出现,并不代表在测试的时候或者在实际生活中p=0的单词串不会出现,所以,必须要解决p=0的问题,在0-4中会提到。

posted @ 2013-07-14 21:18  createMoMo  阅读(307)  评论(0编辑  收藏  举报