一种输入过程中的中文术语自动纠错方法

文档序号:6481452阅读:489来源:国知局
专利名称:一种输入过程中的中文术语自动纠错方法
专利说明一种输入过程中的中文术语自动纠错方法 所属领域 本发明涉及计算机文本自动纠错的技术领域,特别是涉及一种用户输入过程中,中文术语的自动纠错技术。

背景技术
随着互联网技术应用的日趋广泛,网络学习已成为人们获得和学习知识的主要手段之一,这一过程的完成需要用户通过计算机输入信息。对于中文用户,一般来说,用户输入的是一字符串,该字符串经过某种中文输入法软件的处理后转换为一串汉字串。无论是用户输入还是中文输入法软件的处理都可能产生错误,于是需要自动纠错的技术处理这些错误。申请人经过查新,检索到三篇与本发明相关的属于中文文本自动纠错领域的专利,它们分别是 1.用于对表意字符的输入字符串进行自动纠错的方法; 2.一种生成纠错数据库的方法、自动纠错的方法和系统; 3.形成个性化纠错模型的方法及个性化纠错的输入法系统。
在上述专利1中,发明人提出了用于对表意字符的输入字符串进行自动纠错的方法,该套方法有以下特点 1)使用主题词典对输入字符串分段,确定不匹配的主题词典子字符串即错误子字符串; 2)使用一般词典对不匹配的主题词典子字符串进行分段,对每一段分别纠错。统计每种分段情况下纠错结果中汉字的个数,并以此计算总的编辑距离; 3)定义实用成本概念,并以该指标判断优选纠错结果。
在专利2中,发明人提出了一种生成纠错数据库的方法和装置以及一种自动纠错的方法和系统,并实现了该系统。该发明通过记录和收集包括有用户输入过程信息的日志,从中将用户手动纠错的信息挖掘出来,生成纠错数据库,以用于实现对更多用户更准确的自动纠错,还可以用于实现对该用户的个性化自动纠错。
在专利3中,发明人公开了一种形成个性化纠错模型的方法,此套方法过对当前纠错模型进行调整来得到符合用户输入习惯的个性化纠错模型,以用于实现对用户的输入序列进行更准确的个性化自动纠错。另外,收集了多方面的信息,纠错范围包括类似南方模糊音的认知错误,还包括非认知错误。由于综合考虑了输入设备布局、输入设备质量等因素,使得本发明可以适用于PC键盘、迷你键盘等不同的输入设备。
根据上述查新,现有技术与输入过程中的中文术语纠错方法主要有以下几方面的不同 1.现有专利研究面向对象为自然语言构成的文本输入,而本方法针对中文术语的相关研究; 2.现有专利对于判断为正确的输入不会做进一步处理,而本方法则对正确的输入进行进一步地补全处理,协助认知水平有限的用户对系统的使用; 3.现有专利在对错误进行处理时,没有利用用户所使用输入法软件的工作特点,而是进行以汉字为单位的纠错;本方法中结合了输入法软件的特点进行纠错。


发明内容
根据上述现有技术存在的缺陷或不足,本发明提供了一种基于网络学习环境的中文术语自动纠错的方法。包括以下几方面内容 1.补全与纠错相结合的机制; 研究目的根据用户的输入,对用户进行补全或纠错提示。
研究背景根据用户输入是否正确,对用户的输入进行补全处理或纠错处理,以便对用户进行合理的提示,帮助用户构造正确的中文术语的输入。
本发明的解决策略 I.将用户的输入看作是一个“词袋”,词袋中的每一个元素称为一个“词”,也就是图1中的“term”。这个term可能的形式有三种汉字串、字母串或者字母汉字混合串。它是纠错的基本单位; I.采用Bloom滤波器的结构快速判断该Term是否是一个合法的术语,如果是,将该Term进行术语补全;否则对其进行术语纠错; II.术语补全其主要作用是对正确的短术语进行补全提示光纤→单模光纤|多模光纤 1)、应用工具Pinyin4j得到Term中各个汉字的全拼及音调,并分别将全拼、音调依照Term中汉字的排列顺序进行排列组合,得到该Term的拼音串和音调串; 2)、对转换为的拼音串进行匹配及查找,已得到术语补全的术语提示结果。
III.术语纠错其主要作用是对错误的输入进行纠正已得到最接近用户本意的合法术语提示项 1)、还原出用户原本的输入,也就是还原出term进入计算机时未经输入软件处理前的可能字符组合; 2)、对每一种可能的原始输入组合进行编辑,编辑的过程即为改正错误的过程,编辑结果所构成的集合应包含用户的本意输入,或者说包含正确的输入; 3)、利用编辑过的字符串进行检索,保留那些能够表示合法的术语的字符串,并把该字符串过表示的术语作为候选术语; 4)、对这些候选术语进行排序,使得最接近用户本意的术语排在候选词队列的最前面。
2.Bloom滤波器判断用户输入是否属于合法术语库的机制 研究目的判别用户输入是否正确。
研究背景在对用户输入进行纠错处理之前,需要首先判断该用户输入是否正确,即该输入是否是合法的术语。针对不同的判断结果,需要进行不同的处理。
本发明的解决策略 参数选取机制为 khash函数的个数; mBloom滤波器的长度; n构建Bloom滤波器的集合中元素的总个数。
Bloom滤波器向量长度的确定Bloom滤波器的构造集合是术语库中的979个术语。根据Bloom滤波器错误率的估计公式(公式1),可以看出错误率由Bloom滤波器的长度(比特位的个数)和集合大小之比来决定。论文中需要错误率约为0.5%,可以得出公式中m/n应为16,又n=979,所以m约为979*16=15664,为了减少hash映射的冲突,这里选取最接近于15664的质数15667。
Hash函数个数的确定为了保证理论上的最小错误率,需要对选取的hash函数的个数进行控制,使用公式2可以计算出,最佳的hash函数的个数应为0.7*16=11.2,即hash函数的个数应为11或12。这说明在构建Bloom滤波器时,集合中的每一个term需要计算11或12个hash地址进行插入;同时在使用Bloom滤波器时,每一个用户输入的term也需要计算11或12个hash映射值。为论证hash函数的个数,对hash函数个数对错误率的影响进行对比试验,实验结果表明当hash函数的个数比较少的时候,hash函数数量的变化会对Bloom滤波器错误率产生比较大的影响。当hash函数的个数增加时,Bloom滤波器的错误率会迅速减少。但同时随着hash函数个数的增大,Bloom滤波器错误率的下降速率会迅速减小。根据观察实验结果可以看出当hash函数的个数在3左右时,Bloom滤波器的错误率随受hash函数个数的影响就很小了,而且此时Bloom滤波器的错误率在0.5%左右浮动。为了同时保证Bloom滤波器的错误率约为0.5%,以及高效的使用效率,本方法中将hash函数的个数定为3。
Hash函数的选择目前比较经典的hash函数有FNV1算法、旋转hash及其替代方法、Bernstein’s hash、Pearson’s hash、CRC hash、Universal hash、Zobrist hash、FVN、Thomas Wang的算法、RS hash、JS算法、PJW算法、ELF算法、BKDR算法、SDBM算法、DJB算法、DEK算法、AP算法、BP算法、取模算法。需要从这些hash函数中选出3个独立无关的hash函数构成构造Bloom滤波器的hash函数表。做实验,将以上hash函数以3为单位做组合,并将每一种组合进行测试,比较得出可以使构造而得的Bloom滤波器错误率最小的一组hash函数,这三个hash函数为取模算法、PJW算法和DJB算法。用这三个函数构造出的Bloom滤波器错误率约为0.6%,最近理论推导结果。
Bloom滤波器的构造机制为 Step1一次将合法术语库中的术语全部读出,形成术语队列,构成构建Bloom滤波器的元素集合; Step2判断是否已经读到属于队列的尾部,如果是,结束;如果不是,进入step3; Step3另当前指针所指向的术语依次经过取模hash、PJW hash、DJB hash的计算,并得到三个在0-15666的数字,分别令这三个数字所对应的Bloom滤波器中的位置处值为“1”。回到step2; 基于Bloom滤波器判断用户输入是否合法的工作机制为 Step1令用户输入依次经过取模hash、PJW hash、DJB hash的计算,得到三个0-15666的整数; Step2检查Bloom滤波器中对应于上述三个整数的位置,如果对应位置处所有的值均为“1”,则判断该用户输入合法;否则判断为不合法。
3.术语补全机制 研究目的对正确的术语进行补全操作,并对判断为正确而实际错误的术语进行前缀匹配。
问题背景对于认知水平有限的用户,往往在术语输入过程中对准确的术语表达有偏差,而只能输入属于同一范围内的比较简短的术语,所以该方法中利用补全机制对用户进行长术语的提示。同时,由于Bloom滤波器存在一定的假阳性,该方法为了弥补这个假阳性可能造成的错误,利用补全机制中的前缀匹配对错误的术语进行纠正。
本发明的解决方法 分簇将具有相同属性的元素归在同一集合中。
属性包括拼音串、音调串。
音调串令汉语中的四个音调分别对应于1-4四个数字,轻声对应于数字5。对于多个汉字,将各个汉字的音调所对应的数字依照汉字顺序连接成串,称为音调串。
首先根据术语的属性对合法术语库中的术语进行第一类分簇 第一类分簇包含两层 第一层分簇为将合法术语所对应的全拼拼音作为第一属性,每一种第一属性分别代表一个大分簇,并称为该分簇的标签。大分簇的特点为标签所对应的拼音串是该分簇中所有术语全拼拼音串的子串或全部。
第二层分簇为在每一个大分簇中,利用第二个属性音调串进行第二层分簇。对于一个特定的大分簇,属性音调串指的是术语中对应于该大分簇标签所在子串的音调或者音调串。将具有相同音调串属性的术语归为同一小分簇。
分簇结果如图2所示。
其次将所有分簇组织在Trie树结构当中,以便对补全结果进行检索匹配,或进行前缀匹配 Trie树的组织过程如图3所示,其节点结构如图4所示,构建机制为 Step1令当前节点为Trie树的根节点;当前转移条件为插入词的第一个字母; Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则生成一个新的节点,令当前节点数组中代表当前转移条件的单元指向这个新生成的节点,同时令当前节点为这个新节点,进入Step3; Step3如果当前转移条件为检索词的最后一个字母,则进入step4;若不是,则令当前转移条件为插入词的下一个字母,回到Step2。
Step4如果当前分簇是待插入分簇的最后一个分簇,则构建过程结束;若果不是,取出下一个分簇,回到Step1。
Trie树的检索机制 Step1令当前节点为Trie树的根节点;当前转移条件为待匹配的拼音串的第一个字母,当前音调串为待匹配术语的音调串; Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则转入Step5; Step3如果当前转移条件为检索词的最后一个字母,则查看当前节点的术语列表,若术语列表不为空,转入step3-1;若术语列表为空,完全匹配不成功,转入Step5; Step3-1沿着当前节点的术语(小)分簇列表,用当前音调串和各个分簇标志作比较,如果某一个分簇的标志和当前音调传一样,则说明完全匹配成功,返回该小分簇的术语列表作为候选术语集合;否则,说明完全匹配不成功,转入Step3.2; Step3.2返回当前节点中的所有小分簇中的术语,整体作为候选术语集合,结束; Step4如果当前转移条件不是检索词的最后一个字母,则令当前转移条件为检索词中的下一个字母,转到Step2。
Step5返回以当前节点为父节点或祖先节点的所有终结点中术语,结束; 术语纠错机制 研究目的对判断为不正确的用户输入进行纠错。
问题背景由于用户在对术语进行输入时往往依赖于某一中文输入法软件进行输入,经过软件的处理,掩盖了用户原始输入中本身包含的错误。所以在该方法中采用了还原用户原始输入的方法进行错误纠正。
本发明的解决方法 1)、建立场合用汉字的原始输入表 根据现有的拼音输入法类输入软件的工作原理,一个汉字可能的输入方式变得很多样化。举一个例子来说明对于汉字“地”,用户键入d、di、de中的任何一种都可以实现这个汉字的输入,所以我们就说汉字“地”的可能输入字符(串)有d、di、de。对应于“汉字——输入字符(串)”表中关于汉字“地”就会有三条记录(地,d)、(地,di)、(地,de)。按照这样的方法,对常用的汉字做同样的处理便可得到所需的“汉字——输入字符(串)”表。
2)、生成对应于用户输入term的原始输入组合拼音串集合 Step1令当前字符为term中的第一个字符; Step2如果当前字符是一个汉字,进入step3;否则直接保留,跳入step4; Step3查汉字-输入字符(串)表,得到所有和当前字符所指向的汉字有关的二元组,即得到该汉字所有可能的进入计算机的方式; Step4如果当前字符是term的最后一个字符,转入step5;如果不是,令当前字符为term的下一个字符,回到Step2; Step5得到所有汉字的可能输入方式后,按照term中字符的顺序,将这些可能的输入方式进行组合,得到组合拼音串集合。
3)、编辑组合拼音串,即编辑原始输入结果 编辑指对字符串中的字符进行的插入、删除、替换和易位的操作。
编辑距离编辑操作的次数。
构造编辑距离为0的编辑集合即对原始输入不做任何操作。
构造编辑距离为1的编辑集合 删除(delition(str)) Step1n为待处理的字符串(str)的长度,i=1,deletionList=null; Step2如果i<n,newStr=str
+str[i+1:n],deletionList.add(newStr),i++,继续Step2;否则,return(deletionList)。
易位(transposition(str)) Step1n为待处理的字符串(str)的长度,i=1,transpositionList=null; Step2如果i<n,newStr=str
+str[i+1]+str[i]+str[i+2:n],i++,transpositionList.add(newStr),继续step2;否则,return(transpositionList)。
替换(alteration(str)) Step1n为待处理的字符串(str)的长度,i=1,alterationList=null; Step2c=‘a’,j=0; Step3如果i<n,转入Step4;否则,return(alterationList); Step4如果j<26,newStr=str
+char(c+j)+str[i+1:n],j++,alterationList.add(newStr),继续Step4;否则,i++,回到Step2。
插入(insertion(str)) Step1n为待处理的字符串(str)的长度,i=1,insertionList=null; Step2c=‘a’,j=0; Step3如果i<n,转入Step4;否则,return(insertionList); Step4如果j<26,newStr=str
+char(c+j)+str[i:n],j++,alterationList.add(newStr),继续Step4;否则,i++,回到Step2。
构造某一个term编辑距离为1的集合edits1(term) Step1edits1=null; Step2edits1.addall(delition(term)); Step3edits1.addall(transposition(term)); Step4edits1.addall(alteration(term)); Step5edits1.addall(insertion(term)); Step6return(edits1); 4)、匹配候选项 以术语的原始出入作为术语属性,并以此进行第二类分簇 将具有相同原始输入拼音串的术语归为同一分簇,分簇结构如图5所示,每一分簇中的术语以(术语,统计出现次数)对的形式组织在分簇中。“统计出现次数”是指根据对已有文献的统计得到的某一术语在文献中的出现次数。
将所有第二类分簇组织在Trie树的结构当中,以便检索纠正候选项 Trie树的构建过程与权利要求3中Trie树的构建过程类似,在此不再赘述。
Trie树的检索机制 Step1令当前节点为Trie树的根节点;当前转移条件为待匹配的拼音串的第一个字母,当前音调串为待匹配术语的音调串; Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则结束; Step3如果当前转移条件为检索词的最后一个字母,则查看当前节点的术语列表,若术语列表不为空,返回该术语列表及出现次数列表;若术语列表为空,结束; 5)、排序 在对候选词进行排序时,应将最接近用户本意的候选项排在候选队列的最前面。引用概率的排序理论,则需要计算 arg maxcP(c/w)公式3 公式中的w代表用户输入,在这里就是term。c代表候选项,也就是在候选列表中的一个个术语。该公式指计算在term出现的情况下,哪一个候选词出现的概率最大。可是汉语中的语言现象五花八门,根本没有办法提前预知用户的输入形式,便无法估算在这个输入下某一个术语出现的概率。所以接下来引入贝叶斯理论对公式3做变形 argmaxcP(w/c)P(c)/P(w)公式4 这个公式中一共包含了三个概率用户输入(term)的出现概率、某一个候选项(术语)出现的概率以及在某一个术语出现的情况下,这个term出现的概率。虽然,term的出现我们不可预知,无法计算它的出现概率,但是对于所有的候选项这一部分的值是一样的,所以这个概率不会影响排序的结果。那么可以简化这个公式为 arg maxcP(w/c)P(c)公式5 为了计算公式5,这里引入假设编辑距离为0的候选词出现的概率远远大于编辑距离为1的候选词出现的概率。举一个例子来说明w光线;c1光纤(编辑距离为0);c2光(编辑距离为2)。根据该假设有 p(w/c1)>p(w/c2)公式6 计算公式5时,可以先对所有的候选词以编辑距离进行分类,然后对于拥有相同的编辑距离的候选词只需要计算 argmaxcP(c)公式7 对于候选词出现的概率,该方法中采用静态概率。即根据搜集的文献中,统计计算各个候选词出现的频数进而确定排序时需要的概率。



图1、术语纠错处理流程图; 图2、第一类分簇结构图; 图3、第一类Trie树的组织结构图; 图4、第一类Trie的节点结构图; 图5、第二类Trie树节点结构图; 图6、术语补全模块处理流程图; 图7、术语纠错模块处理流程图;
具体实施例方式 为了更清楚的理解本发明,以下结合附图对本发明作进一步的详细描述。
5.1补全与纠错相结合的中文术语自动纠正机制 本发明中采用了术语补全与术语纠错相结合的机制对用户输入的中文术语进行自动纠错,其原理如图1所示。该机制的思想是对合法及不合法的用户输入均进行“纠错”,并向用户提示建议列表。具体工作机制如下 I.将用户的输入看作是一个“词袋”,词袋中的每一个元素称为一个“词”,也就是图1中的“term”。这个term可能的形式有三种汉字串、字母串或者字母汉字混合串。它是纠错的基本单位; II.采用Bloom滤波器的结构快速判断该Term是否是一个合法的术语,如果是,将该Term进行术语补全;否则对其进行术语纠错; III.术语补全其主要作用是对正确的短术语进行补全提示光纤→单模光纤|多模光纤 1)、应用工具Pinyin4j得到Term中各个汉字的全拼及音调,并分别将全拼、音调依照Term中汉字的排列顺序进行排列组合,得到该Term的拼音串和音调串; 2)、对转换为的拼音串进行匹配及查找,已得到术语补全的术语提示结果。
IV.术语纠错其主要作用是对错误的输入进行纠正已得到最接近用户本意的合法术语提示项 1)、还原出用户原本的输入,也就是还原出term进入计算机时未经输入软件处理前的可能字符组合; 2)、对每一种可能的原始输入组合进行编辑,编辑的过程即为改正错误的过程,编辑结果所构成的集合应包含用户的本意输入,或者说包含正确的输入; 3)、利用编辑过的字符串进行检索,保留那些能够表示合法的术语的字符串,并把该字符串过表示的术语作为候选术语; 4)、对这些候选术语进行排序,使得最接近用户本意的术语排在候选词队列的最前面。
基于Bloom滤波器的快速判断机制 本发明为了在网络学习的环境中快速判断用户输入的合法性,采用了Bloom滤波器的过滤机制。其思想是构建关于合法术语库中全部术语的Bloom滤波器,并以此过滤用户输入。如果经过该Bloom滤波器判断用户输入是属于合法术语库的,就认为该用户输入是合法的术语,需要进行术语补全;否则认为该用户输入有误,需要进行术语纠正。具体工作机制如下 一个空的Bloom滤波器是一个包含有m个比特位的数组,所有比特位的值均为0。构造Bloom滤波器时,需要同时定义k个hash函数,这k个hash函数应独立无关,并且能够把集合当中的任意元素以相等的概率映射到m维向量中的任意一个位置。
向Bloom滤波器中添加一个元素时,令该元素依次通过已经定义好的k个hash函数,得到k个向量位置,并将向量中(空Bloom滤波器中)的这k个比特位依次置为“1”即可。
用Bloom滤波器检索一个元素时(也就是检测这个元素是否属于某个特定的集合),令这个元素依次经过已定义的k个hash函数(和构造这个Bloom滤波器时定义的hash函数相同),得到k个向量位置,并依次检测Bloom滤波器中相应的这k个比特位,如果每个位置上的值均为“1”,则说明这个元素很有可能属于该Bloom滤波器所表示的集合;如果这k个位置上的值不全为“1”,则可以判定这个元素一定不属于该Bloom滤波器所表示的集合。
假阳性的概率 假设各个hash函数将一个元素映射到向量中任意一个位置的概率是相等的,m是向量中比特位的个数,那么当一个hash函数对一个元素进行映射时,某一个位置没有被映射到的概率是 公式8 所有的hash函数都没有将某一个元素映射到某个向量位置上的概率是 公式9 插入了n个元素后,某一个向量位置没有被映射到的概率是 公式10 所以某个位置为“1”的概率是 公式11 检测一个不属于这个集合的元素。对于这个元素,某一个向量位置上的值为“1”的概率如上式(2-4)所示。当所有的k个位置都为“1”的时候,该算法将错误的判定这个元素属于该集合。这个错误的产生概率为 公式12 得出假阳性的出现概率随着m(向量中比特位的个数)的增加而减少,并随着n(集合中元素的个数)的增加而增大。对于给定的m和n,使得这个概率最小的k(hash函数的个数)的值为公式2 这个最小的假阳性概率为公式1 这说明当Bloom滤波器的长度随着集合中元素的个数线性增长时,可以将假阳性概率控制在一个稳定的数值上。
根据以上理论构建Bloom滤波器过程如下 参数选取机制为 khash函数的个数; mBloom滤波器的长度; n构建Bloom滤波器的集合中元素的总个数。
Bloom滤波器向量长度的确定Bloom滤波器的构造集合是术语库中的979个术语。根据Bloom滤波器错误率的估计公式(公式1),可以看出错误率由Bloom滤波器的长度(比特位的个数)和集合大小之比来决定。该方法中需要错误率约为0.5%,可以得出公式中m/n应为16,又n=979,所以m约为979*16=15664,为了减少hash映射的冲突,这里选取最接近于15664的质数15667。
Hash函数个数的确定为了保证理论上的最小错误率,需要对选取的hash函数的个数进行控制,使用公式2可以计算出,最佳的hash函数的个数应为0.7*16=11.2,即hash函数的个数应为11或12。这说明在构建Bloom滤波器时,集合中的每一个term需要计算11或12个hash地址进行插入;同时在使用Bloom滤波器时,每一个用户输入的term也需要计算11或12个hash映射值。为论证hash函数的个数,对hash函数个数对错误率的影响进行对比试验,实验结果表明当hash函数的个数比较少的时候,hash函数数量的变化会对Bloom滤波器错误率产生比较大的影响。当hash函数的个数增加时,Bloom滤波器的错误率会迅速减少。但同时随着hash函数个数的增大,Bloom滤波器错误率的下降速率会迅速减小。根据观察实验结果可以看出当hash函数的个数在3左右时,Bloom滤波器的错误率随受hash函数个数的影响就很小了,而且此时Bloom滤波器的错误率在0.5%左右浮动。为了同时保证Bloom滤波器的错误率约为0.5%,以及高效的使用效率,本方法中将hash函数的个数定为3。
Hash函数的选择目前比较经典的hash函数有FNV1算法、旋转hash及其替代方法、Bernstein’s hash、Pearson’s hash、CRC hash、Universal hash、Zobrist hash、FVN、Thomas Wang的算法、RS hash、JS算法、PJW算法、ELF算法、BKDR算法、SDBM算法、DJB算法、DEK算法、AP算法、BP算法、取模算法。需要从这些hash函数中选出3个独立无关的hash函数构成构造Bloom滤波器的hash函数表。做实验,将以上hash函数以3为单位做组合,并将每一种组合进行测试,比较得出可以使构造而得的Bloom滤波器错误率最小的一组hash函数,这三个hash函数为取模算法、PJW算法和DJB算法。用这三个函数构造出的Bloom滤波器错误率约为0.6%,最近理论推导结果。
Bloom滤波器的构造机制为 Step1一次将合法术语库中的术语全部读出,形成术语队列,构成构建Bloom滤波器的元素集合; Step2判断是否已经读到属于队列的尾部,如果是,结束;如果不是,进入step3; Step3另当前指针所指向的术语依次经过取模hash、PJW hash、DJB hash的计算,并得到三个在0-15666的数字,分别令这三个数字所对应的Bloom滤波器中的位置处值为“1”。回到step2; 基于Bloom滤波器判断用户输入是否合法的工作机制为 Step1令用户输入依次经过取模hash、PJW hash、DJB hash的计算,得到三个0-15666的整数; Step2检查Bloom滤波器中对应于上述三个整数的位置,如果对应位置处所有的值均为“1”,则判断该用户输入合法;否则判断为不合法。
5.2合法术语补全机制 在对合法术语的处理中本发明提出了术语补全机制,其作用为向认知水平有限的用户提示同知识范畴内的更加细化或更加明确的子知识概念,如用户输入“光纤”,该机制可以向用户提示出类似于“单模光纤”、“多模光纤”的术语补全结果。其原理如图6所示。具体工作机制如下 I.构造术语补全机制所需Trie树 首先根据术语的属性对合法术语库中的术语进行第一类分簇 第一类分簇包含两层 第一层分簇为将合法术语所对应的全拼拼音作为第一属性,每一种第一属性分别代表一个大分簇,并称为该分簇的标签。大分簇的特点为标签所对应的拼音串是该分簇中所有术语全拼拼音串的子串或全部。
第二层分簇为在每一个大分簇中,利用第二个属性音调串进行第二层分簇。对于一个特定的大分簇,属性音调串指的是术语中对应于该大分簇标签所在子串的音调或者音调串。将具有相同音调串属性的术语归为同一小分簇。
分簇结果如图2所示。
其次将所有分簇组织在Trie树结构当中,以便对补全结果进行检索匹配,或进行前缀匹配 Trie树的组织过程如图3所示,其节点结构如图4所示,构建机制为 Step1令当前节点为Trie树的根节点;当前转移条件为插入词的第一个字母; Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则生成一个新的节点,令当前节点数组中代表当前转移条件的单元指向这个新生成的节点,同时令当前节点为这个新节点,进入Step3; Step3如果当前转移条件为检索词的最后一个字母,则进入step4;若不是,则令当前转移条件为插入词的下一个字母,回到Step2。
Step4如果当前分簇是待插入分簇的最后一个分簇,则构建过程结束;若果不是,取出下一个分簇,回到Step1。
II.使用Pinyin4j工具得到Term中各个汉字的拼音及音调,并将这些拼音及音调依照Term中汉字的排列顺序做排列组合,得到Term的拼音串及音调串。对于含有多音字的Term,会产生多条拼音串——音调串的组合 Step1另当前字符为term中的第一个字符,如果当前字符为汉字,进入Step2;否则,不对这个字符做处理,直接保存,进入Step3; Step2用Pinyin4j得到这个汉字的所有可能的拼音串(包括音调),对于有多个读音的汉字,将这些拼音串用列表存储起来; Step3如果当前字符不是term的最后一个字符,令当前字符为下一个字符,回到step2;否则,进入step4; Step4按照term中字符的顺序,对这些字符的可能读音做组合,得到这个term的所有可能的拼音串;同时,对每种组合的音调串分离出来,单独成串。
III.在Trie树中检索各条拼音串——音调串所对应的分簇,得到相应的提示术语列表;如果Term产生了多个拼音串——音调串组合,检索时会产生多个提示术语列表 Step1令当前节点为Trie树的根节点;当前转移条件为待匹配的拼音串的第一个字母,当前音调串为待匹配术语的音调串; Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则转入Step5; Step3如果当前转移条件为检索词的最后一个字母,则查看当前节点的术语列表,若术语列表不为空,转入step3-1;若术语列表为空,完全匹配不成功,转入Step5; Step3-1沿着当前节点的术语(小)分簇列表,用当前音调串和各个分簇标志作比较,如果某一个分簇的标志和当前音调传一样,则说明完全匹配成功,返回该小分簇的术语列表作为候选术语集合;否则,说明完全匹配不成功,转入Step3.2; Step3.2返回当前节点中的所有小分簇中的术语,整体作为候选术语集合,结束; Step4如果当前转移条件不是检索词的最后一个字母,则令当前转移条件为检索词中的下一个字母,转到Step2。
Step5返回以当前节点为父节点或祖先节点的所有终结点中术语,结束; IV.归并各个提示术语列表,得到最终呈现给用户的提示术语列。
5.3非法输入的纠错机制 对于非法的用户输入,本发明采用了还原用户原始输入,并在用户原始输入的基础上进行纠错的自动校正机制。该机制的思想是消除输入法软件的处理作用,直接对用户的原始输入进行校正。其原理如图7所示,工作机制如下 1)、建立场合用汉字的原始输入表 根据现有的拼音输入法类输入软件的工作原理,一个汉字可能的输入方式变得很多样化。举一个例子来说明对于汉字“地”,用户键入d、di、de中的任何一种都可以实现这个汉字的输入,所以我们就说汉字“地”的可能输入字符(串)有d、di、de。对应于“汉字——输入字符(串)”表中关于汉字“地”就会有三条记录(地,d)、(地,di)、(地,de)。按照这样的方法,对常用的汉字做同样的处理便可得到所需的“汉字——输入字符(串)”表。
2)、生成对应于用户输入term的原始输入组合拼音串集合 Step1令当前字符为term中的第一个字符; Step2如果当前字符是一个汉字,进入step3;否则直接保留,跳入step4; Step3查汉字-输入字符(串)表,得到所有和当前字符所指向的汉字有关的二元组,即得到该汉字所有可能的进入计算机的方式; Step4如果当前字符是term的最后一个字符,转入step5;如果不是,令当前字符为term的下一个字符,回到Step2; Step5得到所有汉字的可能输入方式后,按照term中字符的顺序,将这些可能的输入方式进行组合,得到组合拼音串集合。
3)、编辑组合拼音串,即编辑原始输入结果 编辑指对字符串中的字符进行的插入、删除、替换和易位的操作。
编辑距离编辑操作的次数。
构造编辑距离为0的编辑集合即对原始输入不做任何操作。
构造编辑距离为1的编辑集合 删除(delition(str)) Step1n为待处理的字符串(str)的长度,i=1,deletionList=null; Step2如果i<n,newStr=str
+str[i+1:n],deletionList.add(newStr),i++,继续Step2;否则,return(deletionList)。
易位(transposition(str)) Step1n为待处理的字符串(str)的长度,i=1,transpositionList=null; Step2如果i<n,newStr=str
+str[i+1]+str[i]+str[i+2:n],i++,transpositionList.add(newStr),继续step2;否则,return(transpositionList)。
替换(alteration(str)) Step1n为待处理的字符串(str)的长度,i=1,alterationList=null; Step2c=‘a’,j=0; Step3如果i<n,转入Step4;否则,return(alterationList); Step4如果j<26,newStr=str
+char(c+j)+str[i+1:n],j++,alterationList.add(newStr),继续Step4;否则,i++,回到Step2。
插入(insertion(str)) Step1n为待处理的字符串(str)的长度,i=1,insertionList=null Step2c=‘a’,j=0; Step3如果i<n,转入Step4;否则,return(insertionList); Step4如果j<26,newStr=str
+char(c+j)+str[i:n],j++,alterationList.add(newStr),继续Step4;否则,i++,回到Step2。
构造某一个term编辑距离为1的集合edits1(term) Step1edits1=null; Step2edits1.addall(delition(term)); Step3edits1.addall(transposition(term)); Step4edits1.addall(alteration(term)); Step5edits1.addall(insertion(term)); Step6return(edits1); 4)、匹配候选项 以术语的原始出入作为术语属性,并以此进行第二类分簇 将具有相同原始输入拼音串的术语归为同一分簇,分簇结构如图5所示,每一分簇中的术语以(术语,统计出现次数)对的形式组织在分簇中。“统计出现次数”是指根据对已有文献的统计得到的某一术语在文献中的出现次数。
将所有第二类分簇组织在Trie树的结构当中,以便检索纠正候选项 Trie树的构建过程与权利要求3中Trie树的构建过程类似,在此不再赘述。
Trie树的检索机制 Step1令当前节点为Trie树的根节点;当前转移条件为待匹配的拼音串的第一个字母,当前音调串为待匹配术语的音调串; Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则结束; Step3如果当前转移条件为检索词的最后一个字母,则查看当前节点的术语列表,若术语列表不为空,返回该术语列表及出现次数列表;若术语列表为空,结束; 5)、排序 在对候选词进行排序时,应将最接近用户本意的候选项排在候选队列的最前面。引用概率的排序理论,则需要计算公式3 公式3中的w代表用户输入,在这里就是term。c代表候选项,也就是在候选列表中的一个个术语。该公式指计算在term出现的情况下,哪一个候选词出现的概率最大。可是汉语中的语言现象五花八门,根本没有办法提前预知用户的输入形式,便无法估算在这个输入下某一个术语出现的概率。所以接下来引入贝叶斯理论对公式3做变形,得到公式4 公式4中一共包含了三个概率用户输入(term)的出现概率、某一个候选项(术语)出现的概率以及在某一个术语出现的情况下,这个term出现的概率。虽然,term的出现我们不可预知,无法计算它的出现概率,但是对于所有的候选项这一部分的值是一样的,所以这个概率不会影响排序的结果。那么可以简化这个公式为公式5 为了计算公式5,这里引入假设编辑距离为0的候选词出现的概率远远大于编辑距离为1的候选词出现的概率。举一个例子来说明w光线;c1光纤(编辑距离为0);c2光(编辑距离为2)。根据该假设有公式6 计算公式5时,可以先对所有的候选词以编辑距离进行分类,然后对于拥有相同的编辑距离的候选词只需要计算公式7 对于候选词出现的概率,该方法中采用静态概率。即根据搜集的文献中,统计计算各个候选词出现的频数进而确定排序时需要的概率。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式
仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定专利保护范围。
权利要求
1、一种输入过程中的中文术语自动纠错方法,其特征在于,按照如下步骤
(1)以用户的输入中的每一个元素为一个Term,所述Term是汉字串、字母串或者字母汉字混合串;
(2)采用Bloom滤波器的结构快速判断该Term是否是一个合法的术语;如果Term是一个合法的术语、则将该Term进行术语补全,否则对Term进行术语纠错;所述术语补全是指对正确的短术语进行补全提示;所述术语纠错是指对错误的输入进行纠正得到接近用户本意的合法术语提示项。
所述术语补全和术语纠错都采用了术语分簇以及Trie树构建和检索机制。
2、如权利要求1所述一种输入过程中的中文术语自动纠错方法,其特征在于所述术语补全过程是应用拼音工具得到term中各个汉字的全拼及音调,并分别将全拼、音调依照Term中汉字的排列顺序进行排列组合,得到该term的拼音串和音调串;对转换得到的拼音串进行匹配及查找,得到术语补全的术语提示结果;所述音调串是指对于多个汉字,将各个汉字的音调所对应的数字依照汉字顺序连接所成的串,其中令汉语中的四个音调分别对应于1-4四个数字,轻声对应于数字5。
3、如权利要求1所述一种输入过程中的中文术语自动纠错方法,其特征在于所述术语纠错按照如下过程
(a)还原出term进入计算机时未经输入软件处理前的字符原始输入组合;
(b)对每一种字符原始输入组合进行编辑,编辑的过程即为改正错误的过程,编辑结果所构成的集合包含正确的输入;
(c)利用编辑过的字符串进行检索,保留那些能够表示合法术语的字符串,并把该术语作为候选术语;
(d)对这些候选术语进行排序,使得最接近用户本意的术语排在候选词队列的最前面。
4、如权利要求3所述一种输入过程中的中文术语自动纠错方法,其特征在于所述步骤(a)按照如下过程
(I)、建立常用汉字的原始输入表根据现有的拼音输入法类输入软件的工作原理,对常用的汉字做列举处理便可得到所需的“汉字——输入字符”或“汉字——输入字串”表;
(II)、生成对应于用户输入term的原始输入组合拼音串集合,过程如下
Step1令当前字符为term中的第一个字符;
Step2如果当前字符是一个汉字,进入step3;否则直接保留,跳入step4;
Step3查汉字-输入字符或汉字——输入字串表,得到所有和当前字符所指向的汉字有关的二元组,即得到该汉字所有的进入计算机的方式;
Step4如果当前字符是term的最后一个字符,转入step5;如果不是,令当前字符为Term的下一个字符,回到Step2;
Step5得到所有汉字的输入方式后,按照term中字符的顺序,将这些输入方式进行组合,得到组合拼音串集合;
(IV)、编辑组合拼音串,即编辑原始输入结果
所述编辑指对字符串中的字符进行的插入、删除、替换和易位的操作;
所述编辑距离是指编辑操作的次数;所述构造编辑距离为0的编辑集合是指对原始输入不做任何操作;所述构造编辑距离为1的编辑集合是指对原始输入进行删除、易位、替换和插入操作;
(V)、匹配候选项是以术语的原始输入作为术语属性,并以此将具有相同原始输入拼音串的术语归为同一分簇,每一分簇中的术语以对的形式组织在分簇中,将所有第二类分簇组织在Trie树的结构当中,以便检索纠正候选项;
所述Trie树的检索机制是
Step1令当前节点为Trie树的根节点;当前转移条件为待匹配的拼音串的第一个字母,当前音调串为待匹配术语的音调串;
Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则结束;
Step3如果当前转移条件为检索词的最后一个字母,则查看当前节点的术语列表,若术语列表不为空,返回该术语列表及出现次数列表;若术语列表为空,结束;
所述统计出现次数是指根据对已有文献的统计得到的某一术语在文献中的出现次数;
(VI)、排序
在对候选词进行排序时,将最接近用户本意的候选项排在候选队列的最前面,按照如下公式计算在term出现的情况下,候选词出现的概率最大值
arg maxcP(c/w)(2)
公式(2)中的w代表用户输入,在这里就是term;c代表候选项,也就是在候选列表中的术语;
引入贝叶斯理论对公式(2)做变形
arg maxcP(w/c)P(c)/P(w)(3)
公式(3)中一共包含了三个概率term的出现概率、某一个候选项出现的概率以及在某一个术语出现的情况下,这个term出现的概率;那么可以简化公式3为
arg maxcP(w/c)P(c)(4)
为了计算公式(4),这里引入假设编辑距离为0的候选词出现的概率远远大于编辑距离为1的候选词出现的概率;根据该假设有
p(w/c1)>p(w/c2)(5)
计算公式(4)时,可以先对所有的候选词以编辑距离进行分类,然后对于拥有相同的编辑距离的候选词计算
arg maxcP(c)公式7
对于候选词出现的概率,该方法中采用静态概率;即根据搜集的文献中,统计各个候选词出现的频数进而确定排序时需要的概率。
5、如权利要求1所述一种输入过程中的中文术语自动纠错方法,其特征在于,所述采用Bloom滤波器的结构快速判断该Term是否是一个合法的术语是指按照下列过程
(a)按照如下公式确定Bloom滤波器向量长度,
其中,k为Hash函数的个数,m为Bloom滤波器的长度,n为构建Bloom滤波器的集合中元素的总个数,限制最大错误率为0.5%,公式中m/n为16,设n=979,所以m约为979*16=15664,这里选取最接近于15664的质数15667;
(b)确定Hash函数个数为3;
(c)选择Hash函数构造Bloom滤波器的hash函数表选出取模算法、PJW算法和DJB算法3个独立无关的Hash函数构成构造Bloom滤波器的hash函数表;
(d)构造Bloom滤波器
Step1一次将合法术语库中的术语全部读出,形成术语队列,构成构建Bloom滤波器的元素集合;
Step2判断是否已经读到属于队列的尾部,如果是,结束;如果不是,进入Step3;
Step3当前指针所指向的术语依次经过取模Hash、PJW Hash、DJB Hash的计算,得到三个在0-15666的数字,分别令这三个数字所对应的Bloom滤波器中的位置处值为1;回到step2;
(e)基于Bloom滤波器判断用户输入是否合法的工作机制为
Step1令用户输入依次经过取模Hash、PJW Hash、DJB Hash的计算,得到三个0-15666的整数;
Step2检查Bloom滤波器中对应于上述三个整数的位置,如果对应位置处所有的值均为“1”,则该用户输入合法;否则判断为不合法。
6、如权利要求1所述一种输入过程中的中文术语自动纠错方法,其特征在于,所述术语分簇的机制是根据拼音串与音调串两个属性对术语库中的术语进行分簇,并将各术语簇到Trie结构中,以便检索术语的补全结果;所述分簇是将具有相同属性的元素归在同一集合中;所述分簇包含第一层分簇和第二层分簇;所述第一层分簇为将合法术语所对应的全拼拼音作为第一属性,每一种第一属性分别代表一个大分簇,并称为该分簇的标签,标签所对应的拼音串是该分簇中所有术语全拼拼音串的子串或全部;所述第二层分簇为在每一个大分簇中,利用第二个属性音调串进行第二层分簇,对于一个特定的大分簇,属性音调串指的是术语中对应于该大分簇标签所在子串的音调或者音调串,将具有相同音调串属性的术语归为同一小分簇。
7、如权利要求1所述一种输入过程中的中文术语自动纠错方法,其特征在于,所述Trie树的构建和检索机制是
所述Trie树的构建机制为
Step1令当前节点为Trie树的根节点;当前转移条件为插入词的第一个字母;
Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则生成一个新的节点,令当前节点数组中代表当前转移条件的单元指向这个新生成的节点,同时令当前节点为这个新节点,进入Step3;
Step3如果当前转移条件为检索词的最后一个字母,则进入step4;若不是,则令当前转移条件为插入词的下一个字母,回到Step2;
Step4如果当前分簇是待插入分簇的最后一个分簇,则构建过程结束;若果不是,取出下一个分簇,回到Step1;
所述Trie树的检索机制
Step1令当前节点为Trie树的根节点;当前转移条件为待匹配的拼音串的第一个字母,当前音调串为待匹配术语的音调串;
Step2以当前节点为基准,查看该节点数组中代表当前转移条件的单元,如果该单元指向了一个子节点,则令当前节点为该子节点,转入Step3;否则转入Step5;Step3如果当前转移条件为检索词的最后一个字母,则查看当前节点的术语列表,若术语列表不为空,转入step3.1;若术语列表为空,完全匹配不成功,转入Step5;Step3.1沿着当前节点的术语分簇列表,用当前音调串和各个分簇标志作比较,如果某一个分簇的标志和当前音调传一样,则说明完全匹配成功,返回该小分簇的术语列表作为候选术语集合;否则,说明完全匹配不成功,转入Step3.2;
Step3.2返回当前节点中的所有小分簇中的术语,整体作为候选术语集合,结束;Step4如果当前转移条件不是检索词的最后一个字母,则令当前转移条件为检索词中的下一个字母,转到Step2;
Step5返回以当前节点为父节点或祖先节点的所有终结点中术语,结束。
全文摘要
本发明公开了一种输入过程中的中文术语自动纠错方法,按照如下步骤(1)以用户的输入中的每一个元素为一个Term,所述Term是汉字串、字母串或者字母汉字混合串;(2)采用Bloom滤波器的结构快速判断该Term是否是一个合法的术语;如果Term是一个合法的术语、则将该Term进行术语补全,否则对Term进行术语纠错;所述术语补全是指对正确的短术语进行补全提示;所述术语纠错是指对错误的输入进行纠正得到接近用户本意的合法术语提示项。所述术语补全和术语纠错都采用了术语分簇以及Trie树构建和检索机制。在用户输入的判断上采用了Bloom滤波器的判断机制。对于正确的输入采用合法术语补全机制进行术语补全提示;对于错误的用户输入结合各种拼音输入法软件的工作特点,采用还原原始输入,并针对原始输入进行编辑的错误纠正机制进行纠正提示。
文档编号G06F17/28GK101639830SQ20091002381
公开日2010年2月3日 申请日期2009年9月8日 优先权日2009年9月8日
发明者均 刘, 郑庆华, 莎 沙, 成 郑, 正 周 申请人:西安交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1