×

当前位置: 首页 > seo优化

中文分词算法

作者:云圣网络发布时间:2021-01-23 19:47:34浏览次数:

  中文分词

  中文分词指将一个汉字序列切分成一个个单独的词。现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

  基于字符串匹配的分词方法

  基于字符串匹配的分词方法又称为机械分词方法,它需要有一个初始的充分大的词典,然后将待分词的字符串与词典中的元素进行匹配,若能成功匹配,则将该词切分出来。

  按扫描方向的不同,字符串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度的匹配优先度可以划分为最大匹配和最小匹配。

  正向最大匹配

  1.从左到右将待切分句子的m个字符作为匹配字符,m为初始词典中最长词条的长度。

  2.将字符与字典中元素进行匹配

  (1)若匹配成功,则将这个字符作为一个词切分出来 ;

  (2)若匹配不成功,则将这个字符的最后一个字去掉,再进行匹配,重复上述过程,直到切分完整个文本为止。

  假设我们要切分的句子为“南京市长江大桥”,字典中最长的元素长度为5,则先取待切分句子的前5个字符“南京市长江”,字典中没有元素与之匹配,长度减一,则变成“南京市长”,匹配成功。

  对剩余三个字“江大桥”再次进行正向最大匹配,会切成“江”、“大桥”;

  整个句子切分完成为:南京市长、江、大桥。

  逆向最大匹配

  逆向最大匹配的思想与正向最大匹配基本相同,不同的是将扫描方向变成了从右往左,匹配不成功时,去掉最左边的字符。实验表明,逆向最大匹配算法效果要优于正向最大匹配算法。

  “南京市长江大桥”的逆向最大匹配:

  1.取出“南京市长江大桥”的后5个字“市长江大桥”,字典中无匹配元素,将字符“市”去掉,发现词典中有匹配,切割下来;

  2.对剩余的“南京市”进行分词;

  整体结果为:南京市、长江大桥。

  双向最大匹配

  双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的分词结果进行比较,从而决定正确的分词方法。

  还是上面的例子,双向最大匹配的划分结果为:南京市长、南京市、长江大桥、江、大桥。

  该算法的优点是速度快,时间复杂度为O(n),实现简单;但是对于歧义和未登录词表现不佳。

  基于理解的分词方法

  基于理解的分词其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

  基于统计的分词方法

  主要思想:

  每个字都是词的最小单元,如果相连的字在不同的文本中出现的频率越多,这就越有可能是一个词。因此我们可以用相邻字出现的频率来衡量组词的可能性,当频率高于某个阈值时,我们可以认为这些字可能会构成一个词。

  主要统计模型:

  N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model,HMM),最大熵模型(ME),条件随机场(Conditional Random Fields,CRF)等 。

  优势:

  在实际运用中常常将字符串匹配分词和统计分词结合使用,这样既体现了匹配分词速度快、效率高的优点,同时又能运用统计分词识别生词、自动消除歧义等方面的特点。

  N-gram模型

  该模型基于这样一种假设,第n个词出现只与前面n-1个词相关,而与其他词都不相关。整句话的概率就是各个词出现概率的乘积。对于一个句子T,假设它由n个词w1,w2,w3,⋯,wn组成,则

  

图片

  计算这个式子很麻烦,因此引入马尔科夫假设:一个词的出现仅依赖于它前面有限的几个词。如果一个词的出现仅依赖于它前面出现的一个词,我们就称之为bigram。则上式变为:

  

图片

  如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram。以此类推,N元模型就是假设当前词的出现概率只同它前面的N-1个词有关。

  隐马尔可夫模型(HMM)

  一般的,一个HMM可以表示为u=(S, K, A, B, π), 其中S是状态集合,K是输出符号也就是观察集合,A是状态转移概率,B是符号发射概率,π是初始状态的概率分布。HMM主要解决三个基本问题:

  (1)估计问题,给定一个观察序列O=O1,O2,O3,… ,Ot和模型u=(A,B,π),计算观察序列的概率;

  (2)序列问题,给定一个观察序列O=O1,O2,O3… Ot和模型μ=(A,B,π),计算最优的状态序列Q=q1,q2,q3…qt;

  (3)参数估计问题,给定一个观察序列O=O1,O2,O3… Ot,如何调节模型μ=(A,B, π)的参数,使得P(O|μ)最大。

  隐马尔可夫模型中的变量有两组。一组为状态变量{y1,y2,…,yn},其中yi表示第i时刻所处的状态,这些状态是隐藏的、不可观测的,因此又称为隐变量,隐变量的取值通常是离散的。第二组是观测变量{x1, x2, …, xn},其中xi表示第i时刻的观测值。

  在任一时刻,观测变量的取值只与该时刻的状态变量有关,即xi由yi决定。而当前状态只与前一时刻的状态有关,与其他状态无关。

  设状态集合S=(B,M,E,S),每个状态代表的是这个字在词语中的位置,B代表该字是词语中的起始字,M代表是词语中的中间字,E代表是词语中的结束字,S则代表是单字成词;观察值集合K =(所有的汉字);则中文分词的问题就是通过观察序列来预测出最优的状态序列。比如观察序列为:

  O = 南京市长江大桥

  预测的状态序列为:

  Q = BMEBMME

  根据这个状态序列我们可以进行切词:

  BME/BMME/

  所以切词结果如下:

  南京市/长江大桥/

  因为HMM分词算法是基于字的状态(BEMS)来进行分词的,因此适合用于新词发现,某一个新词只要标记为如“BMME”,就算它没有在历史词典中出现过,HMM分词算法也能将它识别出来。


文本地址:http://www.chengxigz.com/seoyouhua/253.html

版权所有©转载时请您以链接形式注明来源!【收藏本页】【打印】【关闭

专业网站优化、关键词排名优化

© Copyright © 2016-2020 武汉云圣网络科技公司 版权所有  网站地图

武汉网站优化客服 微信客服

武汉seo手机版 进入手机版