信息检索——分词处理
在全文检索中,分词处理对性能的影响很大,包括索引大小、检索速度、准确度等方面。
一个好的分词处理应该具备哪些特性呢?
1)速度、准确度
2)自定义词典
3)对英文、数字符号、日期、繁简转换等的优化
中文分词算法大概分为两大类
1、字符串匹配(基于词典)
这一算法其实就是使用字典,与字典中的词想匹配,来达到分词效果,时间复杂度O(N),但对没有登记的词需要其他算法处理,主要用到Trie树来保存词典,而具体分词算法有很多种:
1.1正向最大匹配思想MM
1)从左向右取待切分汉语句的m个字符作为匹配字段,m为大机器词典中最长词条个数。
2)查找大机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。
若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。
1.2邻近匹配算法
邻近匹配算法是正向最大匹配算法的改进,因为正向正向最大匹配算法对每个不存在的长字符串都要进行一次二分搜索,算法复杂度太高,可以利用同一个首字符下的词条按升序排列这一条件,在找到某个字符串后,在其后增加一个字得到一个新字串,如果新字串在词典中出现,那么新词一定在原字串的后面,且相隔位置不会太远。这样就可以加快匹配进程。
1.3逆向最大匹配算法RMM
该算法是正向最大匹配的逆向思维(最大匹配的顺序不是从首字母开始,而是从末尾开始),匹配不成功,将匹配字段的最前一个字去掉,实验表明,逆向最大匹配算法要优于正向最大匹配算法。
1.4双向最大匹配法(Bi-directction Matching method,BM)
双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法的到的结果进行比较,从而决定正确的分词方法。据SunM.S. 和 Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,或者正向最大匹配法和逆向最大匹配法的切分虽重合却是错的,或者正向最大匹配法和逆向最大匹配法切分不同但两个都不对(歧义检测失败)。这正是双向最大匹配法在实用中文信息处理系统中得以广泛使用的原因所在。
1.5最短路径匹配算法(Shortest path match)
最短路径匹配算法是根据词典,找出字串中所有可能的词(也称全分词),然后构造词语切分有向无环图。这样,每一个词对应图中的一条有向边。若赋给相应的边长一个权值(该权值可以是常数,也可以是构成的词的属性值),然后针对该切分图,在起点到终点的所有路径中,求出最短路径,该最短路径上包含的词就是该句子的切分结果。最短路径匹配算法的规则是使切分处理的词数最少,符合汉语自身的语言规律。但是,同样发现在实际应用中,同样不能正确切分出许多不完全符合规则的句子。如果有多条最短路径,往往只能保留其中一个结果,这样对其他同样符合要求的结果是不公平的,也缺乏理论依据。
1.6基于统计的最短路径分词算法
为进一步提供切分精度,可以在词表中增加词的属性值,即为每一个词给出一个权重,这样每个词在字符串的权重就不同。最简单的词权重可以用词的词频表示,具体权重值可以通过该规模语料库获得。
2、基于统计的分词方式
主要思想:上下文中,相邻的字同时出现的次数越多,就越可能构成一个词。因此字与字相邻出现的概率或频率能较好的反映词的可信度。
主要统计模型为:N元文法模型(N-gram)、隐马尔科夫模型(Hidden Markov Model, HMM)
2.1N-gram模型思想
模型基于这样一种假设,第n个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积 .我们给定一个词,然后猜测下一个词是什么。当我说“艳照门”这个词时,你想到下一个词是什么呢?我想大家很有可能会想到“***”,基本上不会有人会想到“陈志杰”吧。N-gram模型的主要思想就是这样的。
对于一个句子T,我们怎么算它出现的概率呢?假设T是由词序列W1,W2,W3,…Wn组成的,那么P(T)=P(W1W2W3…Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)
但是这种方法存在两个致命的缺陷:一个缺陷是参数空间过大,不可能实用化;另外一个缺陷是数据稀疏严重。
为了解决这个问题,我们引入了马尔科夫假设:一个词的出现仅仅依赖于它前面出现的有限的一个或者几个词。
如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram。即
P(T) = P(W1W2W3…Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)
≈P(W1)P(W2|W1)P(W3|W2)…P(Wn|Wn-1)
如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram。
在实践中用的最多的就是bigram和trigram了,而且效果很不错。高于四元的用的很少,因为训练它需要更庞大的语料,而且数据稀疏严重,时间复杂度高,精度却提高的不多。设w1,w2,w3,...,wn是长度为n的字符串,规定任意词wi 只与它的前两个相关,得到三元概率模型,以此类推,N元模型就是假设当前词的出现概率只同它前面的N-1个词有关。
2.2隐马尔科夫模型思想
条件随机场(CRF) 就是基于遵循马尔可夫性的概率图模型,CRF优于HMM的地方在于,它可以引入更多的特征,包括词语本身特征和词语所在上下文的特征,而非单词本身。从某种角度讲,它结合了HMM和最大熵方法
3 神经网络
参考资料
中文分词基本算法介绍 http://dsqiu.iteye.com/blog/1704960