基于词典匹配的机械分词方法,主要依据词典的信息,根据一定的规则将输入的字符串与词典中的词逐条匹配,匹配成功则进行相应的切分处理。
①正向最大匹配(FMM)
②逆向最大匹配(BMM)
从句子的右边取候选子串,匹配不成功时去掉候选子串最前面的一个字,其他规则与FMM相同。
③双向最大匹配
先根据标点对文档进行粗切分,把文档分解成若干个句子,然后再对这些句子用正向最大匹配法和逆向最大匹配法进行扫描切分。如果两种分词方法得到的匹配结果相同,则认为分词正确,否则,按最小分词集处理。如果两种方法切分的次数一样时,则采用一些规则处理。
统计分词以概率论为理论基础,将汉字上下文中汉字组合串的出现抽象成随机过程,随机过程的参数需要通过大规模语料库训练得到。
①基于互信息的分词方法
◆ 方法
根据字与字同时出现的概率大小来判断是否为一个词,几个相邻的字同时出现的次数越多,则其构成词的概率越大。
◆ 公式
对于字符串x和字符串y,计算其互信息值 M𝐼(𝑥,𝑦),用互信值得大小判断x和y之间的结合程度。M𝐼(𝑥,𝑦)= log2(𝑝(𝑥, 𝑦)/𝑝(𝑥,𝑦) )
如果M𝐼(𝑥,𝑦)>0,表示x和y会同时出现,MI值越大,共同出现程度越大;
如果M𝐼(𝑥,𝑦)=0,表示x和y是独立出现;
如果M𝐼(𝑥,𝑦)<0,表示x和y会互斥出现。
②最大概率分词方法
◆ 方法
利用语料库计算每种切分结果的概率,选取概率最高的切分作为最优分词切分,一般采用的是链式计算其概率值。
◆ N-gram模型
n元模型就是在估算条件概率时,忽略距离≥n的上文词的影响。以N=2为例,根据词典找到字串S中所有可能的词,并且根据训练语料库,根据所有S中出现的词和计算,然后把所有可能的切分词串都找出来,计算,并且从这些词串中找出一条概率最大的路径作为分词结果。
当N=3时,概率值为。显然,当n≥2时,该模型可以保留一定的词序信息,n越大,保留的词序信息越丰富,但计算量也呈指数级增长。
Jieba分词 https://github.com/fxsjy/jieba
SnowNLP http://github.com/isnowfy/snownlp
LTP http://www.ltp-cloud.com/
HanNLP https://github.com/hankcs/HanLP/
Jieba是一个在自然语言处理中用的最多的工具之一,目前已经能够实现包括分词、词性标注以及命名实体识别等多种功能。
Jieba提供了三种分词模式:精确模式,试图将句子最精确的切开,适合文本分析;全模式,把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;搜索引擎模式,在精确模式的基础上,对长词再切分,适合用于搜索引擎分词。