一种识别中文文本编码形式的方法

文档序号:6564745阅读:328来源:国知局
专利名称:一种识别中文文本编码形式的方法
技术领域
本发明涉及信息检索汉字字符识别技术领域,尤其涉及一种识别中文文本编码形式的方法。
背景技术
由于历史和地域等多方面的原因,汉字字符在计算机内存储和处理时有多种编码形式。其中最常见的有三种1、我国大陆制定的国标码,包括GB2313、GBK和GB18030等;2、我国港澳台等地区制定的繁体汉字编码,包括BIG-5、BIG-5E和HKCS等;3、汉字编码的国际标准,包括ISO 10646、Unicode等。
汉字编码向ISO 10646的过渡是一个较长的过程,在此期间各种不同的汉字编码形式都将同存,这必然要求操作系统或应用程序能够自动识别汉字字符的编码,并实现编码的转换。
例如Internet上各网页可能采用不同的汉字编码,很多网页并没有标明编码类型,这必然要求浏览器能够自动识别网页的汉字编码;不同的编辑器都有默认的编码形式,当一个文本文件的编码不是编辑器的默认编码时,如果编辑器不能自动识别其编码,将显示出乱码。
我国与世界各地经济、文化等各领域的交流日益频繁,大陆地区与港澳台地区的交流也日益增多,各种不同的汉字编码形式给交流带来了障碍,也要求操作系统或应用程序能够自动识别文本信息的汉字编码。
常用的编码识别方法有(1)基于内码分布的识别方法。这是因特网上公开的编码识别方法,主要用来识别GB码和BIG5码。该方法首先将待识别文本转换为无符号整数,累加待识别文件中所有汉字的第一个字节(也可以是第二个字节或两个字节),求得待识别文本所有汉字字符的编码平均值,与训练得到的阈值(184)比较,如果待识别文件编码平均值大于184则为GB码,否则为BIG5码。这种方法使用简单,但只能识别长文本汉字编码,对汉字与ASCII共存的文本也不能有效识别。
(2)基于各编码非重叠区的识别方法。虽然各种不同的汉字编码有交叉重叠的部分,但也一般不是完全一致。如果待识别文本中出现了只存在于某种编码空间的字符,则可以排除其它编码形式的可能性。该方法局限性非常大,不能保证识别成功,只能作为其它编码识别方法的辅助识别方法。
(3)基于标点符号的识别方法。各标点符号在各种编码类型中的编码均不相同,并且所有常用标点符号在各编码类型中对应的编码集合之间互不相交,这样可以通过统计标点符号在各种编码类型出现的概率识别文本的编码类型。这种方法同样只适用于识别长文本,对没有标点符号的孤立短文本无效。
(4)基于字频统计的识别方法。汉字字符的使用频次差别很大,1000个最常用汉字使用频率占90.4%,2500个最常用汉字使用频率占97.97%。因此,待识别文本中含有某种编码的常用字越多,则为该编码的可能性越大。该方法同样也只适用于识别长文本,对于短文本编码的识别准确率很低。
(5)基于用语习惯差异的识别方法。两岸汉字编码不同,用语习惯也有差异。例如大陆习惯说“软件”,港澳台习惯说“软体”,根据这些差异可以识别汉字编码。这种思路开销较大,同时这种差异性并不总是反映编码类型,台湾人有时候也会照顾大陆读者而说“软件”,大陆人有时候也会照顾台湾读者而说“软体”,并且这些存在差异的用语数量较少,在短文本中不一定会出现,因此该方法对短文本识别效果也不佳。
也有人用若干种方法分别对待识别文本进行编码识别,并对识别结果进行投票,投票结果形成最终的编码识别结果。这种投票器的方法需要较多的时间,对短文本的识别准确率也不高。

发明内容
(一)要解决的技术问题有鉴于此,本发明的主要目的在于提供一种识别中文文本编码形式的方法,以提高汉字字符编码识别的速度和准确率,有效识别短文本的汉字字符编码形式。
(二)技术方案为达到上述目的,本发明的技术方案是这样实现的
一种识别中文文本编码形式的方法,该方法包括A、在各种编码形式下分别对待识别文本进行整数ID序列转换;B、判断待识别中文文本是否只能按照某种编码形式转换为整数ID序列,如果是,则执行步骤D;否则,执行步骤C;C、对在各种编码形式下得到的待识别中文文本整数ID序列分别进行分词,判断在某种编码形式下得到的待识别中文文本整数ID序列是否包含词典中一个或多个词语,如果是,则执行步骤D;D、确定该待识别中文文本的编码形式为该种编码形式。
所述各种编码形式至少包括GB码、BIG5码和Unicode码,所述步骤A包括在GB码、BIG5码和Unicode码形式下分别对待识别文本进行整数ID序列转换。
在步骤B中所述判断过程中,如果仅能够按照GB码编码形式将待识别中文文本转换为整数ID序列,则步骤D中确定该待识别中文文本的编码形式为GB码编码形式;在步骤B中所述判断过程中,如果仅能够按照BIG5码编码形式将待识别中文文本转换为整数ID序列,则步骤D中确定该待识别中文文本的编码形式为BIG5码编码形式;在步骤B中所述判断过程中,如果仅能够按照Unicode码编码形式将待识别中文文本转换为整数ID序列,则步骤D中确定该待识别中文文本的编码形式为Unicode码编码形式。
步骤C中所述分词算法采用正向最大匹配分词方法或反向最大匹配分词方法,分词采用的词典结构包括Trie树、双数组结构、完美哈希函数、首字哈希。
在步骤C中所述词典为通用词典,包括仅在大陆地区或港澳台地区特有的词语,也包括在大陆地区和港澳台地区都常用的词语和短语。
如果中文文本中的一个字符串在一种编码形式下为词典词语a,在另一种编码形式下为词典词语b,则在所述词典中删除词语a和b。
步骤C中所述判断的结果为否,该方法进一步包括E、计算待识别中文文本的内码分布和字频分布,根据计算的内码分布和字频分布确定待识别中文文本的编码形式。
(三)有益效果从上述技术方案可以看出,本发明具有以下有益效果1、本发明提供的这种识别中文文本编码形式的方法,通过融合所有已知的汉字编码识别方法,将待识别文本经过序列化、分词和统计三个阶段,每个阶段都可以对编码进行识别,如果在某个阶段已经能够确定待识别文本的编码形式,就不需要后继识别阶段。因此,利用本发明,大大提高了汉字字符编码识别的速度和准确率,并能够有效识别短文本的汉字字符编码形式。
2、本发明提供的这种识别中文文本编码形式的方法,由于序列化和分词阶段速度很快,大部分文本的编码识别可以在分词阶段完成,因此本发明的优点之一就是识别速度非常快,大大提高了汉字字符编码识别的速度。
3、本发明提供的这种识别中文文本编码形式的方法,由于在某种编码形式下的一个字符串如果构成词典的一个词语,在其它编码形式下不可能构成词典的任何词语(如果编码形式A下的某个词语a构成另一种编码形式B下的词语b,本发明将去掉词典中的词语a和b),而几乎所有有意义文本总包含词典中一个或多个词语,因此本发明的识别准确率非常高。
4、本发明提供的这种识别中文文本编码形式的方法,由于分词所用的词典既包括大陆地区和港澳台地区用语存在差异的词语,也包括数量众多的两岸通用词语,即使非常短的待识别文本也一般包含一个或几个词典词语,因此本发明的另一个优点就是能够适用于短文本的编码识别,大部分文本可以用不超过5个字符即可识别其编码,对于超过10个汉字的有意义文本,几乎都可以正确识别其编码形式,对短文本的编码识别准确率远远高于投票器识别策略。


图1为本发明提供的识别中文文本编码形式总体技术方案的实现流程图;图2为依照本发明实施例识别汉字编码的过程示意图;图3为依照本发明实施例序列化阶段示意图;图4为依照本发明实施例分词所用词典的构造示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明的核心思想是通过融合所有已知的汉字编码识别方法,将待识别文本经过序列化、分词和统计三个阶段,每个阶段都可以对编码进行识别,如果在某个阶段已经能够确定待识别文本的编码形式,就不需要后继识别阶段。
如图1所示,图1为本发明提供的识别中文文本编码形式总体技术方案的实现流程图,该方法包括以下步骤步骤101在各种编码形式下分别对待识别文本进行整数ID序列转换;步骤102判断待识别中文文本是否只能按照某种编码形式转换为整数ID序列,如果是,则执行步骤104;否则,执行步骤103;步骤103对在各种编码形式下得到的待识别中文文本整数ID序列分别进行分词,判断在某种编码形式下得到的待识别中文文本整数ID序列是否包含词典中一个或多个词语,如果是,则执行步骤104;否则,执行步骤105;步骤104确定该待识别中文文本的编码形式为该种编码形式。
步骤105计算待识别中文文本的内码分布和字频分布,根据计算的内码分布和字频分布确定待识别中文文本的编码形式。
本发明将待识别文本的编码识别过程分为序列化阶段、分词阶段和统计阶段,每个阶段都可能确定待识别文本的编码形式,只有在前面阶段不能确定待识别文本编码形式才进行后续识别阶段,整个过程如图2所示。
在序列化阶段,将待识别文本各字符分别在各可能编码形式下转换为对应的整数ID。汉字字符集中的每一个汉字都对应一个唯一的整数ID。如果待识别文本中含有某个字符不在某种编码形式的编码空间内,那么待识别文本不是该编码形式;如果待识别文本中某个字符只属于某种编码形式的编码空间,那么待识别文本就是该编码形式。如果在序列化阶段不能确定待识别文本的编码形式,则进入本发明的分词阶段。
在分词阶段,对序列化阶段产生的各可能编码形式的整数ID序列分别进行分词。分词词典既包含两岸用语存在差异的词语,也包括通用的词语。如果对某种可能编码形式的整数ID序列分词能够得到词典词语,那么待识别文本就为该编码形式。如果对所有可能编码形式的整数ID序列分词都不能得到词典词语,则说明待识别文本极有可能为无意义字符串,本发明进入统计阶段。
在统计阶段,对待识别文本分别计算内码分布和字频分布,从内码分布和字符分布等统计信息识别编码形式。如果根据待识别文本的内码分布和字频分布仍然不能确定待识别文本的编码形式,则说明待识别文本很有可能是乱码,本发明将提示不能识别其编码形式。
下面对上述三个阶段分别详细介绍如下1.序列化阶段本发明首先将待识别文本在各可能编码形式下转换为整数ID序列。汉字的整数ID是事先确定好的该汉字的唯一标志,不同汉字的整数ID均不相同。如图3所示,分别将待识别文本在GB码、BIG5码、Unicode码等可能编码形式下转换为相应整数ID序列。如果待识别文本中含有某些字符不在某种编码形式的编码空间,那么待识别文本不是该编码形式;如果待识别文本的某些字符只属于某种编码形式的编码空间,那么待识别文本为该编码形式。
例如,如果待识别文本十六进制字节流为“FF FE 54 80 1A 90”,由于“FF FE”是Unicode编码文件的标志字符,不在GB码、BIG5码等编码形式的编码空间,因此该文本为Unicode编码形式。
各编码形式的编码空间均存在较大的非重叠区,尤其是很多常用汉字没有出现在各编码空间的重叠区,因此即使对于短文本,本阶段也可以识别50%以上的待识别文本编码形式。如果本阶段不能识别文本编码形式,则进入分词阶段。
2.分词阶段由于大陆地区和港澳台地区在用语上大部分还是相同的,只有个别用语存在差异,因此本发明在分词阶段所用词典不仅包括两岸用语存在差异的词语,同时也包括通用的词语,提高对短文本编码识别的准确率。
本发明构造一个通用词典,至少包括大陆地区和港澳台地区都较常用的词语和短语,如苹果、香蕉、北京,也包括仅在大陆地区或港澳台地区特有的词语,如奔驰、平治、宾士、程序、程式等。本词典不收录单字词,同时如果一个单词在两种或两种以上编码形式下都构成该词典的单词,则去掉该单词,即如果中文文本中的一个字符串在一种编码形式下为词典词语a,在另一种编码形式下为词典词语b,则在所述词典中删除词语a和b。本发明所用词典的构造过程如图4所示。
对序列化阶段得到的各可能编码形式下的整数ID序列分别进行分词,如果某种编码形式对应的整数ID序列包含词典中一个或多个词语,则待识别文本为该编码形式。分词可以采用正向最大匹配分词方法,也可以采用反向最大匹配分词方法,词典结构可以采用各种已有的分词数据结构如Trie树、双数组结构、完美哈希函数、首字哈希等。
几乎所有有意义文本总包含词典中一个或多个词语,即使非常短的待识别文本也是如此,因此本发明的识别准确率非常高,对短文本的编码识别效果也非常好,对长度超过10个汉字的文本几乎都可以在分词阶段识别其编码形式。如果分词阶段不能识别文本的编码形式,本发明则进入统计阶段。
3.统计阶段对于序列化阶段和分词阶段都不能识别的文本,本发明再计算其内码分布和字频分布信息,根据字频分布和内码分布信息识别其编码形式。如果在统计阶段仍不能识别文本的编码形式,本发明将提示不能识别该文本的编码形式。
为了验证本发明提供的识别中文文本编码形式的方法,本发明从各主流论坛站点采集了大陆地区和港澳台地区的BBS标题共计500万条,145M字节,平均每个标题不到15个字符。采用本发明提到的识别中文文本编码形式的方法,识别500万短文本的编码共耗时不到16秒,所有文本都能正确识别其编码。其中99.93%的待识别文本能在分词阶段识别编码,90%的待识别文本能用不到5个字符识别其编码,对超过10个汉字的有意义文本几乎都能在分词阶段正确识别其编码形式。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种识别中文文本编码形式的方法,其特征在于,该方法包括A、在各种编码形式下分别对待识别文本进行整数ID序列转换;B、判断待识别中文文本是否只能按照某种编码形式转换为整数ID序列,如果是,则执行步骤D;否则,执行步骤C;C、对在各种编码形式下得到的待识别中文文本整数ID序列分别进行分词,判断在某种编码形式下得到的待识别中文文本整数ID序列是否包含词典中一个或多个词语,如果是,则执行步骤D;D、确定该待识别中文文本的编码形式为该种编码形式。
2.根据权利要求1所述的识别中文文本编码形式的方法,其特征在于,所述各种编码形式至少包括GB码、BIG5码和Unicode码,所述步骤A包括在GB码、BIG5码和Unicode码形式下分别对待识别文本进行整数ID序列转换。
3.根据权利要求2所述的识别中文文本编码形式的方法,其特征在于,在步骤B中所述判断过程中,如果仅能够按照GB码编码形式将待识别中文文本转换为整数ID序列,则步骤D中确定该待识别中文文本的编码形式为GB码编码形式;在步骤B中所述判断过程中,如果仅能够按照BIG5码编码形式将待识别中文文本转换为整数ID序列,则步骤D中确定该待识别中文文本的编码形式为BIG5码编码形式;在步骤B中所述判断过程中,如果仅能够按照Unicode码编码形式将待识别中文文本转换为整数ID序列,则步骤D中确定该待识别中文文本的编码形式为Unicode码编码形式。
4.根据权利要求1所述的识别中文文本编码形式的方法,其特征在于,步骤C中所述分词算法采用正向最大匹配分词方法或反向最大匹配分词方法,分词采用的词典结构包括Trie树、双数组结构、完美哈希函数、首字哈希。
5.根据权利要求1所述的识别中文文本编码形式的方法,其特征在于,在步骤C中所述词典为通用词典,包括仅在大陆地区或港澳台地区特有的词语,也包括在大陆地区和港澳台地区都常用的词语和短语。
6.根据权利要求5所述的识别中文文本编码形式的方法,其特征在于,如果中文文本中的一个字符串在一种编码形式下为词典词语a,在另一种编码形式下为词典词语b,则在所述词典中删除词语a和b。
7.根据权利要求1所述的识别中文文本编码形式的方法,其特征在于,步骤C中所述判断的结果为否,该方法进一步包括E、计算待识别中文文本的内码分布和字频分布,根据计算的内码分布和字频分布确定待识别中文文本的编码形式。
全文摘要
本发明公开了一种识别中文文本编码形式的方法,包括A.在各种编码形式下分别对待识别文本进行整数ID序列转换;B.判断待识别中文文本是否只能按照某种编码形式转换为整数ID序列,如果是,则执行步骤D;否则,执行步骤C;C.对在各种编码形式下得到的待识别中文文本整数ID序列分别进行分词,判断在某种编码形式下得到的待识别中文文本整数ID序列是否包含词典中一个或多个词语,如果是,则执行步骤D;D.确定该待识别中文文本的编码形式为该种编码形式。利用本发明,大大提高了汉字字符编码识别的速度和准确率,并能够有效识别短文本的汉字字符编码形式。
文档编号G06F17/28GK101013420SQ20061017165
公开日2007年8月8日 申请日期2006年12月31日 优先权日2006年12月31日
发明者龚才春 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1