发明内容
针对现有技术中的缺陷,本发明提供了一种基于人机交互的数字串的纠正方法及装置,
所述方法包括:接收用户输入的语义,并解析所述语义对应的字符串;
根据对话历史对所述语义进行预处理,判断所述语义是否为纠正所述数字串中的错误指令,当判定结果为是时,采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换,通过多轮交互对所述数字串的语音识别错误进行纠正,并对所述字符串进行替换;
根据所述预处理后的语义更新所述字符串,并回复用户。
具体地,所述采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换包括:
通过如下动态规划转移方程递归计算
其中,表示ai和bj不等时为1,否则为0,S中子串与T串的最小编辑距离为disS,T,disS,T(i,O)=0leva,b(i,j)为字符串a的前i个字符和字符串b的前j个字符之间的最小编辑距离;
利用与所述编辑距离相同的动态规划,算出所述字符串S的所有连续后缀子串与所述T串的最小编辑距离d1;
根据所述连续后缀子串的所有连续前缀子串与所述T串算出最小编辑距离d,即所述字符串S的子串与串T的最小编辑距离为d时表示所述数字串S的子串与T串为最相似的连续子串。
具体地,采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换还包括:
其中,MATHCH、INSERT_MID、INSERT_HEAD、INSERT_TAIL、SUBSTITUTE_MID、SUBSTITUTE_HEAD、SUBSTITUDE_TAIL和DELETE分别为相同、插入中间、插入头部、插入尾部、替换中间、替换头部、替换尾部,且拥有不同的惩罚值。
优选地,所述数字串对应唯一的置信度。
所述数字串为电话号码时,判断所述电话号码的合法性,若所述电话号码合法,则纠正所述数字串;否则,依据顺序排列的不同惩罚值,依次执行编辑距离算法,直到找到合法的电话号码。
通过多轮对话交互对数字串的语音识别错误进行纠正,实现了用户自身可对识别错误的纠正,尤其是对数字串的纠正;通过使删除、插入、替换拥有不同的惩罚值,提升了人机交互中语音识别的正确率,同时,有效地增加了用户体验。
具体实施方式
为了解决现有技术中对数字串的语音识别错误纠正能力有限,同时缺乏考虑到用户自身可能会对识别错误进行纠正。本发明提出了一种基于人机交互的数字串的纠正方法及装置。。
图1示出了本发明一实施例提供的基于人机交互的数字串的纠正方法的流程示意图,如图1所示,该方法包括以下步骤:
S101、接收用户输入的语义,并解析所述语义对应的字符串。
S102、根据对话历史对所述语义进行预处理,判断所述语义是否为纠正所述数字串中的错误指令,当判定结果为是时,采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换,通过多轮交互对所述数字串的语音识别错误进行纠正,并对所述字符串进行替换。
具体地,所述采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换包括:
通过如下动态规划转移方程递归计算
其中,表示ai和bj不等时为1,否则为0,S中子串与T串的最小编辑距离为disS,T,disS,T(i,0)=0,leva,b(i,j)为字符串a的前i个字符和字符串b的前j个字符之间的最小编辑距离;
利用与所述编辑距离相同的动态规划,算出所述字符串S的所有连续后缀子串与所述T串的最小编辑距离d1;
根据所述连续后缀子串的所有连续前缀子串与所述T串算出最小编辑距离d,即所述字符串S的子串与串T的最小编辑距离为d时表示所述数字串S的子串与T串为最相似的连续子串。
优选地,所述采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换还包括:
其中,MATHCH、INSERT_MID、INSERT_HEAD、INSERT_TAIL、SUBSTITUTE_MID、SUBSTITUTE_HEAD、SUBSTITUDE_TAIL和DELETE分别为相同、插入中间、插入头部、插入尾部、替换中间、替换头部、替换尾部、删除,且拥有不同的惩罚值。
优选地,所述数字串对应唯一的置信度,即每个数字串对应一个该数字串可能性的置信度。
具体地,所述数字串为电话号码时,判断所述电话号码的合法性,若所述电话号码合法,则纠正所述数字串;否则,依据顺序排列的不同惩罚值,依次执行编辑距离算法,直到找到合法的电话号码。
当S是具有特殊功能的字符串时,例如电话号码,我们可以对上述过程进行进一步完善。首先要有一个电话号码合法性的程序,假如叫它verify,当号码合法时,返回True,否则返回False。有了这个验证程序,一个简单地策略是:判断由上述算法生成的电话号码是否合法,仅在合法的情况下进行修改,否则不更改。
可选地,我们可以设计多套惩罚值集合,并且给定它们的顺序,称为PENALTY_SET。然后,用不同PENALTY_SET得到多个纠正结果,分别通过verify函数,取第一个合法的电话号码当作纠正结果。
S103、根据所述预处理后的语义更新所述字符串,并回复用户。
根据预处理后的语义进行状态更新和决定给用户的回复,之后将系统的回复转化为语音播放给用户,其中,首先将语义回复转换为自然文本,然后将自然文本转换为声音播放给用户。用户可以继续对话直到对话结束为止。
图2是本发明一实施例提供的基于人机交互的数字串的纠正装置的结构示意图:
输入模块21,用于接收用户输入的语义,并解析所述语义对应的字符串。
控制模块22,用于根据对话历史对所述语义进行预处理,判断所述语义是否为纠正所述数字串中的错误指令,当判定结果为是时,采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换;通过多轮交互对所述数字串的语音识别错误进行纠正,并对所述字符串进行替换;
具体地,采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换包括:
通过如下动态规划转移方程递归计算
其中,表示ai和bj不等时为1,否则为0,S中子串与T串的最小编辑距离为disS,T,disS,T(i,0)=0,leva,b(i,j)为字符串a的前i个字符和字符串b的前j个字符之间的最小编辑距离;
利用与所述编辑距离相同的动态规划,算出所述字符串S的所有连续后缀子串与所述T串的最小编辑距离d1;
根据所述连续后缀子串的所有连续前缀子串与所述T串算出最小编辑距离d,即所述字符串S的子串与串T的最小编辑距离为d时表示所述数字串S的子串与T串为最相似的连续子串。
优选地,采用编辑距离算法找出要被纠正的数字串S中与纠正子串T最相似的一段并进行替换还包括:
其中,MATHCH、INSERT_MID、INSERT_HEAD、INSERT_TAIL、SUBSTITUTE_MID、SUBSTITUTE_HEAD、SUBSTITUDE_TAIL和DELETE分别为相同、插入中间、插入头部、插入尾部、替换中间、替换头部、替换尾部、删除,且拥有不同的惩罚值。
具体地,数字串对应唯一的置信度。
具体地,数字串为电话号码时,判断所述电话号码的合法性,若所述电话号码合法,则纠正所述数字串;否则,依据顺序排列的不同惩罚值,依次执行编辑距离算法,直到找到合法的电话号码。
输出模块23,用于根据所述预处理后的语义更新所述字符串,并回复用户。
根据预处理后的语义进行状态更新和决定给用户的回复,之后将系统的回复转化为语音播放给用户,其中,首先将语义回复转换为自然文本,然后将自然文本转换为声音播放给用户。用户可以继续对话直到对话结束为止。
下面将对本发明的实施方式结合拨打电话号码的具体实例作进一步的详细描述(如图3所示)。
在此实例中,惩罚值集合PENALTY_SET包含两种惩罚值A和B,按顺序依次为:
和
假设在对话开始的时候,用户说“请拨打18377830989”,声音经过输入模块后得到包含2个候选语义的列表:一个表示电话号码是“18371830989”,可能性为0.7;另一个表示电话号码是“13371830989”,可能性是0.3。控制模块的对话状态跟踪部分根据此语义列表更新对话状态,得到新的系统状态,即用户想拨打的电话号码有两种可能的取值:一个是“18371830989”,置信度是0.7;另一个是“13371830989”,置信度是0.3,控制模块的对话决策部分然后根据此状态生成确认置信度最大的电话号码(即“18371830989”)的语义动作,输出模块将其转化为自然语言“你要拨打电话号码18371830989吗?”并合成语音播放给用户。
此时,用户发现系统说的号码有误,对系统说“是783”,声音经过输入模块后得到一个候选的语义,即将电话号码的某一部分改为“783”,置信度为1.0。在将此语义传到控制模块之前,需要利用纠正算法对此找出电话号码(即“18371830989”)要替换为“783”的部分,从而得到纠正后的电话号码。
纠正算法首先在惩罚值是A的条件下,将“18371830989”中第一个“183”替换为“783”即得到“78371830989”,电话号码合法性的程序verify发现此号码不是合法号码,将此纠正救过舍去,继续在惩罚值是B的条件下,将“18371830989”中的第二个“183”更改为“783”,即得到“18377830989”,verify判断此号码为合法号码,予以保留。经过此过程,用户的原始的语义转换为:电话号码是“18377830989”,置信度是1.0。控制模块中对话状态跟踪器根据此语义及上一轮的对话状态更新此对话状态,得到新的系统状态,即用户想拨打的电话号码有三种可能的取值:一个是“18377830989”,置信度是0.6,一个是“18371830989”,置信度是0.3;另一个是“13371830989”,置信度是0.1。控制模块的对话决策部分然后根据此状态生成确认置信度最大的电话号码(即“18377830989”)的语义动作,输出模块将其转化为自然语言“你要拨打电话号码18377830989吗?”并合成语音播放给用户。用户发现系统确认的号码正确,回答“是的”,整个对话结束。
通过多轮对话交互对数字串的语音识别错误进行纠正,实现了用户自身可对识别错误的纠正,尤其是对数字串的纠正;通过使删除、插入、替换拥有不同的惩罚值,提升了人机交互中语音识别的正确率,同时,有效地增加了用户体验。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。