中文分词
一、简介
中文分词主要有三种技术,分别为:
1.1 规则分词
规则分词主要是通过人工设立词库,按照一定方式进行匹配切分。其实现简单高效,但对新词很难进行处理。基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行逐一匹配,找到则分词,否则不予切分。
1.1.1 正向最大匹配法
其基本思想为:假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字串中的前i个字作为匹配字段,查找字典。若找到,则匹配成功,匹配字段作为一个词切分出来,若没找到,则匹配失败,将匹配字段中的最后一个字去掉。对剩下的字符串重新进行匹配处理。
1.1.2 逆向最大匹配法
逆向最大匹配的基本原理与MM法相同,不同的是分词切分的方向与MM法相反。此方法从被处理文档的末端开始匹配扫描,每次去最末端的i个字符作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配。在实际处理过程中,先将文档进行倒排处理,生成逆序文档。然后,根据逆序词典,对逆文档用正向最大匹配。
1.1.3 双向最大匹配
双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。
1.2 统计分词
基于统计的分词模型其主要思想是把每个词看作是由词的最小单位的各个字组成的,如果相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。
其一般分为两步:
1.建立统计语言模型
2.对句子进行单词分词,然后对划分的结果进行概率计算,获得概率最大的分词方式。
1.2.1 语言模型
语言模型中常用的为n元模型,所谓n元模型就是在估算条件概率时,忽略距离大于等于n的上文此的影响,其概率计算公式如下:
一般使用频率计数的比例来计算n元条件概率
当n越大时,模型包含的词序信息越丰富,同时计算量随之增大。与此同时,长度越长的文本序列出现的次数也会减少。同时为避免出现分母为零的情况,一般在n元模型中与要配合相应得平滑算法来解决这个问题,例如拉普拉斯平滑等
1.2.2 HMM模型
隐含马尔可夫模型是将分词作字在字串中得序列标注任务来实现的,其基本思路是:每个字在构造一个特定的词语时都占据着一个确定的构词位置。
用数学抽象表示如下: 用代表输入的句子,n为句子长度,代表输出的标签,理想输出为:
我么们假设每个字的输出仅仅与当前字有关,就可以得到:
通过贝叶斯公式我们可以把最大化转化为最大化
针对作马尔可夫假设,得到:
对有:
作齐次马尔可夫假设的计算公式如下(这个公示表示,每个输出仅仅与上一个输出有关):
于是得到:
~
在HMM中,求解的常用方法是Veterbi算法,这个算法的核心思想是:如果最终的最优化路径经过某个,那么从初始节点到点的路径必然也是一个最优路径。
1.2.3 其他统计分词方法
条件随机场(CRF)也是一种基于马尔科夫思想的统计模型。条件随机场算法的思想在于提出每个状态不止与他前面的状态有关,还与后面的状态有关。
1.3 混合分词(规则+统计)
最常用的就是先基于词典的方式进行分词,然后再用统计分词方法进行辅助。
二、中文分词工具
2.1 jieba
jieba分词结合了基于规则和基于统计这两类方法。
jieba提供了三种分词模式:
1.精确模式,适合文本分析
2.全模式,扫出所有可以成词的词语
3.搜索引擎模式,适合用于搜索引擎分词
除了可以进行分词外,还可以进行词性标注。
下面是各种分词工具比较:
图片来自
还有NLPIR汉语分词系统,主要功能包括中文分词;英文分词;词性标注;命名实体识别;新词识别;关键词提取;支持用户专业词典与微博分析。NLPIR系统支持多种编码、多种操作系统、多种开发语言与平台