贝叶斯应用之 | 中文分词
Posted 这个月是没有名字的了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贝叶斯应用之 | 中文分词相关的知识,希望对你有一定的参考价值。
在前面的推文中基本把贝叶斯相关的知识点梳理了一遍,此后将陆续更新几个贝叶斯的应用例子,方便大家更深刻地理解贝叶斯~
贝叶斯是机器学习的核心方法之一。
今天我们要介绍的就是贝叶斯在中文分词领域中的应用。
Google 研究员吴军在《数学之美》系列中就有一篇是介绍中文分词的,有兴趣的小伙伴可以去研读一下。在这里我们只简单介绍一下核心的思想,并不做赘述。
分词问题的描述为:
给定一个句子(字串),如:
南京市长江大桥
如何对这个句子进行分词(词串)才是最靠谱的。例如:
1. 南京市/长江大桥
2. 南京/市长/江大桥
这两个分词,到底哪个更靠谱呢?
我们用贝叶斯公式来形式化地描述这个问题,令 X 为字串(句子),Y 为词串(一种特定的分词假设)。我们就是需要寻找使得 P(Y|X) 最大的 Y ,使用一次贝叶斯可得:
P(Y|X) ∝ P(Y)*P(X|Y)
用自然语言来说就是:这种分词方式(词串)的可能性 乘以 这个词串生成我们的句子的可能性。我们进一步容易看到:可以近似地将 P(X|Y) 看作是恒等于 1 的,因为任意假想的一种分词方式之下生成我们的句子总是精准地生成的(只需把分词之间的分界符号扔掉即可)。于是,我们就变成了去最大化 P(Y) ,也就是寻找一种分词使得这个词串(句子)的概率最大化。而如何计算一个词串:
W1, W2, W3, W4 ..
的可能性呢?我们知道,根据联合概率的公式展开:
P(W1, W2, W3, W4 ..) = P(W1) * P(W2|W1) * P(W3|W2, W1) * P(W4|W1,W2,W3) * ..
于是我们可以通过一系列的条件概率(右式)的乘积来求整个联合概率。然而不幸的是随着条件数目的增加(P(Wn|Wn-1,Wn-2,..,W1) 的条件有 n-1 个),数据稀疏问题也会越来越严重,即便语料库再大也无法统计出一个靠谱的 P(Wn|Wn-1,Wn-2,..,W1) 来。
为了缓解这个问题,计算机科学家们一如既往地使用了“天真”假设:我们假设句子中一个词的出现概率只依赖于它前面的有限的 k 个词(k 一般不超过 3,如果只依赖于前面的一个词,就是2元语言模型(2-gram),同理有 3-gram 、 4-gram 等),这个就是所谓的“有限地平线”假设。虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大的,后面要提到的朴素贝叶斯方法使用的假设跟这个精神上是完全一致的,我们会解释为什么像这样一个天真的假设能够得到强大的结果。目前我们只要知道,有了这个假设,刚才那个乘积就可以改写成:
P(W1) * P(W2|W1) * P(W3|W2) * P(W4|W3) ..
(假设每个词只依赖于它前面的一个词)。而统计 P(W2|W1) 就不再受到数据稀疏问题的困扰了。对于我们上面提到的例子“南京市长江大桥”,如果按照自左到右的贪婪方法分词的话,结果就成了“南京市长/江大桥”。但如果按照贝叶斯分词的话(假设使用 3-gram),由于“南京市长”和“江大桥”在语料库中一起出现的频率为 0 ,这个整句的概率便会被判定为 0 。 从而使得“南京市/长江大桥”这一分词方式胜出。
一点注记:有人可能会疑惑,难道我们人类也是基于这些天真的假设来进行推理的?不是的。事实上,统计机器学习方法所统计的东西往往处于相当表层(shallow)的层面,在这个层面机器学习只能看到一些非常表面的现象,有一点科学研究的理念的人都知道:越是往表层去,世界就越是繁复多变。从机器学习的角度来说,特征(feature)就越多,成百上千维度都是可能的。特征一多,好了,高维诅咒就产生了,数据就稀疏得要命,不够用了。而我们人类的观察水平显然比机器学习的观察水平要更深入一些,为了避免数据稀疏我们不断地发明各种装置(最典型就是显微镜),来帮助我们直接深入到更深层的事物层面去观察更本质的联系,而不是在浅层对表面现象作统计归纳。
举一个简单的例子,通过对大规模语料库的统计,机器学习可能会发现这样一个规律:所有的“他”都是不会穿 bra 的,所有的“她”则都是穿的。然而,作为一个男人,却完全无需进行任何统计学习,因为深层的规律就决定了我们根本不会去穿 bra 。至于机器学习能不能完成后者(像人类那样的)这个推理,则是人工智能领域的经典问题。至少在那之前,声称统计学习方法能够终结科学研究(原文)的说法是纯粹外行人说的话。
以上是关于贝叶斯应用之 | 中文分词的主要内容,如果未能解决你的问题,请参考以下文章