A-A+

中文分词技术的调研

2008年12月03日 学习随笔 暂无评论 阅读 1 次

中文分词的背景

l        什么是中文分词

众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子“I am a student”,用中文则为:我是一个学生。对于英文句子,计算机可以很简单通过空格知道“student”是一个单词,但是对于中文句子而言,不能很容易明白「学」、「生」两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:  一个 学生

l        中文分词研究意义

词是最小的能够独立活动的有意义的语言成分,但汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词法分析是中文信息处理的基础与关键。

l        中文分词应用前景

中文分词技术是语言文本处理技术的基础,其广范应用于信息检索:如全文检索、主题检索;汉字处理:如智能拼音输入、手写识别输入、中文OCR识别、自动校对、简繁转换;语音处理:如语音合成、语音识别;内容识别与分析:如信息摘录、自动文摘、自动标引、文本自动分类、自动过滤、数据挖掘;自然语言理解:如机器翻译、自然语言接口。

常用的分词算法

l        基于词典和规则的方法

一、  最大匹配

这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个充分大的机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:

1)      正向最大匹配法(由左到右的方向);

2)      逆向最大匹配法(由右到左的方向);

3)      双向最大匹配法;

由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。双向最大匹配法实际上就是正向最大匹配法和逆向最大匹配法的结合,其效果略优于二者。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析的字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串,再来进行机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。

对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。

二、  全切分

利用词典匹配,获得一个句子所有可能的切分结果,实现了无盲区的切分歧义检测。但是,时间和空间上的开销非常巨大,所以这种方法很难推广和实际应用。

三、  基于理解的分词算法

这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

l        基于大规模语料库的统计方法

从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字XY的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如这一之一有的我的许多的等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

基于这样的想法,构建出了如下的几种统计模型:

隐马尔科夫模型(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):初始状态分布

互信息(MI, Mutual Information)

MI越大,表示两个字之间的结合越紧密。反之,断开的可能性越大。当x y 关系强时,MI(x , y )>= 0xy关系弱时,MI (x , y )≈0;而当MI(x , y )< 0时,xy称为互补分布

最大熵模型(ME, Max Entropy)

在已知条件下选择一个合适的概率分布来预测事件。

 

l        规则和统计结合的方法 

通常利用词典进行初切分,然后用其它的概率统计方法和简单规则消歧和进行未登录词识别。如:1、利用词典匹配进行初切分得到一个切分词图,然后利用词频信息求词图N条最短路径的N-最短路径法。2、最大匹配算法、state-of-the-art分类器和支持向量机(SVM)的结合。3、通过词典匹配找出所有交叉歧义,利用Bigram语言模型或其变形来消除歧义。

l        基于字的切分法 

N元切分法(N-gram) :对一个字符串序列以N为一个切分单位进行切分。如二元切分法:ABCDEFG” →ABCDEFG” 交叉二元切分法(Overlapping Bigram)ABCDEFG” →“ABBCCDDEEFFG” 。简单快速,但会产生大量无意义的标引词,导致标引产生的索引文件的空间,以及检索和进行标引的时间都大大增加。同时,因为它的切分单位并非语言学意义上的词语,所以也会导致检索的查准率下降。

中文分词的难点

有了成熟的分词算法,是否就能容易的解决中文分词的问题呢?事实远非如此。中文是一种十分复杂的语言,让计算机理解中文语言更是困难。在中文分词过程中,有两大难题一直没有完全突破。

1、  歧义识别

歧义是指同样的一句话,可能有两种或者更多的切分方法。例如:表面的,因为表面面的都是词,那么这个短语就可以分成表面 面的。这种称为交叉歧义。像这种交叉歧义十分常见,前面举的和服的例子,其实就是因为交叉歧义引起的错误。化妆和服装可以分成化妆 服装或者化妆 和服 。由于没有人的知识去理解,计算机很难知道到底哪个方案正确。

交叉歧义相对组合歧义来说是还算比较容易处理,组合歧义就必需根据整个句子来判断了。例如,在句子这个门把手坏了中,把手是个词,但在句子请把手拿开中,把手就不是一个词;在句子将军任命了一名中将中,中将是个词,但在句子产量三年中将增长两倍中,中将就不再是词。这些词计算机又如何去识别?

如果交叉歧义和组合歧义计算机都能解决的话,在歧义中还有一个难题,是真歧义。真歧义意思是给出一句话,由人去判断也不知道哪个应该是词,哪个应该不是词。例如:乒乓球拍卖完了,可以切分成乒乓 球拍 、也可切分成乒乓球 拍卖 ,如果没有上下文其他的句子,恐怕谁也不知道拍卖在这里算不算一个词。

2、  新词识别

新词,专业术语称为未登录词。也就是那些在字典中都没有收录过,但又确实能称为词的那些词。最典型的是人名,人可以很容易理解句子王军虎去广州了中,王军虎是个词,因为是一个人的名字,但要是让计算机去识别就困难了。如果把王军虎作为一个词收录到字典中去,全世界有那么多名字,而且每时每刻都有新增的人名,收录这些人名本身就是一项巨大的工程。即使这项工作可以完成,还是会存在问题,例如:在句子王军虎头虎脑的中,王军虎还能不能算词?

新词中除了人名以外,还有机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,而且这些又正好是人们经常使用的词,因此对于搜索引擎来说,分词系统中的新词识别十分重要。目前新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。

常用的评测指标

 

在很多应用中需要综合考虑各项指标。例如,分词准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理数以亿计的网页,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求。 

目前主要的分词工具

l        中科院计算所的 ICTCLAS

该系统的功能有:中文分词;词性标注;未登录词识别。其分词算法是给予大规模语料库的统计和字典匹配相结合,核心算法为N-ShortPath算法。分词正确率高达97.58%(最近的973专家组评测结果),基于角色标注的未登录词识别能取得高于90%召回率,其中中国人名的识别召回率接近98%,分词和词性标注处理速度为31.5KB/sICTCLAS 和计算所其它14项免费发布的成果被中外媒体广泛地报道,国内很多免费的中文分词模块都或多或少的参考过ICTCLAS的代码。

下载页面: http://www.nlp.org.cn/project/project.php?proj_id=6或者 http://sewm.pku.edu.cn/QA/

网络上对其进行研究的页面:

http://www.cnblogs.com/zhenyulu/articles/653254.html 天书般的ICTCLAS分词系统代码》作者:吕震宇

http://blog.csdn.net/group/ictclas4j/ ICTCLAS分词系统研究(一)~(六)》作者:sinboy

http://qxred.yculblog.com/post.1204714.html ICTCLAS 中科院分词系统 代码 注释 中文分词 词性标注》作者:风暴红QxRed

http://blog.csdn.net/DanceFire/category/294373.aspx 作者:DanceFire

http://code.google.com/p/ictclas4j/  ICTCLAS4J by Google group

由于 ICTCLAS 是由 C 语言写成的,现在主流的开发工具用起来不太方便,于是有一些热心的程序员把 ICTCLAS 改为 Java  C# 等其他语言。

1fenciJava  ICTCLAS,下载页面: http://www.xml.org.cn/printpage.asp?BoardID=2&id=11502

2AutoSplit,另一个 Java  ICTCLAS,已经找不到下载页面,点击本地下载

3)小叮咚中文分词,曾经有下载页面,现在找不到了。据作者介绍,从 ICTCLAS 中改进,有 JavaC#  C++ 三个版本,介绍页面: http://www.donews.net/accesine

4SharpICTCLAS 1.0   C#版本,下载页面:http://www.cnblogs.com/zhenyulu/archive/2007/04/18/718383.html

l        海量智能分词研究版

海量智能计算技术研究中心为了使中文信息处理领域的研究者们能够共同分享海量智能中心的研究成果,共同提高中文信息处理水平,特此发布《海量智能分词研究版》,供专家、学者和爱好者进行研究。《海量智能分词研究版》主要用于学术研究和产品研发,所以与正式版本在速度上有一定差别。

下载页面:http://www.hylanda.com/cgi-bin/download/download.asp?id=8

l        CSW 中文智能分词组件

CSW中文分词组件,是一套基于标准C++开发的,可自动将一段文本按常规汉语词组进行拆分,并以指定方式进行分隔的DLL组件。本组件采用完全自主开发的高效的分词引擎及拆分算法,具有准确、高速、资源占用率小等特点。为了满足客户对文本语义进行研究分析的需要,本组件同时具有词性及词频标注功能,可根据用户要求,对其拆分后的词组进行词性标注或词频标注。

访问页面:http://www.vgoogle.net/index.asp

l        Microsoft Research S-MSRseg

Version 1 of the S-MSRSeg was developed by Natural Language Computing Group at Microsoft Research Asia, and is released in 2004. S-MSRSeg is a simplified version of the MSRSeg system (the generic segmenter) described in Gao et al. (2004), see msr-tr-2004-123.pdf in this package. S-MSRSeg does not provide the functionalities of new word identification, morphology analysis, and standards adaptation.

download

http://research.microsoft.com/research/downloads/Details/47C06C94-E9C7-414C-9E22-C2EF49100D1E/Details.aspx

l        东北大学自然语言实验室汉语分词器NEUCSP

NEUCSP is a Chinese tokeniser/tagger developed by the NLP Lab from the North-Eastern University, Shenyang, China. It does not handle XML tags and sometimes fails on large corpora, so the filter processes large corpora by splitting them into separate documents. The input encoding is GB2312; Neucsp is available for Windows only.

下载页面: http://www.nlplab.cn/

l        雨痕中文分词组件

内置 25万优选基本词条,包括行业专业词汇,及新兴网络用语。

多模式复合识别算法,能有效识别中英文特殊语法习惯。

多元歧义自动识别,有效提高分词的准确性。

改进的中文人名(汉族)识别算法。

自动过滤无效字符,支持全半角和通配符等搜索引擎分词习惯。

支持外挂扩展词库,支持扩展敏感词过滤,支持对内存词库直接操作。

词库载入及分词速度较 V1 / V2 有极大提高。

使用简单,只需一个DLL文件,无需任何额外的数据系统支持。

下载页面: http://www.rainsts.net/article.asp?id=491

l        ShootSearch 分词组件

ShootSearch分词组件是一个开源的分词组件,其分词效率很高,但ShootSearch只采用了简单的最大匹配算法,分词准确度很低,这里就不重点分析了。

下载页面: http://www.shootsoft.net

l        KTDictSeg 分词组件

KTDictSeg 的算法在正向匹配算法的基础上做了一些改进,用一句话描述就是找到句子中第一个未被匹配的字数最少的单词组合,如果多个组合未被匹配的字数都是最少则找到其中匹配的单词个数最少的组合。匹配顺序是从左至右。

KTDictSeg V1.2.02

http://www.cnblogs.com/Files/eaglet/KTDictSeg_v1.2.02.rar

KTDictSeg 1.2  版本发布及算法简介

http://www.cnblogs.com/eaglet/archive/2007/06/02/768856.html

l        CKIP Autotag

本系统采用机率式无语境规律的模型(Probabilistic Context-free Grammar)为基本剖析架构並加入结构中词搭配关系机率解決结构歧义。在结构决定之後,本系统可选择是否对结构進行语义角色的指派。分词与词类标记采用本实验室发展的中文断词与词类标记系统。

访问页面: http://rocling.iis.sinica.edu.tw/CKIP/parser.htm

各个工具采用的分词算法和其采用的字典各不相同,在针对具体的应用需要时,必须考虑精度、速度等等因素,选择满足要求的分词算法或工具。

六、总结

中文分词技术是语言文本处理技术的基础,其广范应用于信息检索,汉字处理,语音处理,内容识别与分析,自然语言理解等领域。中文分词技术的滞后是当前中文信息自动化处理技术发展的瓶颈,在分词的算法研究上还有待发展。目前研究中文分词的大多是科研院校,清华、北大、中科院、北京语言学院、东北大学、IBM研究院、微软中国研究院等都有自己的研究队伍,而真正专业研究中文分词的商业公司除了海量科技以外,几乎没有了。科研院校研究的技术,大部分不能很快产品化,而一个专业公司的力量毕竟有限,看来中文分词技术要想更好的服务于更多的产品,还有很长一段路。

 

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录