“自动分词”从诞生到现在,经历了什么?

上一期文章我们说到了工程师们是通过设计分词算法来让计算机准确的知道我们要搜索的资料,给我们使用互联网带来了革命性的变化。这篇文章我们来说一说分词算法的发展以及现状。

“自动分词”从诞生到现在,经历了什么?

世界上没有完美的事物,所有的一切都是在克服缺陷中走向完美。"最大匹配算法"是最先的投入使用的算法,它符合人们的阅读习惯,能够在大多数情况下正确理解人们的意愿,但它是不完美的。它在遇见"交集型歧义"时就会变得不可靠,比如"北京大学生来应聘"会被错误的分为"北京大学/生前/来/应聘"。

一些比较机械的问题可以通过一个特殊规则表来解决,还有一个适用非常广泛的特殊规则,这个强大的规则可以修正很多交集型歧义的划分错误。首先我们要维护一个一般不单独成词的字表,比如"美"、"片"、"伟"等等。在分词的过程中,一旦发现这些词被孤立出来,就要重新判断它和前面的字组词的可能性。

“自动分词”从诞生到现在,经历了什么?

我们还有一种与人们阅读习惯完全不同的算法思路:把句子当成一个整体来考虑,从全局的角度来考虑一个句子划分方案的优劣。最初用的办法是,寻找词数最少的,再配合上面提到的"不成词字表",我们就可以得到一个简明而强大的算法:对一种分词方案,里面有多少词,就减去多少分;每出现一个不成词的字,就多减一分。减分最少的方案就是最好的分词方案。这种算法思路充分的利用了计算机的计算优势,将复杂问题通过逻辑运算来解决。

算法还有进一步优化的空间。字不成词有一个程度的问题。"民"是一个不成词的元素,"鸭"一般不单独成词,但在科技文和儿歌中除外。每个字成词都有一定概率,每个词出现的概率不同。于是我们用概率设计出了一个更加标准、连续、自动的算法:最大概率算法:先统计大量真实语料中各个词出现的概率,然后将每种分词方案中各词出现的概率乘起来作为计算机判断分词方案的优劣,找出最优方案作为分词结果。

“自动分词”从诞生到现在,经历了什么?

但还有一种缺陷没有被上述算法处理:"组合型歧义",是指一个字串即可合又可分。举例"个人恩怨"中的"个人"是一个词,但"这个人"中的"个"是单独的字,一旦涉及到组合型歧义,最大匹配、最少词数、概率最大算法都不能解决。

接下来聪明的设计师们跳出了以前的设计框架,把人类语言抽象为一个二元模型,什么是二元模型?对任意两个词语a1,a2,统计词库中a1后面是a2的概率P(a1,a2),将得出的数据做成一个二维表。再定义一个句子划分方案的得分为P(φ,a1)·P(a1,a2)·P(a2,a3)……,其中w1,w2,…,wn依次表示分出的词,P(φ,a1)表示句子开头是a1的概率。这个算法模型解决了词类标注和语音识别等各类自然语言的处理问题。

“自动分词”从诞生到现在,经历了什么?

至此,中文自动分词算法终于有了一个实用的解决方案。

但汉语的博大精深岂是如此轻易就可以解决的,宇宙大神级文明"李白"都无法通过穷举找出中国最优美的诗句。

“自动分词”从诞生到现在,经历了什么?

近十年来,如何识别为登录词的问题,成为了中文分词领域的下一个难关。比如地名,人名。

比如"高峰"、"汪洋"、"建国",计算机无法分辨这些到底是人的名字,还是别的词语。还有一些比较奇葩的地名,比如,北京有一个地名叫"臭水沟",结果网上一搜,一堆臭水沟的图片出来了。

“自动分词”从诞生到现在,经历了什么?

还有机构名,品牌名,缩略词,还有网络新词,千奇百怪的网络新词不知道什么时候就在网上火起来了,这是要逼疯设计师的节奏啊!!!


分享到:


相關文章: