中文分词技术

中文分词技术(Chinese Word Segmentation) 指将一个汉字序列切分红一个个单独的词。分词就是将连续的字序列按照必定的规则从新组合成词序列的过程算法

目前中文分词算法有如下5类:sql

  • 基于词典的方法
  • 基于统计的方法
  • 基于规则的方法
  • 基于人工智能技术的方法
  • 基于字标注的方法

在业务中,可使用多种算法进行比较选择,其中比较选择的原则有如下几点:架构

  • 总词数越少越好
  • 切分单字词的数量越少越好
  • 切分的单个词的字数越多越好
  • 切分结果中非词典的词越少越好

基于词典的方法

其基本原理是按照必定的步长对文档取词,把结果和词典进行匹配,匹配成功则分词成功,不然不予切分。这种方法实现简单,实用性强,最大的缺点就是识别的成功率极大程度受限于词库的完整度学习

取词的规则和算法有许多,如:测试

  • 正向最大匹配法
  • 邻近匹配法
  • 逆向最大匹配法
  • 双向最大匹配法
  • 最短路径匹配法
  • ...

最大正向匹配法(Maximun Matching,下文称MM)

其原理是以词库的最大长度为初始长度,窗口为1,从左到右对字符串进行扫描匹配,匹配不成功则减少窗口
其步骤是:人工智能

  1. 取得词库中最长的词的长度
  2. 从左到右截取1获得的长度的字符串
  3. 到词典中进行匹配
  4. 匹配成功,则把该字符串切分,余下字符串继续进行2操做
  5. 匹配不成功,则将该字符串去掉最后一个字,余下字符串继续进行3操做
  6. 重复上述过程,直到切分出全部词为止

以“研究生命的起源”为例,假定词典中的词包含有:{研究、研究生、生命、命、的、起源},切分步骤以下:spa

研究生  #第一个词匹配成功
命的起
命的
命      #第二个词匹配成功
的起源
的起
的      #第三个词匹配成功
起源    #第四个词匹配成功
匹配结果为:“研究生 命 的 起源”

邻近匹配法(Nearest Nerghbor Matching,下文称NM)

MM在每次匹配过程当中都要进行一次二分搜索,算法复杂度过高
NM则是在取到词典中匹配的第一个词后,往词后拼接下一个字,拼接后的新词在从词典中寻找,若是词典中有这个词,则该词必定会在邻近位置
其步骤是:设计

  1. 取字符串第一个字
  2. 到词典中进行匹配
  3. 匹配不成功,则拼接下一个字,继续进行2过程
  4. 匹配成功,则打一个标记,拼接下一个字,继续到词典中匹配,直到拼接后的字符串不在词典中,或者长度大于词典词的最大长度,则终止匹配,取被标记且字符串最多的词
  5. 重复上述过程,直到切分出全部词为止

继续以“研究生命的起源”进行分词做为例子,切分步骤以下:rest

研
研究      #第一个词第一次匹配成功并标记
研究生    #第一个词第二次匹配成功并标记
研究生命  #超过词典中最大长度3,则取词:研究生
命        #第二个词第一次匹配成功,并标记
命的      #第二个词第二次匹配失败,则取词:命
的        #第三个词第一次匹配成功,并标记
的起      #第三个词第二次匹配失败,则取词:的
起源      #第四个词匹配成功
匹配结果为:“研究生 命 的 起源”

逆向最大匹配法(Reverse Maximum Matching Method,下文称RMM)

其原理与MM基本相同,只是扫描方向相反,是从右向左扫描,其步骤差很少,再也不赘述。
继续以“研究生命的起源”进行分词做为例子,切分步骤以下:code

的起源
起源   #第一个词匹配成功
生命的
命的
的    #第二个词匹配成功
究生命
生命   #第三个词匹配成功
研究   #第四个词匹配成功
匹配结果为:“研究生 命 的 起源”

双向最大匹配法(Bi-directction Matching Method,下文称Bi-MM)

该方法其实是一个比较算法,使用MM和RMM切分后再对结果进行比较,按照上文说的比较原则选择其中一个最为结果。
例子“研究生命的起源”中
MM的结果为: 研究生 命 的 起源
RMM的结果为: 研究 生命 的 起源
词数均为4,单字较少的为RMM,则

匹配结果为:研究 生命 的 起源

最短路径匹配法(Shortest Path Matching Method,下文称SPM)

该方法实际上也是一个比较算法,先找出字符串中全部可能的词,每一个词有一个坐标,相邻两个词造成一条边,根据坐标既能够获得距离,找出从起点到终点中全部距离加起来最小的路径,该路径下所包含的词就是切分结果
例子“研究生命的起源”中
全部能够切分的词为:{研究、研究生、生命、命、的、起源}
可能的路径有:“研究 生命 的 起源”、“研究生 命 的 起源”
若按照词典排序后的索引值为坐标,(只是举例,能够根据场景设计坐标方法)
排序后的词典为:{命、生命、的、研究、研究生、起源}
则坐标分别为:{三、一、二、5}和{四、0、二、5},记录分别为:六、9,
选择距离为6的匹配结果

匹配结果为:研究 生命 的 起源

实际上坐标有不少种算法,能够是二维坐标,并把每一个词生成一个特征向量,经过计算向量值达到比较的目的

基于统计的方法

该方法是没有词典的,主要思想是经过计算相邻的字同时出现的次数来决定是否构成词,次数越多越越有可能构成词。
假设识别的文本已经统计好了全部可能的切分词,那么串联这些词的方式就有多种,从维度上理解,即为选择第一个切分词,则下一个切分词也是词的几率。

主要的统计模型有:

  • N元文法模型(N-gram)
  • 隐马尔科夫模型(Hidden Markov Model, HMM)
  • 最大熵模型
  • ...

假设字符串S分红m词,则能够简单描述为:S=W1W2W3...Wm
则出现S的几率为:P(S) = P(W1)P(W2|W1)P(W3|W1W2)...P(Wm|W1W2...Wm-1) = \(\prod_{i=1}^{m}\)P(Wi|W1W2...Wi-1)
结合马尔科夫假设(Markov assumption),Wi 的出现只与以前的 n-1 个词有关:P(Wi|W1W2...Wi-1) = P(Wi|Wi-n+1Wi-n+2...Wi-1)
P(S) =\(\prod_{i=1}^{m}\)P(Wi|Wi-n+1Wi-n+2...Wi-1)
根据公式:

  • 一元模型(n=1,unigram),P(S)=P(W1)P(W2)...P(Wi)...P(Wm)
  • 二元模型(n=2,bigram),P(S)=P(W1)P(W2|W1)...P(Wi|Wi-i)...P(Wm|Wm-1)
  • 三元模型(n=3,trigram),P(S)=P(W1)P(W2|W1)P(W3|W2W1)...P(Wi|Wi-i)...P(Wi|Wi-2Wi-1)...P(Wm|Wm-2Wm-1)
  • ... ...

在实践中用的最多的就是bigram和trigram了,并且效果很不错
高于三元的用的不多,由于训练它须要更庞大的语料,并且数据稀疏严重,时间复杂度高,精度却提升的很少

基于规则的方法

其基本思想是针对语义、句法的分析对文本进行分词
具体方法有:

  • 有机状态机
  • 语法约束矩阵
  • 特征词库
  • ...

基于字标注的方法

在2002年以前,自动分词方法基本上是基于词(或词典)的,在此基础上可进一步分红基于规则和基于统计的两大类。第一篇基于字标注(Character-based Tagging)的分词论文发表在2002年第一届SIGHAN研讨会上,当时并未引发学界的重视。一年后,Xue在最大熵(Maximum Entropy,ME)模型上实现的基于字的分词系统参加了Bakeoff-2003的评测,在As语料库的封闭测试项目上得到第二名),然而其OOV 召回率Roov(0.729)却位居榜首。Xue还在CityU语料库的封闭测试中得到第三名,其Roov(0.670)仍然是该项比赛中最高的。尽管在Bakeoff2003中各类分词技术的优劣尚难分仲伯,但既然未登陆词对分词精度的影响比分词歧义至少大5倍以上,咱们天然看好这种能获致最高OOV召回的分词方法。这一预测果真在Bakeoff2005上获得了证明。   基于字标注的分词系统在Bakeoff-2005上崭露头角。其中Low的系统采用最大熵模型,在四项开放测试中夺得三项冠军(AS,CityU,PKU)和一项亚军(MSRA)。Tseng的系统采用条件随机场模型,在四项封闭测试中取得两项冠军(CityU, MSRA)、一项亚军(PKU)和一项季军(AS)。到了Bakeoff-2006,基于字的分词系统已遍地开花。其中,笔者用条件随机场模型实现的基于字标注的分词系统,在参加的六项分词评测中,夺得四个第一(CityU开放,As开放,As封闭,CTB封闭)和两个第三(CTB开放,CityU封闭)。   以往的分词方法,不管是基于规则的仍是基于统计的,通常都依赖于一个事先编制的词表(词典)。自动分词过程就是经过词表和相关信息来作出词语切分的决策。与此相反,基于字标注的分词方法其实是构词方法。即把分词过程视为字在字串中的标注问题。因为每一个字在构造一个特定的词语时都占据着一个肯定的构词位置(即词位),假如规定每一个字最多只有四个构词位置:即B(词首),M (词中),E(词尾)和S(单独成词),那么下面句子(甲)的分词结果就能够直接表示成如(乙)所示的逐字标注形式:   (甲)分词结果:/上海/计划/N/本/世纪/末/实现/人均/国内/生产/总值/五千美圆/。   (乙)字标注形式:上/B海/E计/B划/E N/S 本/s世/B 纪/E 末/S 实/B 现/E 人/B 均/E 国/B 内/E生/B产/E总/B值/E 五/B千/M 美/M 元/E 。/S   首先须要说明,这里说到的“字”不仅限于汉字。考虑到中文真实文本中不可避免地会包含必定数量的非汉字字符,本文所说的“字”,也包括外文字母、阿拉伯数字和标点符号等字符。全部这些字符都是构词的基本单元。固然,汉字依然是这个单元集合中数量最多的一类字符。   把分词过程视为字的标注问题的一个重要优点在于,它可以平衡地看待词表词和未登陆词的识别问题。在这种分词技术中,文本中的词表词和未登陆词都是用统一的字标注过程来实现的。在学习架构上,既能够没必要专门强调词表词信息,也不用专门设计特定的未登陆词(如人名、地名、机构名)识别模块。这使得分词系统的设计大大简化。在字标注过程当中,全部的字根据预约义的特征进行词位特性的学习,得到一个几率模型。而后,在待分字串上,根据字与字之间的结合紧密程度,获得一个词位的标注结果。最后,根据词位定义直接得到最终的分词结果。总而言之,在这样一个分词过程当中,分词成为字重组的简单过程。然而这一简单处理带来的分词结果倒是使人满意的。