中文分词常用方法

Posted hbuwyg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中文分词常用方法相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/ysherlock/p/7822304.html

基于词典的方法、基于统计的方法、基于规则的方法

1、基于词典的方法(字符串匹配,机械分词方法)

定义:按照一定策略将待分析的汉字串与一个大机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。

按照扫描方向的不同:正向匹配和逆向匹配
按照长度的不同:最大匹配和最小匹配

1.1正向最大匹配思想MM
1》从左向右取待切分汉语句的m个字符作为匹配字段,m为大机器词典中最长词条个数。
2》查找大机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。
若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。

1.2逆向最大匹配算法RMM
该算法是正向最大匹配的逆向思维,匹配不成功,将匹配字段的最前一个字去掉,实验表明,逆向最大匹配算法要优于正向最大匹配算法。

1.3 双向最大匹配法(Bi-directction Matching method,BM)
双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法的到的结果进行比较,从而决定正确的分词方法。据SunM.S. 和 Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到 的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,或者正向最大匹配法和逆向最大匹配法的切分虽重合却是错的,或者正向最 大匹配法和逆向最大匹配法切分不同但两个都不对(歧义检测失败)。这正是双向最大匹配法在实用中文信息处理系统中得以广泛使用的原因所在。

1.3设立切分标志法
收集切分标志,在自动分词前处理切分标志,再用MM、RMM进行细加工。

1.4最佳匹配(OM,分正向和逆向)
对分词词典按词频大小顺序排列,并注明长度,降低时间复杂度。

优点:易于实现
缺点:匹配速度慢。对于未登录词的补充较难实现。缺乏自学习。

2、基于统计的分词(无字典分词)

主要思想:上下文中,相邻的字同时出现的次数越多,就越可能构成一个词。因此字与字相邻出现的概率或频率能较好的反映词的可信度。
主要统计模型为:N元文法模型(N-gram)、隐马尔科夫模型(Hidden Markov Model, HMM)

2.1N-gram模型思想
模型基于这样一种假设,第n个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积 .
在实践中用的最多的就是bigram和trigram了,而且效果很不错。高于四元的用的很少,因为训练它需要更庞大的语料,而且数据稀疏严重,时间复杂度高,精度却提高的不多。

2.2隐马尔科夫模型思想

3、基于规则的分词(基于语义)

通过模拟人对句子的理解,达到识别词的效果,基本思想是语义分析,句法分析,利用句法信息和语义信息对文本进行分词。自动推理,并完成对未登录词的补充是其优点。不成熟.
具体概念:有限状态机语法约束矩阵特征词库

4、基于字标注的中文分词方法

以往的分词方法,无论是基于规则的还是基于统计的,一般都依赖于一个事先编制的词表(词典)。自动分词过程就是通过词表和相关信息来做出词语切分的决策。与此相反,基于字标注的分词方法实际上是构词方法。即把分词过程视为字在字串中的标注问题。由于每个字在构造一个特定的词语时都占据着一个确定的构词位置(即词位),假如规定每个字最多只有四个构词位置:即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

首先需要说明,这里说到的字不只限于汉字。考虑到中文真实文本中不可避免地会包含一定数量的非汉字字符,本文所说的字,也包括外文字母、阿拉伯数 字和标点符号等字符。所有这些字符都是构词的基本单元。当然,汉字依然是这个单元集合中数量最多的一类字符。
把分词过程视为字的标注问题的一个重要优势在于,它能够平衡地看待词表词和未登录词的识别问题。在这种分词技术中,文本中的词表词和未登录词都是用统一的字标注过程来实现的。在学习架构上,既可以不必专门强调词表词信息,也不用专门设计特定的未登录词(如人名、地名、机构名)识别模块。这使得分词系统的设计大大简化。在字标注过程中,所有的字根据预定义的特征进行词位特性的学习,获得一个概率模型。然后,在待分字串上,根据字与字之间的结合紧密程度,得到一个词位的标注结果。最后,根据词位定义直接获得最终的分词结果。总而言之,在这样一个分词过程中,分词成为字重组的简单过程。然而这一简单处理带来的分 词结果却是令人满意的。


https://www.jianshu.com/p/6c085bf1086f

中文分词

将一句话分解成一个个词,英文中可以用空格来做,而中文需要用一些技术来处理。

三类分词算法:

1. 基于字符串匹配:

将汉字串与词典中的词进行匹配,如果在词典中找到某个字符串,则识别出一个词。
优点,速度快,都是O(n)时间复杂度,实现简单。
缺点,对歧义和未登录词处理不好。

此类型中常用的几种分词方法有:

①正向最大匹配法:

假设词典中最大词条所含的汉字个数为n个,取待处理字符串的前n个字作为匹配字段。若词典中含有该词,则匹配成功,分出该词,然后从被比较字符串的n+1处开始再取n个字组成的字段重新在词典中匹配;如果没有匹配成功,则将这n个字组成的字段的最后一位剔除,用剩下的n一1个字组成的字段在词典中进行匹配,如此进行下去,直到切分成功为止。(链接:http://www.jianshu.com/p/e978053b0b95)

②逆向最大匹配法:

与正向的区别在于如果匹配不成功则减去最前面的一个字。

③最少切分

使每一句中切出的词数最少。

2. 基于理解:

通常包括三个部分:分词(用来获得有关词)、句法语义(利用句法和语义信息来对分词歧义进行判断)、总控。

3. 基于统计:

对语料中相邻共现的各个字的组合的频度进行统计,将概率最大的分词结果作为最终结果。常见的模型有HMM和CRF。

优点,能很好处理歧义和未登录词问题。
缺点,需要大量的人工标注数据,以及较慢的分词速度。



















以上是关于中文分词常用方法的主要内容,如果未能解决你的问题,请参考以下文章

中文分词常用方法

百度中文分词如何分词

部分常用分词工具使用整理

中文分词原理及常用Python中文分词库介绍

谈谈中文分词基本问题

中文分词