中文分词方法

文档序号:6584245阅读:507来源:国知局
专利名称:中文分词方法
技术领域
本发明涉及用于各种中文语言处理的中文分词方法,尤其涉及用于中文文语转换、机器翻译、自动语音识别、文本摘要、文本检索以及对话等方面的中文分词方法。
背景技术
中文文本中一般没有明确的词汇界限,而中文文本处理一般都是基于词汇来进行。因此,将输入文本进行分词是许多中文文本的处理中的一个基本操作。与中文有关的智能应用,如中文文语转换、机器翻译、自动语音识别、文本摘要、文本检索以及对话等,都需要对中文进行分词,以便于后期处理。
至今,已有多种用于中文语言处理的中文分词方法。例如,张国煊(Guo-Xuan Zhang)的论文、吴胜远(Sheng-Yuan Wu)的论文、郭祥昊(Xiang-hao Guo)的论文。已有技术大多使用了哈希算法(HashingOperation)将起始汉字相同的词汇组合到一起。这样做,可以更快地进行分词,尤其当词汇或文本处理器需要从输入的文本中划分并组合出尽可能多的词汇来创建哈希树数据结构之时。然而,由于缺乏语义学方面的处理,目前的中文分词很难达到百分之百的准确率。利用已有技术得到的分词结果常常会不尽人意,出现分词错误。分词错误出现的主要原因包括分词的歧义、专有名词的识别以及不同的文本格式(text format)。
此外,已有技术并未进一步发展哈希结构(Hash Structure)来加快中文分词。传统的数据结构,如B±树及其变形,产生许多I/O操作而减慢了分词速度。其它形式中,对第一个中文汉字进行哈希运算,加上后续查找,仍然需要进行许多词库条目的比较。至今,常用的方法如最大匹配方法和最小匹配方法都进行了大量的冗余比较。这些因素降低了分词的效率。
因为目前的分词算法,仍然需要根据最大匹配或最小匹配而针对词库条目进行大量的比较,这将产生了许多多余的比较。即使哈希数据结构优于传统的数据结构,如B树,也将产生许多多余的比较,从而浪费了系统资源和时间。在一些应用中,如文本摘要、文本检索、文本分类以及机器翻译,分词的实时处理是非常必要的。目前,需要一种分词方法,使计算机能够在0.1秒内对10,000个汉字完成分词。

发明内容
鉴于已有技术的不足,本发明的目的是提供一种快速而准确的中文文本分词方法。
为达到上述目的,本发明提出了一种具有新型数据结构的词库,以及一种新的中文分词方法。
根据本发明的词库利用具有索引区域和数据区域的数据结构来组织,所述数据区域包括词汇集合{W’K0,W’K1,…W’Kn-1},每一索引节点包括汉字的属性Ak,词汇集合的长度Lk,以及一指向词汇集合{W’K0,W’K1,…W’Kn-1}的指针。所述词汇集合中的每个词汇包括词性、词类属性和长度属性。该数据结构支持哈希运算和近似二分查找以及邻近匹配。
根据本发明的一种用于中文文本处理系统的分词方法,其中该中文文本处理系统包括其数据结构支持哈希运算(Hashing Operation)的词库,所述方法包括取得输入汉字串的前两个汉字;在所述词库中检索出与所述前两个汉字的起始汉字相关的索引节点;取得所述索引节点中的指针,该指针指向所述词库中相应的词汇集合;在所述词汇集合中进行近似二分查找,如果找到所述两个汉字词汇,则保存该词汇的索引,否则,保存与所述两个汉字最接近的词汇的索引;对于所述输入汉字串,在所述词汇集合中执行邻近匹配,以获得具有最大长度的匹配词汇,并把该匹配的词汇作为当前分词的结果。
对于上述分词结果,本发明还进行了以下步骤词汇歧分步骤;识别中文人名步骤;归并数词、量词和叠词步骤;识别翻译人名步骤;归并单字步骤以及归并前后缀和识别地名步骤。
这种新的分词方法,基于根据一词库对起始汉字的哈希运算以及对输入汉字串进行近似二分查找以及邻近匹配,来确定适当的分词结果。其中,近似二分查找针对于起始汉字相同的词汇。为了识别专有名词,本方法的几个词库,用于如中文人名中的姓、称呼、中文人名中出现的高频汉字、翻译人名中出现的高频汉字、地名、前缀、后缀、机构名称和动词等等。
本发明在分词准确率和响应时间方面得到了重大改进。对于从国际互联网上下载的新闻报道,利用本发明的分词方法进行分词测试,对于这些材料的分词准确率达到了99%以上。
按照本发明,平均每切分出一个词汇需要比较1.66次。而传统的最大匹配方法需要比较12次。本发明的计算复杂度是已有技术的1/7。
附图简要说明

图1是用于本发明词库的数据结构示意图。
图2是根据本发明的文本切分流程图。
具体实施例方式
本发明提出了一种用于词库的新的数据结构,如图1所示,包括一索引区域10和一数据区域20,所述索引区域包括多个索引节点,每一索引节点与一汉字相对应,所述数据区域包括多个词汇集合,每一词汇集合与一索引节点相对应,其中每一所述索引节点包括属性字段,用于指示所述汉字的属性,如表1所示;长度字段,用于指示与所述汉字相对应的数据区域词汇集合的总长度;指针,用于指向与所述汉字相对应的所述数据区域词汇集合;其中所述数据区域词汇集合包括以所述汉字开头的词汇的后续部分、该词及所述词汇的特性部分,所述词汇特性部分包括词性(POS),用于指示所述词汇在具体语言环境之中可能的特征,如名词、动词等;词类部分,用于指示所述词汇的词汇类别属性,如表2所示;长度部分,用于指示所述词汇后续部分的长度。表1中文汉字型WS_CCHAR_RESERVED 0x00保留WS_CCHAR_HIGHFREINNAME0x01中文人名中的高频字WS_CCHAR_SInGLESURNAME0x02中文姓氏WS_CCHAR_SUFFIX 0x04后缀WS_CCHAR_TNAME0x08外来人名中的高频字WS_CCHAR_VERB 0x10动词WS_CCHAR_SEGFLAG 0x20切分标志WS_CCHAR_QUANTITY 0x40量词WS CCHAR_HF_INS 0x80机构名称中的高频字表2词汇类别WS_APPELLATION0x00称谓WS_INDICATINGVERB 0x01指示性动词WS_PLACENAME 0x02地名WS_PLACETAG 0x03地名标志WS_INDICATINGINSTITUTE0x04机构名称标识词WS_ABBREVIATION 0x05缩写WS_TIME 0x06时间名词WS_CONTAIN_SURNAME0x07包含姓氏的词WS_WORD_IN_NAME 0x08能出现在人名的词WS_CURRENCY 0x09货币WS_NUMBER 0x0a标识数目的词WS_DATE 0x0b日期WS_APPELLATION_PLACETAG 0x0c兼作地名标志和称谓的词WS_RESERVED_CATEGORY 0x0e保留在所述新的数据结构中,词性(POS,i.e.Part-of-Speech),用于确定专有名词以及歧义。例如,对应于词汇“剥削”的POS模式为n,v,其中n表示名词,v表示动词。每个词具有语法或词性(morphologicai)特征,如多义词。词汇的类别(Categorization)有助于识别专有名词。汉字的属性(Attribute)有助于识别专有名词。
如果中文词汇Wk0、Wk1…Wkn-1,以相同的中文汉字CCk起始,则相同的汉字CCk可以省略,因此Wki被修改为W’ki。将W’k0、Wk1…W’kn-1组合起来。利用指针PK指向词汇集合{W’k0、W’k1…W’kn-1},来支持利用起始汉字进行哈希运算。
因此,当组织词汇数据时,为{W’k0、W’k1…W’kn-1}确定一个索引节点,该索引节点包括三个字段汉字的属性字段AK、数据部分长度字段LK以及一个指向词汇集合{W’k0、W’k1…W’kn-1}的指针PK。对于词汇集合中的每一个词汇,用一个字节存储词性(POS)索引,该索引对应于一类特定的词性;用一个字节存储词汇类别和长度,其中高四位指示词汇类别,低四位指示汉字序号。
下面给出一个例子说明数据结构的组织方式。词库中的每个词汇在计算机中都对应于一个预先确定的码值。对于起始汉字为“剥”的中文词汇组织的词汇集合如下(以码值升序顺序)剥、剥掉、剥夺、剥离、剥落、剥皮、剥去、剥蚀、剥脱、剥削、剥削阶级、剥啄


其中,Yi(0≤i≤11)语言成分(POS)模式索引;Hi(0≤i≤11)混合属性,即词汇类别和长度;|词汇界限。
根据所述数据结构,组织用于分词的汉字词库,其中每一汉字的码值对应于词库中的一个索引节点,每一索引节点中的指针指向以该汉字起始的词汇集合数据部分。
利用根据本发明的词库,对于一输入的中文字串,S=s0s1…sl-1,进行分词的时候,首先取最前面的两个汉字s0s1,(因为在大多数情况下,由两个字组成的中文词汇约占全部词汇的75%),然后在所述的词库中检索出与s0相关的索引节点IK。通过IK得到一指针PK,指向一数据部分的以s0为起始汉字的词汇集合。该词汇集合中每个词的长度LK是不同的,在该词汇集合中执行近似二分查找(approximate binarysearch)。如果找到s0s1,则保存相应的索引;否则,保存最接近的索引。然后,再从中文字串S=s0s1…sl-1中选取下一个汉字,即s0s1s3,执行邻近匹配查找,比较词汇集合中最接近的下一个词汇是否匹配。以Ikj表示该索引(0≤j≤n-1),然后继续在{W’k0、W’k1…W’kn-1}中查找,直到{W’k0、W’k1…W’kn-1}中的词汇大于s1…su为止,s1…su选自s1…sl-1。在处理过程中,记下匹配的词汇。如果匹配的词汇s1…sv具有最大的长度,则把它作为当前分词的结果。
以下结合以汉字“阿”起始的词汇表表3,详细说明本发明的近似二分查找方法和邻近匹配方法,对输入的语句“阿拉伯数字有十个。”进行分词。其中的索引值对应于在词库“阿”起始的词汇集合中,该词汇的索引位置。
表3以汉字“阿”起始的词汇表。

首先,从输入的中文字串之中,检索出与需要查找的词汇的第一个字相对应的索引节点;取得所述索引节点中的指针和所述汉字相对应的数据区域词汇集合的总长度LK;由所述指针得到与该第一个字相对应的数据区域词汇集合;在所述词汇集合中进行近似二分查找,即将总长度LK值除以2并取整,得到第一值,将索引与该值最接近的词与需要查找的词汇进行比较。词库中的每个词汇在计算机中都对应于一个预先确定的码值,表3中的词汇是以码值升序的顺序排列的。如果与需要查找的词汇的码值相等,则即为所述字组成的词,停止查找;如果需要查找的词汇的码值大,则在该索引之后的词中进行查找,如果需要查找的词汇的码值小,则在该索引之前的词中进行查找,重复执行所述查找,直至找到匹配的词汇或查遍所述词汇集合为止。
对输入的语句“阿拉伯数字有十个。”进行分词。首先对“阿拉”执行Hash运算查找,得到以“阿”起始的索引节点;并从该索引节点取得“阿”的属性、以“阿”起始的词汇集合的总长度LK以及指向该相应数据区域词汇集合的指针PK;由指针PK得到该词汇集合。
然后,利用根据本发明的近似二分查找方法。即,将指针移到词汇集合总长的二分之一处,如果该处不是一个词的词首,则将指针移到该词的词首。在该词汇集合中查找与词汇“阿拉”匹配的词汇。不失一般性,假设LK=160。将长度LK除以2,得到第一值80;在索引(长度)80处对应的词汇为“(阿)联酋”。将“阿拉”的码值与“阿联酋”的码值进行比较,“阿联酋”的码值大;则在“阿联酋”之前进行近似二分查找。将得到的第一值80除以2,得到40;在索引40处对应的词汇为“阿房宫”。“阿房宫”的码值小于“阿拉”的码值;在索引40至索引80之间进行近似二分查找。中间值为60,索引60处不是一个词汇的起始第二字,索引59最接近索引60。索引59处对应的词汇为“阿拉伯数字”;“阿拉伯数字”的码值大于“阿拉”的码值,在“阿拉伯数字”之前、“阿房宫”之后,即在索引40至索引60之间进行近似二分查找。在词汇集合中未找到与“阿拉”匹配的词汇,则保存码值最接近但小于“阿拉”码值的词汇,即“阿克陶”。
在执行近似二分查找过程中,如果找到匹配的词汇,则保存与该词汇相应的索引;否则,保存与需要查找的词汇(的码值)最接近但小于所要查找的汉字串的词汇的索引。然后,根据上述近似二分查找结果,对于所输入的中文字串在所述词汇集合中执行邻近匹配。从中文字串再多选一个字加入所述汉字串,并依次比较最接近的词汇的下一个以及后续词汇是否匹配,直至找到匹配的词汇或词库中的词汇的码值大于所选汉字串的码值为止。在处理过程中,记下匹配的词汇。如果匹配的词汇具有最大的长度,则把它作为当前分词的结果。
由于“阿拉”和“阿克陶”匹配不成功,取词表中的下一词条“阿拉伯”,为3个汉字;从输入语句中也取3个字,亦为“阿拉伯”,它们匹配成功,故“阿拉伯”为当前的候选词汇。继续取词典中的下一词条“阿拉伯数字”,为5个字;从输入语句中也取5个字,亦为“阿拉伯数字”,它们匹配成功,由于“阿拉伯数字”的长度大于“阿拉伯”,因此将当前的候选词汇改为“阿拉伯数字”。再取下一词汇“阿拉伯语”,它的码值大于“阿拉伯数”的码值,切分终止。所以,当前的切分结果为“阿拉伯数字”。
下面参考图2描述本发明的文本切分过程。在输入需要进行分词的文本之后,首先在步骤110进行基本切分,所述基本切分包括Hash操作(利用汉字编码直接进行快速查找)、近似二分查找以及邻近匹配。在进行基本切分之后,在步骤120对多种基本切分结果进行歧分,根据相邻的多个分词词汇的词性(POS)词汇类别以及词汇长度,在分词结果中识别切分歧义;在步骤130识别所述中文文本中的中文人名;在步骤140合并数字串,将量词、叠词进行归并;在步骤150,识别翻译人名;在步骤160,将单个汉字进行归并,归并所述步骤中未识别的专有名词;在步骤170,将前后缀进行归并;识别出地名。最后,输出切分的文本。
下面具体描述如何对“王大力和平时一样对彼得客客气气”一句进行分词。在输入“王大力和平时一样对彼得客客气气”之后,首先对此句进行基本切分。因为,汉字中由两个字组成的词占约75%,所以,先取头两个字。以后也先是两个字,两个字进行取词。取词后,进行Hashing运算(利用汉字编码直接进行快速查找),即以词的第一个字来找到索引节点。再由该索引节点的指针找到对应的词汇集合。对此词汇集合进行近似二分查找和邻近匹配,步骤110。此基本切分方法,如上所述。进行基本切分后,可以得到王|大力|和平|时|一样|对|彼|得|客|客气|气这里,“王大”不构成有含义的词,用近似二分查找和邻近匹配在词汇集合中也找不到。故此,“王”就成为单字分出。“大力”是可以在“大”的词汇集合中找到的匹配词,依此类推。
然后进行歧分,步骤120,得到王|大力|和|平时|一样|对|彼|得|客|客气|气这里,考虑已分好的词的起始汉字和结尾汉字,是否可以与其邻接字组成有意义的词,以及所分词在全句中的环境。如果可以的话,将重新组合词。比如,“和平|时”变为了“和|平时”。
接下来识别句中的中文人名,步骤130,得到王大力|和|平时|一样|对|彼|得|客|客气|气继续识别翻译的人名,步骤150,得到王大力|和|平时|一样|对|彼得|客|客气|气将叠词进行归并,步骤140,得到王大力|和|平时|一样|对|彼得|客客气气这样,就得到了分词结果王大力|和|平时|一样|对|彼得|客客气气。
在以上的例子中,中文名字由姓氏来区分。翻译名字可以也有其特性。因为,都不构成有意义的中文词,所以要单独识别。步骤140和步骤150的前后,有时是可以调换的。数词和量词也是由其特性来区分的。叠词也有可能在基本切分时就可以分出来,只要是在词汇集合中含有该词。步骤160中的单字归并,是将该独立出来的字与其前后的字相组合看是否构成有意义的词。比如“和”或“对”。如果有地名的话,该词的后缀会有“市”“县”“地区”等等。这样,地名就可以区分出来了。其它有前缀或后缀的词也是如此区分的。
在本发明的方法中,邻近匹配可以大大地减小比较次数。按照本发明,平均每切分出一个词汇需要比较1.66次。而传统的最大匹配方法需要比较12次。本发明的计算复杂度是已有技术的1/7。
本发明的保护范围,描述在权利要求书中。但是,可以理解,凡是不超出本发明的构思要点的变化都应归于本发明的保护范围之中。
权利要求
1.一种用于中文文本处理系统的中文分词方法,该中文文本处理系统包括其数据结构支持哈希运算(Hashing Operation)的词库,其特征在于所述方法包括取得输入汉字串的前两个汉字;在所述词库中检索出与所述前两个汉字的起始汉字相关的索引节点;取得所述索引节点中的指针,该指针指向所述词库中相应的词汇集合;在所述词汇集合中进行近似二分查找,如果找到所述两个汉字词汇,则保存该词汇的索引,否则,保存与所述两个汉字最接近的词汇的索引;对于所述输入汉字串,在所述词汇集合中执行邻近匹配,以获得具有最大长度的匹配词汇,并把该匹配的词汇作为当前分词的结果。
2.如权利要求1所述的中文分词方法,其特征在于所述索引节点包括该起始汉字的属性、所述相关词汇集合的长度和一指针。
3.如权利要求1所述的中文分词方法,其特征在于如果通过近似二分查找所述起始两个汉字未找到完全匹配的词汇,则保存与所述起始两个汉字最接近的邻近词汇的索引。
4.如权利要求1所述的中文分词方法,其特征在于所述邻近匹配包括在所述词汇集合中向前查找(Search Forward),以获得所述汉字串中具有最大长度的匹配词汇;并把分词的词汇作为当前分词的结果。
5.如权利要求1所述的中文分词方法,其特征在于所述数据结构包括一索引区域和一数据区域,该数据区域包括词汇集合{W’K0,W’K1,…W’Kn-1},每一索引节点包括汉字属性Ak,数据长度Lk,和指向所述词汇集合{W’K0,W’K1,…W’Kn-1}的指针Pk。
6.如权利要求5所述的中文分词方法,其特征在于所述汉字串为S0S1…S1-1,起始汉字的索引节点是Ik,前两个汉字的索引是Ik1,邻近词汇的索引为Ikj,其中0≤j≤n-1。
7.如权利要求6所述的中文分词方法,其特征在于所述邻近匹配包括在所述词汇集合{W’K0,W’K1,…W’Kn-1}中向前查找,直到其中的词汇大于词汇S1…Su,并将S1…Sv确定为匹配的词汇,并将词汇S1…Sv作为当前分词结果。
8.如权利要求1所述的中文分词方法,其特征在于所述词汇集合中的每一词汇包括该词汇的词性(POS),词汇类别和长度属性。
9.如权利要求1所述的中文分词方法,其特征在于所述方法还包括根据相邻的多个分词词汇的词性(POS)词汇类别以及词汇长度,在分词结果中识别切分歧义。
10.如权利要求1所述的中文分词方法,其特征在于所述方法还包括识别中文人名的步骤。
11.如权利要求1所述的中文分词方法,其特征在于所述方法还包括归并数词、量词和叠词的步骤。
12.如权利要求1所述的中文分词方法,其特征在于所述方法还包括识别翻译人名的步骤
13.如权利要求1所述的中文分词方法,其特征在于所述方法还包括识别单字的步骤。
14.如权利要求1所述的中文分词方法,其特征在于所述方法还包括归并前后缀和识别地名的步骤。
15.一种用于中文词汇处理器的词库,其特征在于所述词库利用具有索引区域和数据区域的数据结构来组织,所述数据区域包括词汇集合{W’K0,W’K1,…W’Kn-1},每一索引节点包括汉字的属性Ak,词汇集合的长度Lk,以及一指向词汇集合{W’K0,W’K1,…W’Kn-1}的指针。
16.如权利要求15所述的词库,其特征在于所述词汇集合中的每个词汇包括词性、词类属性和长度属性。
17.如权利要求15所述的词库,其特征在于所述词汇集合中的每个词汇包括语法特征、词性特征和汉字编码。
全文摘要
一种用于中文文本处理系统的中文分词方法,包括取得输入汉字串的前两个汉字;在词库中检索出与前两个汉字的起始汉字相关的索引节点;取得该索引节点中的指针,该指针指向该词库中相应的词汇集合;在词汇集合中进行近似二分查找,如果找到该两个汉字词汇,则保存该词汇的索引,否则,保存与该两个汉字最接近的词汇的索引;对于输入汉字串,在该词汇集合中执行邻近匹配,以获得具有最大长度的匹配词汇,并把该匹配的词汇作为当前分词的结果。对于上述分词结果,本发明还进行切分歧义消解、识别中文人名、归并数词、量词和叠词、识别翻译人名、归并单字以及归并前后缀和识别地名。本发明在分词准确率和响应时间方面得到了重大改进。
文档编号G06F17/21GK1471024SQ0212700
公开日2004年1月28日 申请日期2002年7月25日 优先权日2002年7月25日
发明者陈桂林, 陈芳 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1