一种错别字符处理方法和系统转让专利

申请号 : CN200910080812.0

文献号 : CN101847140B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪平仄曹存根王东升曹亚男

申请人 : 中国科学院计算技术研究所

摘要 :

本发明公开了一种错别字符处理方法和系统。该方法包括:步骤A1,根据错别字符训练集库,为训练集中每个正确字符建立其对应的错别字符集合;步骤B1,在含错别字符的大规模语料库中,分别找出包含所述正确字符和错别字符的短语或词组;步骤C1,找出正确字符和错别字符的对应关系,建立词组对或者短语对;步骤D1,优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到所述正确字符相应的错别字符的词组对或者短语对;步骤E1,将所述正确字符相应的错别字符的词组对或者短语对加入到所述正确字符的错别字符词典。其能够识别错别字符词组或者短语,并建立错别字符词典,从而提高错别字符词典的生成效率。

权利要求 :

1.一种错别字符处理方法,其特征在于,包括下列步骤:

步骤A1,根据错别字符训练集库,为训练集中每个正确字符建立其对应的错别字符集合,其中所述错别字符训练集库包括正确字符和错别字符,并表达了正确字符和错别字符的对应关系;

步骤B1,在含错别字符的大规模语料库中,分别找出包含所述正确字符和错别字符的短语或词组;

步骤C1,找出正确字符和错别字符的对应关系,建立分别包含正确字符和对应错别字符的词组对或者短语对;

步骤D1,优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到筛选后的分别包含正确字符和对应错别字符的词组对或者短语对。

2.根据权利要求1所述的错别字符处理方法,其特征在于,还包括下列步骤:步骤E1,将筛选后的分别包含正确字符和对应错别字符的词组对或者短语对加入到所述正确字符的错别字符词典,其中所述错别字符词典包括正确字符、错误字符、筛选后的分别包含正确字符和对应错别字符的词组对或者短语对。

3.根据权利要求1或2所述的错别字符处理方法,其特征在于,所述步骤A1包括下列步骤:步骤A11,设置字符Word为空,置阀值Threshold的初值为0;进入步骤A12;

步骤A12,为训练集中的每个正确的字符RWord,建立该正确字符RWord的错别字符集C(RWord);

设置字符WWord∈C(RWord)当且仅当WWord是RWord的一个错别字;

字符WWord的标记初始化为False。

4.根据权利要求3所述的错别字符处理方法,其特征在于,所述步骤B1包括下列步骤:步骤B11,取出一个未处理过的正确字符RWord,执行步骤B12; 步骤B12,如果步骤B12是由步骤B11跳转过来的,则设置字符Word=RWord,阀值Threshold=RThreshold;否则,如果步骤B 12是由步骤B 18跳转过来的,则设置字符Word=WWord,阀值Threshold=WThreshold;否则,结束;

其中,阀值RThreshold为在处理正确字符时使用的阀值;而阀值WThreshold为在处理错别字符时使用的阀值;

步骤B13,在大规模语料库File中检索查找出包含字符Word的多个词组或者短语;

步骤B14,对步骤B13中查找出的词组或者短语,以字符Word为中心位置,依次统计和字符Word距离分别为1、2、3的字符在该位置出现的频率,对于频率小于阀值Threshold的字符T,则将词组或者短语中,从T开始的远离字符Word方向的字符清除;最后,将处理后长度不小于2的词组或者短语作为候选词组或者短语;

步骤B15,统计步骤B14中候选词组或者短语频率,将频率不小于阀值Threshold-2的候选词组或者短语作为候选词组或者短语;

其中,阀值Threshold-2根据经验值而预先设置;

步骤B16,若当前处理的是正确字符,即Word=RWord时,则将该些候选词组或者短语加入到字符集RPhrase中;否则,若当前处理的是错别字符,即Word=WWord时,则将该些候选词组或者短语分别顺序加入到可能错误词组或者短语字符集PossibleWPhrase和字符集Processed中,并将这些词组或者短语在字符集Processed中的起始位置和末尾位置记录在二元组Position(WWord)中,置该错别字符WWord的标记为True,转步骤C1;

其中,字符集RPhrase,用于存储步骤B15中找到的候选词组或者短语,这些词组或者短语是包含了正确的字符,字符集RPhrase的初值为空;

字符集PossibleWPhrase,用于将候选词组或者短语分别顺序加入到可能错误词组或者短语字符集,字符集PossibleWPhrase的初值为空;

字符集Processed,用于存放步骤B14和步骤B15中已经找到的包含错别字符WWord的候选词组或者短语,字符集Processed的初值为零; Position(WWord)为一个二元组,第一项为包含错别字符WWord的候选词组或者短语在字符集Processed中的起始位置,第二项为该些候选词组或者短语中的最后一个字符在字符集Processed中的位置;

步骤B17,从正确字符RWord的错别字符集C(RWord)中按顺序取出一个未处理过的错别字符WWord;

步骤B18,如果这个错别字符WWord标记为False,则转步骤B12;否则,执行步骤B19;

步骤B19,读出二元组集Position(WWord)中的二元组数据,并根据二元组数据在字符集Processed中找到包含错别字符WWord的候选词组或者短语,并加入到该错别字符WWord的可能错误词组或者短语集PossibleWPhrase中。

5.根据权利要求4所述的错别字符处理方法,其特征在于,所述步骤C1包括下列步骤:步骤C11,将可能错误词组或者短语集PossibleWPhrase中的词组或者短语元素转换为可能正确的词组或者短语A,并与字符集RPhrase中的词组或者短语元素B按顺序地逐个比较,得到包含正确字符RWord和错误字符WWord的极大公共子词组对或者短语对,将该极大公共子词组对或者短语对加入极大公共子词组对或者短语对字符集LargestPhrase;

其中,字符集LargestPhrase,用于存储正确字符RWord和错误字符WWord的极大公共子词组对或者短语对的字符集,其初值为空;

步骤C12,顺序地从极大公共子词组对或者短语对字符集LargestPhrase中取出一个词组对或者短语对元素Q;

步骤C13,如果该词组对或者短语对元素Q的长度||Q||≥2,则在包含该词组对或者短语对的大规模语料库File中提取它的上下文环境,无重复加入字符集Context;

其中,字符集Context中的词组对或者短语对是对字符集LargestPhrase中的每个词组对或者短语对提取上下文环境后得到的,所述字符集Context的初值为空;

步骤C14,如果极大公共子词组对或者短语对字符集LargestPhrase中的词组对或者短语对已经取完,则执行步骤D1;否则转步骤C11继续比较。

6.根据权利要求5所述的错别字符处理方法,其特征在于,所述步骤D1包括下列步骤:步骤D11,对字符集Context中的词组对或者短语对元素,进行迭代,将错误部分均相同的词组对或者短语对删除,只保留一条词组对或者短语对,直到字符集Context不再变化为止,得到筛选后的分别包含正确字符和对应错别字符的词组对或者短语对。

7.根据权利要求6所述的错别字符处理方法,其特征在于,所述步骤E1包括下列步骤:步骤E11,为字符集Context中的词组对或者短语对元素,建立四元组:<正确字符 错别字符 正确词组或者短语 错误词组或者短语>,并加入到字符集Siyunzu_Set中;

其中,字符集Siyunzu_Set为最后的输出词典,其中的每一项均为四元组形式;

步骤E12,清空字符集PossibleWPhrase,LargestPhrase和Context中的内容;

步骤E13,如果C(RWord)中还有字符没有处理过,则转步骤B16;否则,执行步骤E14;

步骤E14,清空字符集RPhrase中的内容;

步骤E15,如果还有字符RWord未曾处理,转步骤A12;否则,输出错别字符词典,即字符集Siyunzu_Set中的元素,结束。

8.根据权利要求4所述的错别字符处理方法,其特征在于,所述词组或者短语以字符Word为中心,左右各三个字;

如果不足三个,则取最大数。

9.根据权利要求8所述的错别字符处理方法,其特征在于,所述步骤B14包括下列步骤:步骤B141,对于距离字符Word为1的字符W1,在词组或者短语中计算他们紧邻Word的次数P(W1/Word);

步骤B142,对于距离字符Word为2的字符W2,则统计它紧邻字符Word和W1出现的次数P(W2/Word.W1); 步骤B 143,对于距离字符Word为3的字符W3,则统计它紧邻字符Word,W1和W2出现的次数P(W3/Word.W1.W2)。

10.根据权利要求6所述的错别字符处理方法,其特征在于,所述步骤D11包括下列步骤:其中,C,D,E均为字符集Context中的词组对或者短语对;

步骤D111,如果C是D的子词组对或者短语对,对于字符集Context中的所有不同于C的词组对或者短语对E,如果C都不是(D∩E)RWord的子词组对或者短语对,则在字符集Context中保留C,删除D;

步骤D112,如果C是D的子词组对或者短语对,如果Context中的存在一个不同于C的词组对或者短语对E,使得C是(D∩E)RWord的子词组对或者短语对,则在字符集Context中加入词组对或者短语对D∩E,删除C,D,E;

步骤D113,如果C不是D的子词组对或者短语对,但是C和D的包含正确字符RWord和错误字符WWord的极大公共子词组对或者短语对的长度分别不小于3,则认为C和D中,都包含有相同的且具有完整意思的词组对或者短语对,则在字符集Context中添加公共子词组对或者短语对(C∩D)RWord,删除C和D。

11.一种错别字符处理系统,包括错别字符训练集库和含错别字符的大规模语料库,其特征在于,还包括:第一创建模块,用于根据错别字符训练集库,为训练集中每个正确字符建立其对应的错别字符集合,其中所述错别字符训练集库包括正确字符和错别字符,并表达了正确字符和错别字符的对应关系;

检索查找模块,用于在含错别字符的大规模语料库中,分别找出包含所述正确字符和错别字符的短语或词组;

筛选模块,用于找出正确字符和错别字符的对应关系,建立词组对或者短语对;

优化模块,用于优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到筛选后的分别包含正确字符和对应错别字符的词组对或者短语对。

12.根据权利要求11所述的错别字符处理系统,其特征在于,还包括,错别字符词典,其中所述错别字符词典包括正确字符、错误字符、筛选后的分 别包含正确字符和对应错别字符的词组对或者短语对;

第二创建模块,用于将筛选后的分别包含正确字符和对应错别字符的词组对或者短语对加入到所述正确字符的错别字符词典。

说明书 :

一种错别字符处理方法和系统

技术领域

[0001] 本发明涉及人工智能计算机领域中的自然语言处理技术领域,特别是涉及从错别字符训练集库和含错别字符的大规模语料库中识别错别字符词组或者短语和创建错别字符词典的一种错别字符处理方法和系统。

背景技术

[0002] 计机字符校对系统(如中文校对系统)是应用自然语言处理技术自动查出文本中的输入错误。它主要有两项功能:一,查错,即找出文本中错别字符的位置;二,纠错,即提供一个修改建议的候选词集(或称词典)。
[0003] 计算机人机对话是计算机的一种工作方式,即计算机操作员或用户与计算机之间,通过控制台或终端显示屏幕,以对话方式进行工作。在第三代计算机人机对话中,人机交流的内容主要是人习惯的自然交流语言,交流方式也是人习惯的自然语言交流方式(包括语音和手写等,甚至包括人的表情、手势、步态等)。
[0004] 错别字符的识别在计算机字符校对系统(如中文校对系统)和计算机人机对话等系统中是一个重要环节。其中最重要的是建立错别字符词典(或称错别字符词典库,如错别词词典),如果用纯手工整理的方法,则需要耗费大量的人力和财力。在实际的工作过程中,需要查阅的语料库和最后整理出来的词典可能非常庞大,因此错别字符词典的整理工作需要大量的时间和精力,很明显,传统的手工方法无法完成这样的整理工作。
[0005] 因此,迫切需要一种错别字符词组或者短语识别和建立错别字符词典的错别字符处理方法和系统,从而提高错别字符词典的生成效率。

发明内容

[0006] 本发明目的在于提供一种错别字符处理方法和系统,其能够识别错别字符词组或者短语,并建立错别字符词典,从而提高错别字符词典的生成效率。
[0007] 为实现本发明目的而提供的一种错别字符处理方法,包括如下步骤:
[0008] 步骤A1,根据错别字符训练集库,为训练集中每个正确字符建立其对应的错别字符集合;
[0009] 步骤B1,在含错别字符的大规模语料库中,分别找出包含所述正确字符和错别字符的短语或词组;
[0010] 步骤C1,找出正确字符和错别字符的对应关系,建立词组对或者短语对;
[0011] 步骤D1,优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到所述正确字符相应的错别字符的词组对或者短语对。
[0012] 较佳地,所述的错别字符处理方法,还包括下列步骤:
[0013] 步骤E1,将所述正确字符相应的错别字符的词组对或者短语对加入到所述正确字符的错别字符词典。
[0014] 为实现本发明目的,还提供一种错别字符处理系统,包括错别字符训练集库和含错别字符的大规模语料库,以及错别字符词典,还包括:
[0015] 第一创建模块,用于根据错别字符训练集库,为训练集中每个正确字符建立其对应的错别字符集合;
[0016] 检索查找模块,用于在含错别字符的大规模语料库中,分别找出包含所述正确字符和错别字符的短语或词组;
[0017] 筛选模块,用于找出正确字符和错别字符的对应关系,建立词组对或者短语对;
[0018] 优化模块,用于优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到所述正确字符相应的错别字符的词组对或者短语对。
[0019] 较佳地,本发明所述的错别字符处理系统,还包括第二创建模块,用于将所述正确字符相应的错别字符的词组对或者短语对加入到所述正确字符的错别字符词典。
[0020] 本发明的有益效果是:本发明的错别字符处理方法和系统,其能够识别错别字符词组或者短语,并建立错别字符词典,从而提高错别字符词典的生成效率,其大大缓解了手工整理错别字符词典所耗费的人力和财力。

附图说明

[0021] 图1是本发明实施例的错别字符处理方法流程图;
[0022] 图2是本发明错别字符处理方法的一具体实施例流程图;
[0023] 图3是本发明错别字符处理系统结构示意图。

具体实施方式

[0024] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种错别字符处理方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0025] 本发明是在错别字符训练集库(或称错别字符训练集种子库)和含错别字符的大规模语料库的基础上,提供一种错别字符词组或者短语识别和建立错别字符词典的错别字符处理方法和系统,其解决手工整理所耗费的人力和财力。
[0026] 在本发明实施例中,以从错别汉字字符训练集库和含错别汉字词组或者短语的大规模汉字语料库中识别错别汉字词组或者短语和创建错别词词典为例,说明本发明的错别字符处理方法和系统,但应当说明的是,本发明同样适用于汉字以外的其它语言,如英语等,其只需要设置错别字符训练集库为错别英语等的字符训练集库和含错别英语等的大规模英语等的语料库即可。因此,本发明所述的字符包括汉语字符等全世界的各种语言字符,其并不限定于汉语字符。
[0027] 为了实现上述发明目的,根据本发明的一个方面,提供了一种错别字符处理方法,包括下列步骤:
[0028] 步骤S100,根据错别字符训练集库,为训练集中每个正确字符建立其对应的错别字符集合;
[0029] 步骤S200,在含错别字符的大规模语料库中,分别找出包含所述正确字符和错别字符的短语或词组;
[0030] 步骤S300,找出正确字符和错别字符的对应关系,建立词组对或者短语对;
[0031] 步骤S400,优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到所述正确字符相应的错别字符的词组对或者短语对;
[0032] 步骤S500,将所述正确字符相应的错别字符的词组对或者短语对加入到所述正确字符的错别字符词典(或称错别字符词典库)。
[0033] 下面以一具体实施方式,进一步详细说明本发明错别字符处理方法中步骤S100~S500的详细实施过程。
[0034] 本发明这一详细实施例中,需要设置两个库:错别字符训练集库(或称错别字符训练集种子库)和含错别字符的大规模语料库。并经过本发明实施例的错别字符处理方法和系统处理后,得到一错别字符词典(或称错别字符词典库)。
[0035] 其中,错别字符训练集库可以是手工整理出来的,也可以是通过其他方法(如计算机检索筛选)生成,或者为现有的各种错别字符训练集数据库,或者在现有的训练集数据库基础上添加错别字符生成的。
[0036] 作为一种可实施方式,该错别字符训练集库中的每一项为二元组的形式,为:
[0037] <正确字符 错别字符>
[0038] 例如:充值的“充”对应的错别字可能有“冲”,“茺”等,则训练集中应包含二元组:
[0039] …
[0040] <充冲>
[0041] <充茺>
[0042] …
[0043] 同样,含错别字符的大规模语料库也可以是手工整理出来的,也可以是通过其他方法(如计算机检索筛选)生成,或者为现有的各种含错别字符的大规模语料数据库,或者在现有的大规模语料数据库基础上添加语料生成的。
[0044] 作为一种可实施方式,该得到的错别字符词典的每一项可以是四元形式,为:
[0045] <正确字符 错别字符 正确词组或正确短语 错别词组或错误短语>
[0046] 其中正确词组或正确短语,错别词组或错误短语均是在大规模语料库中找到的。
[0047] 例如,<充冲>、<充茺>这两个字符二元组,经过处理得到的四元组可能包括:
[0048] …
[0049] <充冲 充值 冲值>
[0050] <充冲 充钱 冲钱>
[0051] <充茺 充值卡 茺值卡>
[0052] …
[0053] 本发明详细实施例中使用了一些符号,定义如下:
[0054] (1)若A是字符串,‖A‖表示A中所含字符的个数;
[0055] (2)若A,B均是字符串, 当且仅当A是B的子串,例如:若A=“你好”,B=“你好吗”,则A是B的字串, 成立。
[0056] (3)若A,B均是字符串,x是字符,若C是包含x的A和B的极大公共子串,则表示为C=(A∩B)x;
[0057] 例如:A=“请问你好吗”,B=“你好不好”,x=“你”,则C=(A∩B)x=″你好″。
[0058] (4)若A,B,C,D均是字符串,x是字符,C=(A∩B)x当且仅当: 且若对于D,如果有 和 则必有 即C是A和B的公共子串,
且C是极大的。
[0059] 根据本发明的一个具体实施例,如图1的流程图所示,本发明具体实施例的错别字符处理方法:
[0060] 在步骤S100中,根据错别字符训练集库,为训练集中每个正确字符建立其对应的错别字符集合的过程包括步骤:
[0061] 步骤S1:设置字符Word为空,置阀值Threshold的初值为0,执行步骤S2。
[0062] 一般地,本发明实施例所涉及的参数,如字符Word,阀值Threshold,阀值Threshold-2,如果为字符串型,如字符Word,则初值为空;如果为整数型,如阀值Threshold,阀值Threshold-2则初值为0。
[0063] 步骤S2:为训练集中的每个正确字符RWord,建立该正确字符RWord的错别字符集C(RWord);
[0064] 设置某个字符WWord∈C(RWord)当且仅当WWord是RWord的一个错别字;
[0065] 字符WWord的标记初始化为False。
[0066] 在步骤S200中,在含错别字符的大规模语料库中,分别找出包含正确字符和错别字符的短语或词组的过程中,包括步骤;
[0067] 步骤S3:取出一个未处理过的正确字符RWord,执行步骤S4。
[0068] 步骤S4:如果步骤S4是由步骤S3跳转过来的,则设置字符Word=RWord,阀值Threshold=RThreshold;否则,如果步骤S4是由步骤S10跳转过来的,则设置字符Word=WWord,阀值Threshold=WThreshold;
[0069] 其中,阀值RThreshold为在处理正确字符时使用的阀值;而阀值WThreshold为在处理错别字符时使用的阀值。
[0070] 本发明实施例中,根据实际的经验得到文档中的词,大多数情况下均为正确的,出现错误的在少数。因此对于一个词,其正确的形式应该比错误的形式出现的频率高(例如:“充值”远远高于“冲值”出现的频率)。因此在本发明实施例中预先根据经验值设置两个阀值RThreshold和WThreshold。在处理正确的字时,使用RThreshold;在处理错别字时,使用WThreshold。
[0071] 步骤S5:在大规模语料库File中检索查找出包含字符Word的多个词组或者短语。
[0072] 其中,较佳地,该词组或者短语以字符Word为中心,左右各三个字,如果不足三个,则取最大数。
[0073] 步骤S6:对步骤S5中查找出的词组或者短语,以字符Word为中心位置,依次统计和字符Word距离分别为1、2、3的字符在该位置出现的频率,对于频率小于阀值Threshold的字符T,则将词组或者短语中,从T开始的远离字符Word方向的字符清除;最后,将处理后长度不小于2的词组或者短语作为候选词组或者短语。
[0074] 频率的统计可采用如下(类似于n-gram)方法:
[0075] 步骤S61:对于距离字符Word为1的字符W1,在词组或者短语中计算他们紧邻字符Word的次数P(W1/Word);
[0076] 例如,词组或者短语中若包含:
[0077] …
[0078] “刚买的充值卡啊”
[0079] “充值了啊”
[0080] “买充值卡”
[0081] “我充钱了啊”
[0082] …
[0083] 当前的字符Word=“充”,以出现在Word右边的字为例,则这些词组或者短语中,在Word的右边,且和它的距离为1的汉字包含:“值”,“钱”,在例子中的四个词组或者短语中,“值”出现的频率为3,“钱”出现的频率为1。对于Word左边的字的计算方法相同。
[0084] 步骤S62:对于距离字符Word为2的字符W2,则统计它紧邻字符Word和W1出现的次数P(W2/Word.W1);
[0085] 例如:对于上面的词组或者短语,仍然以出现在Word右边的字为例,则在Word的右边,且和它的距离为2的汉字包含:“卡”,“了”,在例子中的四个词组或者短语中,“卡”紧邻“充值”出现的次数为2;“了”紧邻“充值”出现的次数为1,紧邻“充钱”出现的次数为1。对于Word左边的字计算方法相同。
[0086] 步骤S63:对于距离字符Word为3的字符W3,则统计它紧邻字符Word,W1和W2出现的次数P(W3/Word.W1.W2)。
[0087] 例如,对于词组或者短语:“刚买的充值卡啊”,当前的字符Word=“充”,阀值Threshold=5,则以“充”为中心,首先统计和“充”距离为1的汉字“的”和“值”在该位置出现的频率。统计后,“的”在该位置上的频率为3(3<5),则清空从“的”开始的远离“充”方向的“刚买的”三个字,“值”在该位置上出现的频率为10(10>5),则在第一轮统计中,“充值卡啊”被保留下来;第二轮中,统计和“充”距离为2的汉字“卡”在该位置上的频率,统计后,“充值卡啊”仍然被保留下来;第三轮中,统计“啊”的频率,结果为4(4<5),则“啊”被清掉;最后候选词组对或者短语对为“充值卡”。
[0088] 步骤S7:统计步骤S6中候选词组或者短语频率,将频率不小于阀值Threshold-2的候选词组或者短语作为新的候选词组或者短语。
[0089] 由于步骤S6中找到的候选词组或者短语数量很大,且有较多相同的,而且还有相当一部分不是一个意思明确的词组或者短语,因此有必要进行一些过滤,以降低系统开销。
[0090] 例如,若候选词组或者短语中包含:
[0091] ...“充值卡”“充钱”“充值卡”“好充”“没有充”“充值卡”“充钱”“没有充”...[0092] 经过对这些候选词组或者短语进行统计后,“充值卡”出现的次数为3,“充钱”和“没有充”出现的次数为2,“好充”出现的次数为1。例如,阀值为2,则将“好充”过滤掉,而剩下的“充值卡”“充钱”“没有充”加入到候选词组或者短语中。
[0093] 步骤S7中的阀值Threshold-2和步骤6中的阀值Threshold不一样,其中,步骤S6中是为字符设置的,而步骤S7中的阀值Threshold-2是为词组或者短语设置的。
[0094] 其中,阀值Threshold-2根据经验值而预先设置。
[0095] 步骤S8:若当前处理的是正确字符,即Word=RWord时,则将该些候选词组或者短语加入到字符集RPhrase中;否则,若当前处理的是错别字符,即Word=WWord时,则将该些候选词组或者短语分别顺序加入到可能错误词组或者短语字符集PossibleWPhrase和字符集Processed中,并将这些词组或者短语在字符集Processed中的起始位置和末尾位置记录在二元组Position(WWord)中,置该错别字符WWord的标记为Ture,转步骤S12。
[0096] 其中,字符集RPhrase,用于存储步骤S7中找到的候选词组或者短语,这些词组或者短语是包含了正确字符,字符集RPhrase的初值为空。
[0097] 字符集PossibleWPhrase,用于将候选词组或者短语分别顺序加入到可能错误词组或者短语字符集,字符集PossibleWPhrase的初值为空。
[0098] 字符集Processed,用于存放步骤S6和步骤S7中已经找到的包含错别字符WWord的候选词组或者短语,字符集Processed的初值为零。由于同一个字可能是多个字的错别字(例如:“冲”可能既是“充”的错别字,也是“聪”的错别字),因此当前处理的错别字WWord之前也可能被处理过,为了使不至于使用步骤S6和S7重新在语料文件中查找候选词组或者短语,则将包含当前错别字的候选词组或者短语按顺序装入到字符集Processed中,并使用Position(WWord)记录这个位置,以便后面重新遇到该错别字符WWord时,可以迅速从Position(WWord)中提出包含错别字符WWord的候选词组或者短语在字符集Processed中的位置,并提取这些候选词组或者短语。
[0099] Position(WWord)为一个二元组,第一项为包含错别字符WWord的候选词组或者短语在字符集Processed中的起始位置,第二项为该些候选词组或者短语中的最后一个字符在字符集Processed中的位置。
[0100] 步骤S9:从正确字符RWord的错别字符集C(RWord)中按顺序取出一个未处理过的错别字符WWord。
[0101] 步骤S10:如果这个错别字符WWord标记为False,则转步骤S4;否则,执行步骤S11。
[0102] 步骤S11:读出二元组集Position(WWord)中的二元组数据,并根据二元组数据在字符集Processed中找到包含错别字符WWord的候选词组或者短语,并装入到该错别字符WWord的可能错误词组或者短语集PossibleWPhrase中。
[0103] 在步骤S300中,找出正确字符和错别字符的对应关系,建立词组对或者短语对的过程包括步骤:
[0104] 步骤S12:将可能错误词组或者短语集PossibleWPhrase中的词组或者短语元素转换为可能正确的词组或者短语A,并与字符集RPhrase中的词组或者短语元素B按顺序地逐个比较,得到包含正确字符RWord和错误字符WWord的极大公共子词组对或者短语对:(A∩B)RWord,将(A∩B)RWord加入极大公共子词组对或者短语对字符集LargestPhrase。
[0105] 其中,字符集LargestPhrase,是用于存储正确字符RWord和错误字符WWord的极大公共子词组对或者短语对的字符集,其初值为空。
[0106] 由于字符集PossibleWPhrase中存放的是包含有错别字WWord的词组或者短语,则将该些词组或者短语中的错别字WWord替换为其对应的正确汉字RWord,那么替换后的词组或者短语A即为可能正确的词组或者短语,例如:PossibleWPhrase可能包含:“冲值多少钱”,当前WWord为“冲”,RWord为“充”,则将“冲值多少钱”中的“冲”替换为“充”,转换后的词组或者短语为“充值多少钱”,则这个词组或者短语就是可能正确的词组或者短语。
[0107] 例如:“买充值卡”∈RPhrase(″充″),“冲值多少钱”∈PossibleWPhrase(″冲 ″)。将“冲值多少钱”转换为“充值多少钱”,则包含“充”的“买充值卡”和“充值多少钱”的极大公共子词组对或者短语对为“充值冲值”;其中正确的汉字RWord=“充”,而它对应的一个错别字WWord=“冲”。
[0108] 步骤S13:顺序地从极大公共子词组对或者短语对字集集LargestPhrase中取出一个词组对或者短语对元素A。
[0109] 步骤S14:如果该词组对或者短语对元素A的长度‖A‖≥2,则在包含该词组对或者短语对的大规模语料库File中提取它的上下文环境,无重复加入字符集Context。
[0110] 其中,字符集Context中的词组对或者短语对是对字符集LargestPhrase中的每个词组对或者短语对提取上下文环境后得到的。因为LargestPhrase中的有些词组对或者短语对可能不是意思完整的词组对或者短语对,这不是本发明所希望得到的,因此有必要将字符集LargestPhrase中词组对或者短语对的上下文环境提取出来,得到意思较为明确的词组对或者短语对,并将这些意思明确的词组对或者短语对加入到字符集Context中。
[0111] 所述字符集Context的初值为空。
[0112] 所述上下文环境可以为在词组对或者短语对前后各提取两个汉字的公共前后缀,如不足两个汉字,则取最大。
[0113] 例如:LargestPhrase中词组对或者短语对=“充话冲值”,提取上下文环境后的完整短语为“充话费冲话费”,其中“充话费”和“冲话费”均包含在语料库中,“费”是“充话”和“冲话”的公共后缀。
[0114] 步骤S15:如果极大公共子词组对或者短语对字符集LargestPhrase中的词组对或者短语对已经取完,则执行步骤S16;否则转步骤S12继续比较。
[0115] 在步骤S400中,优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到该正确字符相应的错别字符的词组对或者短语对的过程,包括步骤;
[0116] 步骤S16:对字符集Context中的词组对或者短语对元素,进行迭代,将错误部分均相同的词组对或者短语对删除,只保留一条词组对或者短语对,直到字符集Context不再变化为止,得到所述正确字符相应的错别字符的词组对或者短语对。
[0117] 所述步骤S16包括如下步骤,其中,A,B,C均为字符集Context中的词组对或者短语对。
[0118] 步骤S161:如果A是B的子词组对或者短语对,对于字符集Context中的所有不同于A的词组对或者短语对C,如果A都不是(B∩C)RWord的子词组对或者短语对,则在字符集Context中保留A,删除B;
[0119] 即,若 且 都有 则在Context中保留A,删除B。
[0120] 例如:当前RWord=“充”,WWord=“冲”,若A=“充钱冲钱”,B=“充钱了冲钱了”,则 如果Context中任何一个短语C,(B∩C)RWord都不包含有“充钱”这两个字,则认为在Context中,B:“充钱了冲线了”就是多余的,而A:“充钱 冲钱”就已经是一个完整的词组对或者短语对了,它能够完全表达B,所以可以在Context中删除B。
[0121] 步骤S162:如果A是B的子词组对或者短语对,如果Context中的存在一个不同于A的词组对或者短语对C,使得A是(B∩C)RWord的子词组对或者短语对,则在字符集Context中加入词组对或者短语对B∩C,删除A,B,C;
[0122] 即,若 且 使得 则在Context中加入B∩C,删除A,B,C;
[0123] 例如:当前RWord=“充”,WWord=“冲”,若A=“充话 冲话”,B=“充话费50元 冲话费50元”,则 如果Context中存在一个词组对或者短语对C=“昨天充话费了昨天冲话费了”,则(B∩C)RWord=“充话费 冲话费”,A=“充话 冲话”恰好是(B∩C)RWord的子词组对或者短语对,则认为“充话费冲话费”是一个具有完整意思的词组对或者短语对,而认为A,B,C要么不完整,要么多余,所以可以在Context中删除A,B,C,添加词组对或者短语对“充话费 冲话费”。
[0124] 步骤S163:如果A不是B的子词组对或者短语对,但是A和B的包含字符集RWord和字符集WWord的极大公共子词组对或者短语对的长度分别不小于3,则认为A和B中,都包含有相同的且具有完整意思的词组对或者短语对,则在字符集Context中添加公共子词组对或者短语对(A∩B)RWord,删除A和B。
[0125] 即,若 且‖(A∩B)RWord‖≥3,则在Context中加入(A∩B)RWord,删除A和B。
[0126] 例如:当前RWord=“充”,WWord=“冲”,若A=“为什么不能充 为什么不能冲”,B=“怎么不能充呢怎么不能冲呢”,则(A∩B)RWord=“不能充 不能冲”,则认为“不能充 不能冲”是一个具有完整意思的词组对或者短语对,它能够替代A和B,因此在字符集Context中加入公共子词组对或者短语对“不能充 不能冲”,删除A和B。
[0127] 例如:若字符集Context中包含“充值 冲值”,“充值卡卡号 冲值卡卡号”,“充值卡密码 冲值卡密码”,由于:“充值 冲值”“充值卡卡号 冲值卡卡号”,且“充值 冲值”“充值卡 冲值卡”=“充值卡卡号 冲值卡卡号”∩“充值卡密码 冲值卡密码”,则在Context中加入“充值卡 冲值卡”,而删除“充值 冲值”,“充值卡卡号 冲值卡卡号”,“充值卡密码 冲值卡密码”。
[0128] 在步骤S500中,将所述正确字符相应的错别字符的词组对或者短语对加入到该正确字符的错别字符词典的过程,包括步骤:
[0129] 步骤S17:为字符集Context中的词组对或者短语对元素,建立四元组:<正确字符 错别字符 正确词组或者短语 错误词组或者短语>,并加入到字符集Siyunzu_Set中。
[0130] 其中,字符集Siyunzu_Set为最后的输出词典,其中的每一项均为四元组形式。
[0131] 例如,若当前的RWord=“惠”,WWord=“费”,Context中包含有:“优惠活动优费活动”,则在Siyunzu_Set中添加如下形式的一项四元组:
[0132] <惠 费 优惠活动 优费活动>
[0133] 该四元组满足上文中的定义,其中正确字为“惠”,错别字为“费”,正确的词为“优惠活动”,错别词为“优费活动”。
[0134] 步骤S18:清空字符集PossibleWPhrase,LargestPhrase和Context中的内容。
[0135] 步骤S19:如果C(RWord)中还有字符元素没有处理过,则转步骤S8;否则,执行步骤S20。
[0136] 步骤S20:清空字符集RPhrase中的内容。
[0137] 步骤S21:如果还有RWord未曾处理,转步骤S2;否则,输出错别字符词典,即字符集Siyunzu_Set中的元素,结束。
[0138] 相应地,本发明还提供一种错别字符处理系统10,其包括错别字符训练集库11和含错别字符的大规模语料库12,以及错别字符词典13。
[0139] 其还包括第一创建模块14,用于根据错别字符训练集库11,为训练集11中每个正确字符建立其对应的错别字符集合;
[0140] 检索查找模块15,用于在含错别字符的大规模语料库12中,分别找出包含所述正确字符和错别字符的短语或词组;
[0141] 筛选模块16,用于找出正确字符和错别字符的对应关系,建立词组对或者短语对;
[0142] 优化模块17,用于优化所述词组对或者短语对,将所述词组对或者短语对中重复表述的词组对或者短语对筛选掉,得到所述正确字符相应的错别字符的词组对或者短语对;
[0143] 第二创建模块18,用于将所述正确字符相应的错别字符的词组对或者短语对加入到所述正确字符的错别字符词典13。
[0144] 本发明实施例的错别字符处理系统10,以与本发明实施例的错别字符处理方法相同的过程进行错别字符处理,因此,在本发明实施例中,不再一一详细描述。
[0145] 应当说明的是,所述各字符集的实现可以根据具体需要选择不同的数据结构,比如链表,数组等等,其都是本发明实施例的一种可实现方式,其并不构成对本发明保护范围的限定。
[0146] 根据如上描述,本发明能够从大规模语料库中识别错别字符词组或者短语,且可以通过改变阀值RThreshold和WThreshold的大小,可以调整执行的效率和结果,以使效果达到最佳。
[0147] 作为一种可实施方式,本发明的错别字符处理方法和系统可以采用计算机C#语言实现,在visual studio 2008集成开发环境中编译;计算机CPU为奔腾4,2.4GHz,运行的操作系统平台为windows XP;实验数据量为25万条中文短信语料,运行时间为19分钟。
[0148] 实验输出为四元组的错别词词典,格式为:
[0149] <正确字 符错别字符 正确词组或者短语 错别词组或者短语>
[0150] 如表1所示,为<充冲>所对应的错别字符识别实验结果的一个片段。(其中,正确的汉字为:充,错别字为:冲)
[0151] 表1:错别字识别示例
[0152]正确字 错别字 正确词组或者短语 错别词组或者短语
充 冲 17号充 17号冲
充 冲 23号前充 23号前冲
充 冲 2号充的 2号冲的
充 冲 6充 6冲
充 冲 奥运喜充天 奥运喜冲天
充 冲 帮别人充话费 帮别人冲话费
充 冲 帮我充 帮我冲
充 冲 包充值 包冲值
充 冲 保留期不充 保留期不冲
充 冲 本机充值 本机冲值
充 冲 并充值了一百元 并冲值了一百元
充 冲 补充 补冲
充 冲 不帮我充 不帮我冲
充 冲 不充 不冲
充 冲 不充话费 不冲话费
充 冲 不可以充话费 不可以冲话费
充 冲 不可以充值 不可以冲值
充 冲 不能充 不能冲
充 冲 不是充 不是冲
充 冲 不是说充100 不是说冲100
充 冲 不想充值 不想冲值
充 冲 才充的话费 才冲的话费
充 冲 才充了 才冲了
充 冲 才充值 才冲值
充 冲 才能充 才能冲
充 冲 彩信充印业务 彩信冲印业务
充 冲 充100 冲100
充 冲 充30元话费 冲30元
充 冲 充50元话费 冲50元
充 冲 充QQ币 冲QQ币
充 冲 充q币 冲q币
充 冲 充Q币 冲Q币
充 冲 充啊 冲啊
充 冲 充本 冲本
充 冲 充不到 冲不到
充 冲 充不进 冲不进
充 冲 充不了 冲不了
充 冲 充不上 冲不上
充 冲 充到 冲到
充 冲 充的 冲的
充 冲 充的30元话费 冲的30元话费
充 冲 充的50元话费 冲的50元话费
充 冲 充的电话费 冲的电话费
充 冲 充的话费 冲的话费
充 冲 充点话费 冲点话费
充 冲 充电话费 冲电话费
充 冲 充多少 冲多少
充 冲 充费 冲费
充 冲 充进 冲进
充 冲 充了 冲了
充 冲 充值卡 冲值卡
[0153] 表1中的第1列为一个正确的汉字,如(充);第2列为它所对应的一个错别字,如(冲);第3列为正确的词组(或短语);第4列为对应的错别词组(或短语)。
[0154] 根据试验结果,调整适当的参数阀值RThreshold和WThreshold,本方法和系统的召回率在95%以上,准确率也能控制在70%以上。但是在实际应用中,高召回率可以发现更多的错别字词,因此我们通常倾向于高召回率,而适当牺牲准确率。通常在应用时,识别出来的错别字词也需要人工检查。
[0155] 该发明可广泛应用于字符校对系统(如中文校对系统),机器翻译系统和人机对话系统等方面。
[0156] 通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
[0157] 以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。