中文分词算法与应用

SEO算法
SEO算法
2019-08-14 20:27 浏览次数:374 来源:跳米SEO

中文分词算法与应用

 

一、中文分词算法

 

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

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

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

 

1-1、正向最大匹配

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

②将字符与字典中元素进行匹配:

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

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

举个例子吧: 

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

对剩余三个字“江大桥”再次进行正向最大匹配,会切成“江”、“大桥”,整个句子切分完成为:南京市长、江、大桥;

 

1-2、逆向最大匹配

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

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

②.对剩余的“南京市”进行分词,整体结果为:南京市、长江大桥。

 

1-3 双向最大匹配

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

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

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

 

2、基于理解的分词方法

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

 

3、基于统计的分词方法

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

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

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

 

3-1、N-gram模型思想

该模型基于这样一种假设,第n个词出现只与前面n-1个词相关,而与其他词都不相关。整句话的概率就是各个词出现概率的乘积。 

对于一个句子T,假设它由n个词w1,w2,w3,⋯,wnw1,w2,w3,⋯,wn组成的,则p(T)=p(w1w2w3⋯wn)=p(w1)p(w2|w1)p(w3|w1w2)⋯p(wn|w1w2⋯wn−1)p(T)=p(w1w2w3⋯wn)=p(w1)p(w2|w1)p(w3|w1w2)⋯p(wn|w1w2⋯wn−1),计算这个式子很麻烦,我们引入马尔科夫假设:一个词的出现仅依赖于它前面有限的几个词。如果一个词的出现仅依赖于它前面出现的一个词,我们就称之为bigram。则上式变为:p(T)=p(w1)p(w2|w1)p(w3w2)⋯p(wnwn−1)p(T)=p(w1)p(w2|w1)p(w3w2)⋯p(wnwn−1) 

如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram。

以此类推,N元模型就是假设当前词的出现概率只同它前面的N-1个词有关。(实际中通常只用到二元模型)

 

3-2、隐马尔可夫模型(HMM)

①隐马尔可夫模型简介

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

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

 

②隐马尔可夫模型的三大问题

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

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

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

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

 

③隐马尔可夫模型分词方法

隐马尔可夫的三大问题分别对应了分词中的几个步骤。参数估计问题就是分词的学习阶段,通过海量的预料数据来学习归纳出分词模型的各个参数。状态序列问题是分词的执行阶段,通过观测变量(待分词句子的序列)来预测出最优的状态序列(分词结构)。

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

比如观察序列为:O= 南京市长江大桥

预测的状态序列为:Q = BMEBMME

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

所以切词结果为:南京市/长江大桥/

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

 

二、中文分词应用!

所有的SEO的站长们绝大多数人不知道中文分词,首先我们先来了解一个语义分析系统,看看搜索引擎如何借助词性来判断关键词的核心主题。

 

中文分词系统工具

中文分词系统工具>>

 

如果我们从大范围来讲,一个网页的主题包含的关键词不少,但是真正有价值的关键词其实就那么几个,并且这些有价值的词我们暂且称为核心关键词。从词性来看,多数这些有价值的词均为名词形态。

 

一般来说,核心关键词定位多数都是名词+动词,或者名词+形容词,比如小明在奔跑,该标题对于用户来说,都知道核心关键词是小明,没了小明奔跑就没有任何价值了。但是对于搜索引擎来说肯定不理解,从上面我们所讲到的分词原理,可以了解到该词的核心关键词也是小明,因为小明是名词,奔跑是动词,也叫做名+动。当然定位核心关键词的首要条件是必须是词性的频次相等的情况下才会优先将名词定位核心关键词,比如漂亮_漂亮同义词_漂亮的含义,虽然该标题里面漂亮是形容词,并且也包含了其他名词,但是为何核心词是漂亮而不是其他名词,因为频次相同才会将名词定位核心词,频次不相同优先将频次最大的关键词定位核心关键词。

我要评论
验证码:
发送
0条评论

本站页面设计已申请著作权,侵权必究 版权与维护:安徽跳米网络科技有限公司

Copyright©2019humseo.com.AII Reserved 皖ICP备18008380

国家版权局计算机软件著作权:888888888888