0-1语言建模当中会遇到的问题
2013-07-14 21:18
134 查看
在对语言建模之前,先来说明一些基本的简单的概念。
我们假设:
有这样一个集合,在这个集合里面,是我们所有的涉及到的单词集,并且这个单词的集合是有限的(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满足下面的条件:
这个公式向我们表明了,x属于V+当中的元素,所有其中的元素的概率相加结果应该是1.
为了更形象的说明P是什么,可以看下面的例子:
那么,整体的流程是怎样的呢?
我们把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中会提到。
我们假设:
有这样一个集合,在这个集合里面,是我们所有的涉及到的单词集,并且这个单词的集合是有限的(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满足下面的条件:
这个公式向我们表明了,x属于V+当中的元素,所有其中的元素的概率相加结果应该是1.
为了更形象的说明P是什么,可以看下面的例子:
那么,整体的流程是怎样的呢?
我们把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中会提到。
相关文章推荐
- C语言学习中连用两个scanf遇到的一个问题
- Struts2中使用OGNL表达式语言访问静态方法和静态属性以及我遇到的问题和解决方法
- padding在布局当中遇到的问题
- lua递归函数的编写,为了解决一个游戏当中遇到的复杂问题
- Google Weather API返回XML的SAX和DOM解析当中遇到的问题及解决
- [置顶] 使用mysql数据库开发过程当中遇到问题 -- 给关键字加 [关键字]的问题
- linux下C语言编程之位运算和字符串运算中遇到的问题:20120707苏嵌实训第第六天
- linux下c语言网络实验遇到的问题(1)
- Centos6.5下rsync文件同步安装及配置当中遇到的问题及解决方法
- SSAS建模遇到的问题集锦
- 汇编语言文件操作管理,文件代号式磁盘存取中遇到的问题
- Go语言调用c动态库遇到的一些问题
- Python 语言使用中遇到的问题汇总
- JBoss Seam从头学到脚之3---支持多国语言(utf8)时遇到的问题及解决办法
- 备份脚本InstallRman.sh使用当中遇到的问题
- 学习JAVA语言过程中遇到了一些问题
- go语言常遇到的问题
- 使用mysql数据库开发过程当中遇到问题 -- 给关键字加 [关键字]的问题
- 改写某个模拟器的go语言源码遇到的问题
- httpd当中访问虚拟主机时候遇到的问题