也谈中文分词

中文分词的应用

  中文分词主要应用于信息检索、人机交互、信息提取、文本挖掘、中外文对译、中文校对、自动摘要、自动分类等很多方面。下面就以信息检索为例来说明中文分词的应用。
  目前的分词算法中,一些切分精度比较高的算法,切分的速度都比较慢;而一些切分速度快的算法,因为抛弃了一些繁琐的语言处理,所以切分精度都不高。

速度:每秒几十k~几M

  切分正确率:80%~98%   

中文分词简介和困难  

  中文分词(Chinese Word Segmentation):将一个汉字序列切分成一个一个单独的词。比如将“一次性交足100元”切分成“一次/性交/足/100/元”的话,那这样比较“色”的分词并不是我们所希望的。另外还有就是未登录词识别,比如“施瓦辛格”这个词字典中并没有,如何才能让计算机正确的识别出这是一个词,当然这并不是中文分词所独有的难点,英文等其他语言也都有这样的问题。 

分词规范:词的概念和不同应用的切分要求

分词算法:歧义消除和未登录词识别  

分词规范方面的困难  

  汉语中词的界定,也就是消除歧义

    “长春市长”:“长春/市长”?“长春市/长”?“长春/市/长” ?

  核心词表如何收词?

    词的变形结构问题:“看/没/看见” ,“相不相信”  

分词算法上的困难  

 ●切分歧义的消除

  –交集型歧义(交叉歧义):“组合成”

   我们/小组/合成/氢气了;组合/成/分子;

  –组合型歧义(覆盖歧义):“马上”

   他/从/马/上/下/来;我/马上/就/来/了 ;

  –“学生会组织义演活动” : “学生/会/组织/义演/活动” or “学生会/组织/义演/活动”?

 ●未登录词识别

  –命名实体:数词、人名、地名、机构名、译名、时间、货币

  –缩略语和术语:“超女”、“非典”

  –新词:“酱紫”、“星盘”

 ●先识别已知词还是先识别未登录词

  –先识别已知词:“内塔尼亚/胡说”

  –先识别未登录词:“胜利取决/于勇/气”  

常用评测指标  

召回率(Recall) image
准确率(Precision) image

基于词典和规则的方法  

 ●最大匹配

  –正向最大匹配、反向最大匹配和双向最大匹配

  –实现简单,而且切分速度快。但无法发现覆盖歧义,对于某些复杂的交叉歧义也会遗漏。

  实际试验的结果表明,反向最大匹配的准确率要高于正向最大匹配。

 ●全切分

  –利用词典匹配,获得一个句子所有可能的切分结果。

  –时空开销非常大。

 ●基于理解的分词算法

  –模拟人的理解过程,在分词过程中加入句法和语义分析来处理歧义问题。

 –难以将各种语言信息组织成机器可直接读取的形式,还处在试验阶段   

基于规则的消歧和未登录词识别

  这一步其实在语根处理 (stemming)中也可以处理,比如Snowball就是一个不错的过滤器,但是可惜的是目前的版本出错率比较高。

 –规则消歧

   CONDITION FIND(R,NEXT,X){%X.ccat=~w}SELECT 1

   CONDITION FIND(L,NEAR,X){%X.yx=听|相信|同意}SELECT 1

   CONDITION FIND(L,NEAR,X){%X.yx=假如|如果|假设|要是|若}SELECT 2

   OTHERWISE SELECT 1

 –用规则识别未登录词

   LocationName à Person Name LocationNameKeyWord

   LocationName à Location Name LocationNameKeyWord

   OrganizationName à Organization Name OrganizationNameKeyWord

   OrganizationName à Country Name {D|DD} OrganizationNameKeyWord  

 ●N元语法(N-gram)模型

image


隐马尔可夫模型(HMM)

  对于一个随机事件,有一个状态序列{X1X2,…,Xn},还有一个观察值序列{Y1Y2,…,Yn}。隐马模型可以形式化为一个五元组(S,O,A,B),其中:

  S ={q1,q2,…,qn}:状态值的有限集合

  O={v1,v2,…vm}:观察值的有限集合

  A={aij},aij =p(Xt+1=qj|Xt=qi):转移概率

  B={bik},bik =p(Ot=vk| Xt=qi):输出概率

  ={ }, =p(X1=qi):初始状态分布  

N元切分法(N-gram) :对一个字符串序列以N为一个切分单位进行切分。

 –如二元切分法: “ABCDEFG” →“AB\CD\EF\G”

 –交叉二元切分法(Overlapping Bigram):“ABCDEFG” →“AB\BC\CD\DE\EF\FG”

 –简单快速,但会产生大量无意义的标引词,导致标引产生的索引文件的空间,以及检索和进行标引的时间都大大增加。同时,因为它的切分单位并非语言学意义上的词语,所以也会导致检索的查准率下降

 1.查询切分和文档切分采用相同的分词算法,有一些文件切分错误的词,在查询时也遇到相同的切分错误,所以即使切分阶段错误,但最后相同错误匹配,使得仍然可以正确检索到;

 2.有些词被错误的切分成几个部分,尽管这样会导致分词正确率下降,但对于检索来说,最后可以通过结果合并得到正确的结果,分词的错误并不影响检索的性能;

 3.分词测得的准确率高低并不是绝对的,有时跟用标准答案有关。这涉及到对词的定义问题,有些标准答案认为是该切分的词,实际上不切分用于检索更加准确一些。如:“国\内”vs”国内“ 、“民进党团”vs”民进\党团“vs”民进党\团“  


1.分词算法的时间性能要比较高。
  尤其是现在的web搜索,实时性要求很高。所以作为中文信息处理基础的分词首先必须占用尽可能少的时间。

2.分词正确率的提高并不一定带来检索性能的提高。
  分词到达一定精度之后,对中文信息检索的影响不再会很明显,虽然仍然还是有一些影响,但是这已经不是CIR的性能瓶颈。所以片面的一味追求高准确率的分词算法并不是很适合大规模中文信息检索。在时间和精度之间存在矛盾无法兼顾的情况下,我们需要在二者之间找到一个合适的平衡点。

3.切分的颗粒度仍然可以依照长词优先准则,但是需要在查询扩展层面进行相关后续处理。
  在信息检索中,分词算法只需要集中精力考虑如何消除交叉歧义。对于覆盖歧义,我们可以利用词典的二次索引和查询扩展来解决。

4.未登录词识别的准确率要比召回率更加重要。
  要尽量保证未登录词识别时不进行错误结合,避免因此切分出错误的未登录词。如果将单字错误的结合成未登录词了,则有可能导致无法正确检索到相应的文档。

完整内容 http://www.thinkgo.net/rewrite.php/read-38.html
文章来源 jimo's blog 'On the way' www.thinkgo.net

本文链接地址: http://www.thinkgo.net/rewrite.php/read-38.html

标签: 搜索 中文分词
评论: 0 | 引用: 0 | 阅读: 494