发明内容
本说明书一个或多个实施例描述了一种问答匹配方法和装置,能够高效地修复问答匹配过程中的错误。
第一方面,提供了一种问答匹配方法,方法包括:
针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;
根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;
若查找到所述当前句子主干对应的当前知识点标题,则将所述当前知识点标题作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第一目标答案。
在一种可能的实施方式中,所述方法还包括:
若未查找到所述当前句子主干对应的当前知识点标题,则将所述当前用户问句作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第二目标答案。
进一步地,所述通过所述通用问答模型的输出得到所述当前用户问句对应的第二目标答案之后,所述方法还包括:
获取所述当前用户问句与所述第二目标答案是否匹配的打标结果;
若所述打标结果指示所述当前用户问句与所述第二目标答案不匹配,则获取所述当前用户问句对应的当前句子主干,以及获取标注的所述当前用户问句对应的当前知识点标题,将所述当前句子主干与所述当前知识点标题的映射关系加入所述映射表。
进一步地,所述获取所述当前用户问句与所述第二目标答案是否匹配的打标结果之前,所述方法还包括:
确定接收到针对所述当前用户问句的转为人工服务的指令;或者,
确定所述当前用户问句属于预先设定的需要紧急修复的场景。
进一步地,所述将所述当前句子主干与所述当前知识点标题的映射关系加入所述映射表之后,所述方法还包括:
为该映射关系设定生效时间,当超过所述生效时间后,从所述映射表中删除该映射关系。
进一步地,所述方法还包括:
若所述生效时间的时间长度大于预设长度阈值,则将该映射关系用于对所述通用问答模型进行训练时的一组训练样本。
在一种可能的实施方式中,所述针对当前用户问句进行句子主干提取,包括:
确定所述当前用户问句中的包含的各主干词;
根据各主干词生成所述当前用户问句对应的当前句子主干。
进一步地,所述确定所述当前用户问句中的包含的各主干词,包括:
对所述当前用户问句进行分词处理和去停用词处理,得到第一分词组;
对所述第一分词组中的各分词使用强同义词进行归一化替换,得到第二分词组,将第二分词组中的各分词确定为主干词。
进一步地,所述确定所述当前用户问句中的包含的各主干词,包括:
对所述当前用户问句进行分词处理和去停用词处理,得到第一分词组;
对所述第一分词组中的各分词经过词嵌入后,作为预先训练的序列标注模型的输入,通过所述序列标注模型的输出得到各分词是否为主干词的预测概率;
将各分词中预测概率大于预设概率阈值的分词,确定为所述当前用户问句的主干词。
进一步地,所述根据各主干词生成所述当前用户问句对应的当前句子主干,包括:
判断所述当前用户问句中是否包含预定的表示方向性的词;
如果所述当前用户问句中包含预定的表示方向性的词,则将各主干词按照其在所述当前用户问句中的位置关系进行排序;
如果所述当前用户问句中不包含预定的表示方向性的词,则将各主干词按照预定的位置关系进行排序;
将排序后的各主干词组合成所述当前用户问句对应的当前句子主干。
第二方面,提供了一种问答匹配装置,装置包括:
提取单元,用于针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;
查找单元,用于根据所述提取单元生成的当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;
第一匹配单元,用于若所述查找单元查找到所述当前句子主干对应的当前知识点标题,则将所述当前知识点标题作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第一目标答案。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
通过本说明书实施例提供的方法和装置,不是直接将当前用户问句作为预先训练的通用问答模型的输入,以得到与当前用户问句匹配的答案,而是首先针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;然后根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;最后若查找到所述当前句子主干对应的当前知识点标题,则通过当前知识点标题替代当前用户问句作为预先训练的通用问答模型的输入,以得到与当前用户问句匹配的答案,从而能够高效地修复问答匹配过程中的错误。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。该实施场景涉及问答匹配方法,可以理解的是,所谓问答匹配,就是针对用户问句匹配出合适的答案。由于用户语言口语化、简略化,或者,用户的问题描述不清晰、不准确或者描述冗杂,可能导致客服机器人针对用户问句匹配了错误的答案,因此需要对问答匹配过程中的错误进行修复。
通常地,将当前用户问句作为预先训练的通用问答模型的输入,通过通用问答模型的输出得到与当前用户问句匹配的目标答案,可能存在上述目标答案与当前用户问句不匹配的情况。本说明书实施例中,针对该情况进行了错误修复,首先针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;然后根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;最后若查找到所述当前句子主干对应的当前知识点标题,则通过当前知识点标题替代当前用户问句作为预先训练的通用问答模型的输入,以得到与当前用户问句匹配的答案,从而能够高效地修复问答匹配过程中的错误。
可以理解的是,知识点标题也可以称为标准问句,根据标准问句,通用问答模型能够匹配出合适的答案。
此外,所述映射表可以快速更新,当存在新增的被标注为回答错误的用户问句时,可以快速更新映射表,相对于通过模型训练来修复错误的方式,更为高效,具有很强的实用性。
图2示出根据一个实施例的问答匹配方法流程图,该方法可以基于图1所示的应用场景。如图2所示,该实施例中问答匹配方法包括以下步骤:步骤21,针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;步骤22,根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;步骤23,若查找到所述当前句子主干对应的当前知识点标题,则将所述当前知识点标题作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第一目标答案。下面描述以上各个步骤的具体执行方式。
首先在步骤21,针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干。可以理解的是,流程中问句主干key的提取是一个主要的算法流程,提取出来的key必须具有一定的泛化能力,比如问句中多一些少一些无关紧要的词或者语序发生一些变化要有相同的主干key。此外,提取的key不能污染其他的用户问句,否则会对错误的用户问句进行修复。
本说明书实施例中,先确定所述当前用户问句中的包含的各主干词,然后根据各主干词生成所述当前用户问句对应的当前句子主干。
这里介绍两种主干key的提取方法,一种是基于规则的方法,另一种是基于模型的方法。
在一个示例中,采用了基于规则的方法。对所述当前用户问句进行分词处理和去停用词处理,得到第一分词组;对所述第一分词组中的各分词使用强同义词进行归一化替换,得到第二分词组,将第二分词组中的各分词确定为主干词。
在另一个示例中,采用了基于模型的方法。对所述当前用户问句进行分词处理和去停用词处理,得到第一分词组;对所述第一分词组中的各分词经过词嵌入后,作为预先训练的序列标注模型的输入,通过所述序列标注模型的输出得到各分词是否为主干词的预测概率;将各分词中预测概率大于预设概率阈值的分词,确定为所述当前用户问句的主干词。
进一步地,在得到所述当前用户问句的主干词之后,可以判断所述当前用户问句中是否包含预定的表示方向性的词;如果所述当前用户问句中包含预定的表示方向性的词,则将各主干词按照其在所述当前用户问句中的位置关系进行排序;如果所述当前用户问句中不包含预定的表示方向性的词,则将各主干词按照预定的位置关系进行排序;将排序后的各主干词组合成所述当前用户问句对应的当前句子主干。
图3示出本说明书实施例提供的一种基于规则进行句子主干提取的方法流程图。首先用户问句会进行分词处理,去停用词处理,并对同义词进行归一化替换,这里只进行强同义词替换,防止引入二义性。最后对生成的词进行排序,去掉语序的特征,即生成句子主干(key),例如问句“我的花呗怎么开通啊??”,经过处理后该问句的key生成为“花呗开通怎么”,能够归一化的表达用户问句的主要意思。特别要注意的是,对于有“从…到…”类似方向性的问句,要保留主干的语序特征不进行排序,例如“如何从银行卡转账到余额宝”等转账方向的问句要保留语序,否则会引起转账方向的歧义。
图4示出本说明书实施例提供的一种使用模型来进行语句主干词提取的方法流程图。首先用户问句进行分词、词性标注等处理,经过词嵌入(embedding)进入长短期记忆网络(long short-term memory,LSTM)序列标注模块,通过LSTM标注当前分词(token)是否为主干词的概率,对于大于一定阈值的词,被认定为当前问题的主干词,同时对主干词进行类似的排序处理即可生成问句的主干key。模型的训练采用人工标注的方式进行,通过人工划出不重要的非主干词,来标记当前词的标签(tag)是否是主干词,再将人工标记的结果作为序列标注的训练语料即可。基于模型的方法具有扩展性强,泛化能力强等特点,但主干标注训练语料的生成需要一定的成本和时间。
可以理解的是,序列标注模块也可以称为序列标注模型,可以采用的算法除了LSTM之外,还可以使用其他序列化标注方法,例如条件随机场算法(conditional randomfield algorithm,CRF)。
然后在步骤22,根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立。可以理解的是,当出现新增的被标注为回答错误的用户问句时,可以快速的更新该映射表。
在一个示例中,预先建立的映射表可以如表一所示:
表一:句子主干与知识点标题之间的映射表
句子主干 |
知识点标题 |
A1 |
B1 |
A2 |
B2 |
A3 |
B3 |
参见表一,A1为被标注为回答错误的历史问句的句子主干,B1为针对A1标注的正确的知识点标题;A2为被标注为回答错误的历史问句的句子主干,B2为针对A2标注的正确的知识点标题;A3为被标注为回答错误的历史问句的句子主干,B3为针对A3标注的正确的知识点标题。
根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题,可以明确用户述求。
最后在步骤23,若查找到所述当前句子主干对应的当前知识点标题,则将所述当前知识点标题作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第一目标答案。
本说明书实施例,根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题,将所述当前知识点标题作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第一目标答案,可以对于通用问答模型匹配出现的错误进行修复。
可以理解的是,还存在未查找到所述当前句子主干对应的当前知识点标题的情况,此时默认通用问答模型匹配不会出现错误,将所述当前用户问句作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第二目标答案。
在一个示例中,所述通过所述通用问答模型的输出得到所述当前用户问句对应的第二目标答案之后,获取所述当前用户问句与所述第二目标答案是否匹配的打标结果;若所述打标结果指示所述当前用户问句与所述第二目标答案不匹配,则获取所述当前用户问句对应的当前句子主干,以及获取标注的所述当前用户问句对应的当前知识点标题,将所述当前句子主干与所述当前知识点标题的映射关系加入所述映射表。也就是说,可以随时根据匹配错误的用户问句,更新映射表。其中,获取所述当前用户问句对应的当前句子主干,可以读取已经生成的所述当前用户问句对应的当前句子主干,或者,重新生成所述当前用户问句对应的当前句子主干。
进一步地,先确定接收到针对所述当前用户问句的转为人工服务的指令;或者,确定所述当前用户问句属于预先设定的需要紧急修复的场景,再获取所述当前用户问句与所述第二目标答案是否匹配的打标结果。
进一步地,所述将所述当前句子主干与所述当前知识点标题的映射关系加入所述映射表之后,为该映射关系设定生效时间,当超过所述生效时间后,从所述映射表中删除该映射关系。
进一步地,若所述生效时间的时间长度大于预设长度阈值,则将该映射关系用于对所述通用问答模型进行训练时的一组训练样本。
通过本说明书实施例提供的方法,不是直接将当前用户问句作为预先训练的通用问答模型的输入,以得到与当前用户问句匹配的答案,而是首先针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;然后根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;最后若查找到所述当前句子主干对应的当前知识点标题,则通过当前知识点标题替代当前用户问句作为预先训练的通用问答模型的输入,以得到与当前用户问句匹配的答案,从而能够高效地修复问答匹配过程中的错误。
随着智能客服逐渐深入到各个业务应用场景,业务逻辑和活动场景趋于复杂,对机器人匹配错误的问答对(badcase)进行修复的需求日益增多,另一方面,随着客服运营人员运营不断的深入与精细,提供一个机器人修复的运营抓手也十分有必要。本说明书实施例对机器人匹配错误的修复类型做了一个梳理,将修复类型根据其紧急性和生命周期进行划分。
图5示出根据一个实施例的修复类型划分示意图。如图5所示,针对匹配错误的场景可以确定该匹配错误的修复类型,修复类型可以根据紧急性进行划分。其中,紧急性即修复的时间要求,例如一些引起舆情的匹配错误的问答对、重要活动的匹配错误的问答对必须要马上修复,属于紧急性的修复类型,又如每周抽检数据标注回流的匹配错误的问答对属于非紧急的修复类型。生效周期即该匹配问答对生效的时间长短,例如双十一当天活动的相关匹配问答即为短周期,活动当天完毕后即失效。
当前很多客服问答引擎是基于模型的,模型训练一般具有长周期、运营能力差等特点,迭代周期一般为周级别,同时还需要经过旁路测试,AB测试等质量验证环节,在修复紧急匹配问答和短周期匹配问答时效率十分低下甚至不可行,另一方面,在模型迭代周期中外部运营可干预的能力非常少,不能有效分配运营能力。本说明书实施例提出一种可运营的快速匹配错误修复方案,下面将从整体方案流程进行描述。
图6示出根据一个实施例的问答匹配快速修复整体流程图。如图6所示,流程图左半部分描述了线上数据流程,首先,用户问句会经过主干提取模块,生成问句主干(Key),主干提取过程也是一个语句的归一化过程,相似的问句会生成相同的Key,不同的问句主干内容不一样,Key也不同。然后,线上修复模块根据Key来查找是否有对应的修复知识点标题(Title),如果有,则进行用户问句(query)替换,使用标注的正确title替换掉用户query,并使用新query进行接下来的匹配引擎,确保输出正确答案,如果查找失败,说明当前query不必进行修复,会进行正常的问答匹配引擎流程。
如图6所示,流程图的右半部分描述了离线运营的数据流。首先,运营会提取机器人转人工的一批数据,在这部分数据里,机器人能力有限导致客户在线要了人工服务,这里机器人匹配错误较多,所有的数据会进行匹配打标,同时不匹配的数据会标注出正确的知识点标题(Title)。标注的数据会进行同样的主干提取处理,将用户问句提取出归一化的主干Key,并将标注的正确标题以Key-Title对的形式加入到线上查找的映射表,使得线上的问答匹配能够根据该Key进行实时修复。这样就形成了一个数据运营闭环,进过不断闭环迭代提升机器人能力。同时,问答匹配错误的修复的来源也可以是紧急的引起舆情的问答匹配的问答对,或者是重要活动中的问答匹配的问答对等等,只要有正确的标注数据,就可以离线生成key-title对并进行线上实时生效。
对于一些短周期问答匹配,映射表中会标注当前key-title对的生效时间,过了时效,该映射关系自动失效,满足短周期错误问答匹配的快速修复。同时对于长周期的问答匹配,相同的数据会回流到模型训练数据里,辅助匹配模型进行长周期线上迭代,而在模型能力未上线的这段空挡期内,基于主干提取的错误问答匹配的修复可以解决大部分问题。
本说明书实施例提供的问答匹配方法,已经取得了很好的算法投放效果。问答匹配快速修复流程上线以来,key-title映射表已积累9300余条,每日命中2.9w余次,修复效率从之前的周级别提升至分钟级,同时应用于多个机器人客服场景,具有广泛的业务价值。
根据另一方面的实施例,还提供一种问答匹配装置,该装置用于执行本说明书实施例提供的问答匹配方法。图7示出根据一个实施例的问答匹配装置的示意性框图。如图7所示,该装置700包括:
提取单元71,用于针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;
查找单元72,用于根据所述提取单元71生成的当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;
第一匹配单元73,用于若所述查找单元72查找到所述当前句子主干对应的当前知识点标题,则将所述当前知识点标题作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第一目标答案。
可选地,作为一个实施例,所述装置还包括:
第二匹配单元,用于若所述查找单元72未查找到所述当前句子主干对应的当前知识点标题,则将所述当前用户问句作为预先训练的通用问答模型的输入,通过所述通用问答模型的输出得到所述当前用户问句对应的第二目标答案。
进一步地,所述装置还包括:
获取单元,用于在所述第二匹配单元通过所述通用问答模型的输出得到所述当前用户问句对应的第二目标答案之后,获取所述当前用户问句与所述第二目标答案是否匹配的打标结果;
映射单元,用于若所述获取单元获取的打标结果指示所述当前用户问句与所述第二目标答案不匹配,则获取所述当前用户问句对应的当前句子主干,以及获取标注的所述当前用户问句对应的当前知识点标题,将所述当前句子主干与所述当前知识点标题的映射关系加入所述映射表。
进一步地,所述装置还包括:
确定单元,用于所述获取单元获取所述当前用户问句与所述第二目标答案是否匹配的打标结果之前,确定接收到针对所述当前用户问句的转为人工服务的指令;或者,确定所述当前用户问句属于预先设定的需要紧急修复的场景。
进一步地,所述装置还包括:
删除单元,用于所述映射单元将所述当前句子主干与所述当前知识点标题的映射关系加入所述映射表之后,为该映射关系设定生效时间,当超过所述生效时间后,从所述映射表中删除该映射关系。
进一步地,所述装置还包括:
样本收集单元,用于若所述生效时间的时间长度大于预设长度阈值,则将该映射关系用于对所述通用问答模型进行训练时的一组训练样本。
可选地,作为一个实施例,所述提取单元包括:
确定子单元,用于确定所述当前用户问句中的包含的各主干词;
生成子单元,用于根据所述确定子单元确定的各主干词生成所述当前用户问句对应的当前句子主干。
进一步地,所述确定子单元,具体用于:
对所述当前用户问句进行分词处理和去停用词处理,得到第一分词组;
对所述第一分词组中的各分词使用强同义词进行归一化替换,得到第二分词组,将第二分词组中的各分词确定为主干词。
进一步地,所述确定子单元,具体用于:
对所述当前用户问句进行分词处理和去停用词处理,得到第一分词组;
对所述第一分词组中的各分词经过词嵌入后,作为预先训练的序列标注模型的输入,通过所述序列标注模型的输出得到各分词是否为主干词的预测概率;
将各分词中预测概率大于预设概率阈值的分词,确定为所述当前用户问句的主干词。
进一步地,所述生成子单元,具体用于:
判断所述当前用户问句中是否包含预定的表示方向性的词;
如果所述当前用户问句中包含预定的表示方向性的词,则将各主干词按照其在所述当前用户问句中的位置关系进行排序;
如果所述当前用户问句中不包含预定的表示方向性的词,则将各主干词按照预定的位置关系进行排序;
将排序后的各主干词组合成所述当前用户问句对应的当前句子主干。
通过本说明书实施例提供的装置,不是直接将当前用户问句作为预先训练的通用问答模型的输入,以得到与当前用户问句匹配的答案,而是首先由提取单元71针对当前用户问句进行句子主干提取,生成所述当前用户问句对应的当前句子主干;然后由查找单元72根据所述当前句子主干,从预先建立的映射表中查找所述当前句子主干对应的当前知识点标题;所述映射表基于被标注为回答错误的历史问句建立;最后若查找到所述当前句子主干对应的当前知识点标题,则第一匹配单元73通过当前知识点标题替代当前用户问句作为预先训练的通用问答模型的输入,以得到与当前用户问句匹配的答案,从而能够高效地修复问答匹配过程中的错误。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2至图6所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2至图6所描述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。