一种面向问答系统的输入文本自动纠错方法与流程

文档序号:11199368阅读:350来源:国知局
一种面向问答系统的输入文本自动纠错方法与流程

本发明涉及信息检索与查询领域,尤其涉及一种面向问答系统的输入文本自动纠错方法。



背景技术:

问答系统(questionansweringsystem,qa)是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。其研究兴起的主要原因是人们对快速、准确地获取信息的需求。问答系统的设计主要侧重于如何提高对用户提出问题获得的答案的质量上,而没有对用户的输入的提问进行判别和纠正。

然而用户对问答系统提出问题,不可避免的会出现一些输入错误,这些错误会极大的影响问答系统输出的正确率。问答系统由于用户的输入错误,必然会导致获取的相应答案质量降低,使问答系统的正确率降低,用户体验性不高。

在搜索应用中,拼音检索技术可以有效避开输入法,实现拼音原始性检索,在一定程度上改变搜索行为;而在输入法应用中,拼音纠错技术能够自动识别并修改用户输入的错误字符串,以保证正确汉字输出,提高输入法的容错性。拼音纠错技术能够有效增强应用扩展性与用户体验性。

有鉴于此,亟待研发出一种能够解决上述问题的输入文本自动纠错方法。



技术实现要素:

本发明的目的旨在解决现有问答系统中用户输入的问题会出现错误,从而导致问答效果不理想,问答系统的准确率及正确率低的问题。从而提供一种面向问答系统的输入文本自动纠错方法,它能够自动纠正用户的输入错误,并考虑用户本身地方的发音错误,从而提升问答效果。

为实现上述目的,本发明提供了一种面向问答系统的输入文本自动纠错方法。该方法包括以下步骤:

1)定义常见错误拼音音节表;

2)构建领域名词词典,所述领域名词包括名词和名词短语;

3)使用确定的有限自动机构建步骤2)的领域名词词典,

所述确定的有限自动机定义为:r=(q,a,δ,q0,f),其中,q表示状态集,a表示输入拼音集,δ:q×a→q,δ是q与a的直积q×a到q的映射,q0∈q为起始状态,为终止状态;

4)接收用户输入的文本,所述用户输入的文本包括汉字或拼音,使用汉字转拼音工具转为拼音,然后使用逆向最大匹配法切分除了单音节拼音之外的所有合法或不合法的拼音;

5)将步骤4)中切割的拼音采用模糊匹配算法逐一匹配步骤3)中构建的领域名词词典,并记录匹配过程中拼音的编辑距离,然后根据步骤1)中常见错误拼音音节表对常见错误下拼音的编辑距离进行调整,在拼音的编辑距离或调整后的拼音的编辑距离小于设定的阈值β时继续匹配,匹配出最长的领域名词,最终取路径所有的汉字组合;

6)对步骤5)中所有汉字组合形成的一个或多个的领域名词进行打分;

7)输出步骤6)中打分最高的领域名词。

进一步地,所述步骤1)中常见错误拼音音节表包括拼音开头出错的拼音和拼音结尾出错的拼音,所述拼音开头出错的拼音包括:n和l错误、h和f错误,翘舌音z、c、s和平舌音zh、ch、sh错误;所述拼音结尾出错的拼音包括:前鼻音an、en、in和后鼻音ang、eng、ing错误。

进一步地,所述步骤2)具体包括:

201)根据词频对领域名词进行排序;

202)将词频小于预定词频阈值α的领域名词剔除,将词频大于设定词频阈值α的领域名词提取出来加入领域名词词典。

进一步地,所述步骤3)具体包括:

301)逐一读取步骤2)中的领域名词;

302)判断领域名词首字拼音库中是否包含当前领域词的首字拼音,即判断是否已经包含当前首字拼音的树,若是,则执行步骤303);若否,则执行步骤304);

303)如果领域名词首字拼音库中包含当前领域名词的首字拼音,即判断已经包含当前首字拼音的树,则找出已经存在的首字拼音树并得到首节点;

304)将当前领域名词的首字拼音加入到领域词首字拼音库中,构建一棵领域名词拼音树并将当前拼音放入节点中;

305)判断当前拼音是否为终节点,即判断当前拼音是否为领域名词最后一个字的拼音,若是,则执行步骤311;若否,则执行步骤306;

306)如果步骤305中当前拼音不是终节点,即当前拼音不是领域名词的最后一个字的拼音,则判断当前标志位是否已经被设置为1,若是,则执行步骤308),若否,则执行步骤307);

307)若步骤306中拼音标志位之前未被设置为1,则将此处拼音标志位设置为0,然后执行步骤308);

308)读取当前领域名词下一个字的拼音;

309)判断步骤303)或步骤304)当前节点的子节点是否包含步骤308)的拼音,若是,则跳转到步骤305),若否,则执行步骤310);

310)将步骤308)的拼音添加为当前节点的子节点,然后再跳转到步骤305);

311)如果步骤305)中当前拼音是终节点,即是领域名词最后一个字的拼音,则将拼音节点的标志位设置为1;

312)判断领域名词是否读完;若是,则结束进程,若否,则返回到步骤301)继续读取下一个领域名词。

进一步地,所述步骤5)具体包括:

所述步骤5)具体包括:

501)接收步骤4)中使用逆向最大匹配算法分割后的n个拼音序列;

502)对i和k赋初值,i=1,k=1,i表示第几个拼音序列,k表示第k棵树;

503)判断是否存第k棵领域名词树;若存在,则执行步骤504),若不存在,则执行步骤505);

504)计算当前第i个拼音与第k棵树的首字拼音的编辑距离dis,然后执行步骤506);

505)若不存在第k棵领域名词树,即领域名词树已经匹配结束,均没有匹配上的拼音,说明当前第i个拼音没有匹配上,此时匹配下一个拼音序列,并从第1棵领域词树开始匹配,然后执行步骤504);

506)判断当前匹配的拼音是否为常见的拼音错误;若是,则执行步骤507),若否,则执行步骤508);

507)如果为常见的拼音错误,则减小编辑距离dis;

508)判断步骤504)和步骤507)中编辑距离dis是否小于设定的距离阈值β;若是,则执行步骤509),若否,则执行步骤512);

509)若步骤508)中编辑距离dis小于等于设定阈值β,记录拼接上的拼音串;

510)判断步骤504)中当前拼音的标志位是否为1;若是,则执行步骤511),若否,则执行步骤514);

511)若步骤510)中当前拼音的标志位为1,表明已经匹配上领域名词的拼音,将匹配成功的领域名词的拼音标志位设置为1,记录匹配上的领域名词拼音,然后执行步骤514);

512)若步骤508)中编辑距离dis大于设定阈值β,则执行k++,匹配切断,去匹配下一棵树的首字拼音,然后执行步骤513);

513)清空匹配切断的拼音串,然后跳转至步骤503)重新匹配下一棵领域名词树;

514)若步骤510)中当前拼音的标志位为0,即不是结束标志位,则执行i++,继续匹配下一个拼音序列,将用户输入的下一个拼音与领域名词树当前节点的下一级节点比较匹配;

515)判断步骤514)中的i是否小于等于n,即判断第i个拼音是否为用户输入文本的拼音序列的最后一个拼音;若是,则执行步骤516),若否,则执行步骤517);

516)若i小于等于n,即用户输入的文本的拼音序列还没有匹配结束,此时依次计算匹配上的拼音的下一个状态的拼音集合中的拼音与输入的文本转化的下一个拼音的编辑距离,同时找出最小的编辑距离与之前的dis叠加,再跳转到步骤506),判断是否为常见拼音错误更新编辑距离,并判断距离阈值;

517)若i大于n,即输入的拼音序列已经匹配结束,则结束匹配进程,然后执行步骤6)。

进一步地,所述步骤6)具体包括以下步骤:

601)逐一计算步骤5)中匹配上的领域名词汉字与用户输入文本汉字的编辑距离,并将计算出的汉字编辑距离结合步骤5)中匹配过程中拼音的编辑距离和领域名词的长度来打分;

602)判断匹配上的领域名词的分数是否大于设定分数的阈值θ;若是,则执行步骤603),若否,则执行步骤604);

603)若是,则去除小于或等于设定阈值θ的领域名词。

604)若否,则保留大于设定阈值θ的领域名词。

本发明的有益效果:与现有的技术相比,本面向问答系统的输入文本自动纠错方法,考虑用户的地方发音错误的情况下,使用有限自动机构建领域词库,将领域名词构建为一棵棵查询树,大大减少了算法时间复杂度,同时采用模糊匹配,设置编辑距离阈值,并根据常见的用户拼音错误调整编辑距离,既能够解决用户输入的汉字错误,亦能够解决用户输入的拼音错误,纠错后的问题能够提升问答效果,增强用户体验性。

附图说明

图1为本发明实施例的一种面向问答系统的输入文本自动纠错方法的流程图;

图2为本发明实施例提供的一种采用确定的有限自动机构建领域名词词典的方法流程图;

图3为本发明实施例提供了一种模糊匹配的算法流程图;

图4为本发明实施例提供的确定的有限自动机的原理示意图;

图5为本发明实施例提供的构建的领域词库树的一个示例图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面将结合发明实施例中的附图,对发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是发明一部分实施例,而非全部的实施例。基于发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于发明保护的范围。

请参阅图1,本发明实施例提供了一种面向问答系统的输入文本自动纠错方法的流程图。

在步骤101中,定义常见错误拼音音节表。

本实施例中的错误拼音音节表可包括两类,一类为拼音开头出错的拼音,一类为拼音结尾出错的拼音;拼音开头出错的拼音可以包括:n和l错误、h和f错误,翘舌音z和平舌音zh错误、翘舌音c和平舌音ch错误、翘舌音s和平舌音sh错误;拼音结尾出错的拼音可以包括:前鼻音an和后鼻音ang错误、前鼻音en和后鼻音eng错误、前鼻音in和后鼻音ing错误等。

在步骤102中,构建领域名词词典,所述领域名词包括名词和名词短语。名词可以普通名词和非普通名词,例如是知识、身份证等。名词短语可以是诸如知识产权、注册企业、企业管理和企业实名认证这类词等。

在步骤103中,使用确定的有限自动机构建步骤102的领域名词词典。

其中,确定的有限自动机定义为:r=(q,a,δ,q0,f),其中,q表示状态集,a表示输入拼音集,δ:q×a→q,δ是q与a的直积q×a到q的映射,q0∈q为起始状态,为终止状态,原理图可参见图4。在纠错过程中要少运算,而在dfa算法中几乎没有什么计算,有的只是状态的转换。同时这里没有状态转换,没有动作,有的只是query(查找)。我们可以认为,通过squery(查找)u、v,通过uquery(查找)v、q,通过vquery(查找)u、q。

例如,在领域名词库中存在如下几个名词:知识、指示、智慧、知识产权、指挥、制服、支付宝。通过dfa构建将其构建为如图5所示的树结构,这样就将我们的领域词库构建成了一个类似与一颗一颗的树,这样我们判断一个用户输入的问题中是否存在错字,就大大减少了检索的匹配范围。比如我们要判断知识产权,根据第一个字的拼音,我们就可以确认需要检索的是那棵树,然后再在这棵树中进行检索。如何来判断一个领域词是否已经结束,利用标识位来判断。领域词中最后一个字的拼音,表示这个词结束,我们将一个词的的最后一个字的标志位设置为isend=1,其余的则设置为isend=0;如图5所示中的知识与知识产权,知识是一个词,知识产权也是一个词,将shi和quan的标志位都设置为isend=1。

在步骤104中,接收用户输入的文本,即用户输入的问题。用户输入的文本包括汉字或拼音。然后使用汉字转拼音工具转为拼音。考虑到用户会输入错误的拼音,此时的拼音可能并非一个拼音音节,将非法拼音的部分除了单音节的拼音之外,其余合并,为模糊匹配做准备;再使用逆向最大匹配法切分除了单音节拼音之外的所有合法或不合法的拼音。

在步骤105中,将步骤104中切割的拼音采用模糊匹配算法逐一匹配步骤103中构建的领域名词词典,并记录匹配过程中拼音的编辑距离,然后根据步骤101中常见错误拼音音节表对常见错误下拼音的编辑距离进行调整,在拼音的编辑距离或调整后的拼音的编辑距离小于设定的阈值β时继续匹配,匹配出最长领域名词。最终取路径的所有汉字组合。那么经过本步骤之后,会匹配出符合条件的一个或多个领域名词。

在步骤106中,对步骤105中所有汉字组合形成的一个或多个的领域名词进行打分。

具体的打分方式可参见如下步骤:

在步骤106-1中,逐一计算步骤105中匹配上的领域名词汉字与用户输入文本汉字的编辑距离,并将计算出的汉字编辑距离结合步骤105中匹配过程中拼音的编辑距离和领域名词的长度来打分。编辑距离越小、领域名词长度越大,得分越高。

在步骤106-2中,判断匹配上的领域名词的分数是否大于设定分数的阈值θ;若是,则执行步骤106-3,若否,则执行步骤106-4。

在步骤106-3中,若是,则去除小于或等于设定阈值θ的领域名词。

在步骤106-4中,若否,则保留大于设定阈值θ的领域名词。

在步骤107中,输出步骤106中打分最高的领域名词。

以上对本发明实施例提供的一种面向问答系统的输入文本自动纠错方法进行了详细的描述,以下将对步骤103中使用确定的有限自动机构建领域名词进行详细的描述。

请参阅图2,本发明实施例提供了一种采用确定的有限自动机构建步骤102的领域名词词典的方法流程图,该实施例主要对图1中步骤103进行具体描述,其包括以下步骤:

在步骤201中,逐一读取图1中步骤102中的领域名词。

在步骤202中,判断领域名词首字拼音库中是否包含当前领域词的首字拼音,即判断是否已经包含当前首字拼音的树;若是,则执行步骤203;若否,则执行步骤204。

在步骤203中,如果领域名词首字拼音库中包含当前领域名词的首字拼音,即判断已经包含当前首字拼音的树,则找出已经存在的首字拼音树并得到首节点。

在步骤204中,将当前领域名词的首字拼音加入到领域词首字拼音库中,构建一棵领域名词拼音树并将当前拼音放入节点中。

在步骤205中,判断当前拼音是否为终节点,即判断当前拼音是否为领域名词最后一个字的拼音,若是,则执行步骤211;若否,则执行步骤206。

在步骤206中,如果步骤205中当前拼音不是终节点,即当前拼音不是领域名词的最后一个字的拼音,则判断当前标志位是否已经被设置为1,若是,则执行步骤208,若否,则执行步骤207。

此步判断是因为防止短的领域名词的结束标志位被长的领域名词的标志位覆盖,例如有领域名词知识和知识产权,先将知识加入有限自动机,则shi的标志位被设置为1,当将知识产权加入有限自动机时,如果不做此步判断,shi的结束标志位则会被替换为0,搜索时则无法匹配知识这个领域名词,因此此处判断很重要。

在步骤207中,若步骤206中拼音标志位之前未被设置为1,则将此处拼音标志位设置为0,然后执行步骤208。

在步骤208中,读取当前领域名词下一个字的拼音。

在步骤209中,判断步骤203或步骤204当前节点的子节点是否包含步骤208的拼音;若是,则跳转到步骤205;若否,则执行步骤210。

在步骤210中,将步骤208的拼音添加为当前节点的子节点,然后再跳转到步骤205。

在步骤211中,如果步骤205中当前拼音是终节点,即是领域名词最后一个字的拼音,则将拼音节点的标志位设置为1。

在步骤212中,判断领域名词是否读完;若是,则结束进程,若否,则返回到步骤201继续读取下一个领域名词。

以一个具体例子说明:假如步骤201中读取的是领域名词是知识产权,对应的拼音是zhishichanquan。则判断领域名词首字拼音库中是否包含当前领域名词(知识产权)的首字拼音zhi;若是,则找出已经存在的首字拼音zhi这棵树。若否,则将领域名词(知识产权)首字拼音zhi加入到领域名词首字拼音库中,构建一棵领域名词拼音数,并将当前拼音zhi放入节点中。判断结束后,再进一步判断当前拼音zhi是否为终节点,即判断当前拼音zhi是否为领域名词的最后一个拼音;若是,则将当前拼音节点zhi标志位isend设置为1,然后再判断领域名词(知识产权)是否全部读取完,读取完则结束进程,否则,读取下一个领域名词。显然这里,当前拼音zhi并不是终节点,那么这个时候则判断当前标志位为是否已经被标注为1,也就是zhi是否已经被标注为1,否的话,则将zhi的标志位isend设置为0,然后再读取领域名词(知识产权)的下一个字拼音shi。然后判断当前节点的子节点是否包含该拼音,也就是当前zhi这棵数的子节点是否包含shi这个拼音,包含,则判断当前拼音shi是否为终节点,判断过程如上所述zhi的过程。不包含,则添加当前拼音shi作为zhi这棵数的子节点,然后再判断当前拼音shi是否为终节点,判断过程如上所述zhi的过程,在此,不一一赘述。重复上述操作过程,直至将步骤201中所有的领域名词读取完。

以上是对本发明实施例提供的一种采用确定的有限自动机构建步骤102的领域名词词典的方法进行详细的描述,以下将对本发明实施例提供的模糊匹配算法进行详细的描述。

请参阅图3,本发明实施例提供了一种模糊匹配的算法流程图,该实施例主要对图1中步骤105进行具体描述。具体如下:

在步骤301中,接收图1中步骤104中使用逆向最大匹配算法分割后的n个拼音序列。

在步骤302中,对i和k赋初值,i=1,k=1,i表示第几个拼音序列,k表示第k棵树。

在步骤303中,判断是否存第k棵领域名词树;若存在,则执行步骤304,若不存在,则执行步骤305。

在步骤304中,计算当前第i个拼音与第k棵树的首字拼音的编辑距离dis,然后执行步骤306。

在步骤305中,若不存在第k棵领域名词树,即领域名词树已经匹配结束,均没有匹配上的拼音,说明当前第i个拼音没有匹配上,此时匹配下一个拼音序列,并从第1棵领域词树开始匹配,然后执行步骤304。

在步骤306中,判断当前匹配的拼音是否为常见的拼音错误;若是,则执行步骤307,若否,则执行步骤308。

在步骤307中,如果为常见的拼音错误,则减小编辑距离dis。

在步骤308中,判断步骤304和步骤307中编辑距离dis是否小于设定的距离阈值β;若是,则执行步骤309;若否,则执行步骤312。

在步骤309中,若步骤308中编辑距离dis小于等于设定阈值β,记录拼接上的拼音串。

在步骤310中,判断步骤304中当前拼音的标志位是否为1;若是,则执行步骤311;若否,则执行步骤314。

在步骤311中,若步骤310中当前拼音的标志位为1,表明已经匹配上领域名词的拼音,将匹配成功的领域名词的拼音标志位设置为1,记录匹配上的领域名词拼音,然后执行步骤314。

在步骤312中,若步骤308中编辑距离dis大于设定阈值β,则执行k++,匹配切断,去匹配下一棵树的首字拼音,然后执行步骤313。

在步骤313中,清空匹配切断的拼音串,然后跳转至步骤303重新匹配下一棵领域名词树。

在步骤314中,若步骤310中当前拼音的标志位为0,即不是结束标志位,则执行i++,继续匹配下一个拼音序列,将用户输入的下一个拼音与领域名词树当前节点的下一级节点比较匹配。

在步骤315中,判断步骤314中的i是否小于等于n,即判断第i个拼音是否为用户输入文本的拼音序列的最后一个拼音;若是,则执行步骤316;若否,则执行步骤317。

在步骤316中,若i小于等于n,即用户输入的文本的拼音序列还没有匹配结束,此时依次计算匹配上的拼音的下一个状态的拼音集合中的拼音与输入的文本转化的下一个拼音的编辑距离,同时找出最小的编辑距离与之前的dis叠加,再跳转到步骤506,判断是否为常见拼音错误更新编辑距离,并判断距离阈值;

在步骤317中,若i大于n,即输入的拼音序列已经匹配结束,则结束匹配进程,然后执行图1中的步骤106。

以一个具体例子说明:假设步骤104中使用逆向最大匹配算法分割后的n个拼音序列为zishichanquan(子识产权),那么具体步骤如下:,

接收步骤104中使用逆向最大匹配算法分割后的拼音zi;判断是否存第1棵领域名词树(一般情况下都会存在第1棵树)。若存在,则计算当前第1个拼音zi与第1棵树的首字拼音的编辑距离dis,假设第一棵树是zhi,那么当前第一个拼音zi与第1棵树zhi的编辑距离dis=1。若不存在第1棵领域名词树,即领域名词树已经匹配结束,均没有匹配上的拼音,说明当前第1个拼音zi没有匹配上,此时匹配下一个拼音si,并从第1棵领域词树开始匹配。然后判断当前匹配的拼音zi是否为常见的拼音错误,显然zi转换到zhi只需要一步,即编辑距离为1,可以判断出是常见的错误,然后减小编辑距离dis,比如可以减小至0.5。如果第一棵数是shen,则拼音zi到shen的转换距离为4步,即编辑距离为4,就判断为不是常见错误。然后对将常见错误或不是常见错误下的当前拼音zi的编辑距离都与预定的距离阈值β(假定等于2)进行比较,大于,则查找第二棵树,查找判断过程与第一棵树一致;小于或等于,则记录匹配上的zi这棵树,然后判断当前拼音zi的标志位是否为1,显然这里zi的标志位不是1,那么则执行i++,继续匹配下一个拼音shi,将用户输入的下一个拼音shi与领域名词树当前节点zhi的下一级节点(比如图5中shi、hui、fu)比较匹配;然后再判断zi这个拼音是否是步骤104拼音序列中最后一个拼音quan,显然不是,则将说明用户输入的文本拼音序列还没有匹配结束,则此时计算匹配上的拼音zhi下一个状态的拼音集合中的拼音(比如图5中shi、hui、fu)与输入文本转化的下一个拼音shi的编辑距离,找出最小的编辑距离,也就是子节点shi,编辑距离为0,将0与之前的dis=0.5进行叠加后再与β比较,即此时dis=0.5+0=0.5<β,然后,记录匹配上的zhishi拼音串,进行下一个拼音chan和quan的查找与匹配,过程与上述过程一致。最后匹配上的词为知识产权、知示产权、知识、指示。打分的时候就逐一计算匹配上的领域名词汉字与用户输入文本汉字的编辑距离(子识产权),并将计算出的汉字编辑距离结合匹配过程中拼音的编辑距离和领域名词的长度来打分,因为匹配上的词中,知识产权与输入文本子识产权只需变化一步,zhishichanquan与输入拼音zishichanquan也只需要变化一步,且长度最大,所以知识产权这个领域名词得分最高,最后变将打分最高的领域名词(知识产权)输出。

以上对本发明实施例的一种模糊匹配的算法进行了详细的阐述,结合本文所阐述的面向问答系统的输入文本自动纠错方法,考虑用户的地方发音错误的情况下,使用有限自动机构建领域词库,将领域名词构建为一棵棵查询树,大大减少了算法时间复杂度,同时采用模糊匹配,设置编辑距离阈值,并根据常见的用户拼音错误调整编辑距离,既能够解决用户输入的汉字错误,亦能够解决用户输入的拼音错误,纠错后的问题能够提升问答效果,增强用户体验性。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1