问答方法、装置及可读存储介质与流程

文档序号:28638556发布日期:2022-01-26 17:32阅读:106来源:国知局
问答方法、装置及可读存储介质与流程

1.本发明涉及人工智能技术领域,尤其涉及一种问答方法、装置及可读存储介质。


背景技术:

2.问答系统(qa system)主要功能是自动回答用户所提出的问题,属于对话系统(dialogue system,亦称为chatbot)的一种,通过语言文字和系统交互,得到人们想要的答案。由于问答系统可满足人们快速、准确地获取信息的需求,因而越来越备受关注。但现有问答系统中的问答方式一般是从非常大量的文本段或者网页信息中去模糊检索,导致计算复杂,且反馈的答案与用户理想的答案匹配度低。


技术实现要素:

3.本发明实施例提供一种问答方法、装置及可读存储介质,以解决现有问答系统中的问答方式一般是从非常大量的文本段或者网页信息中去模糊检索,导致计算复杂,且反馈的答案与用户理想的答案匹配度低的问题。
4.为了解决上述技术问题,本发明是这样实现的:
5.本发明实施例提供了一种问答方法,包括:
6.获取用户问题;
7.在预设问题模版中不包括与所述用户问题匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与所述用户问题匹配的第一问句,其中,所述预设问答对库包括多个预设问句和所述多个预设问句的答案;
8.基于所述第一问句以及所述第一问句的答案,确定所述用户问题的目标答案。
9.本发明实施例还提供了一种问答装置,包括:
10.获取模块,用于获取用户问题;
11.第一确定模块,用于在预设问题模版中不包括与所述用户问题匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与所述用户问题匹配的第一问句,其中,所述预设问答对库包括多个预设问句和所述多个预设问句的答案;
12.第二确定模块,用于基于所述第一问句以及所述第一问句的答案,确定所述用户问题的目标答案。
13.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述的问答方法的步骤。
14.本发明实施例中,先将用户问题与预设问答对库中的问题模板逐一进行匹配,由此可以确定预设问答对库中是否存在与用户问题匹配的目标问题模板,如果预设问答对库中存在与用户问题匹配的目标问题模板,可以进一步从目标问题模板的预设问句中确定目标答案;如果预设问答对库中不存在与用户问题匹配的目标问题模板,就继续从预设问答对库中确定与用户问题相关性较大的第一问句,再基于第一问句的相似度确定目标答案。由于目标答案的获取只需要基于预设问答对库中的问答对进行匹配即可,使得目标答案的
获取方式更为简单,同时也保证了目标答案与用户理想答案的匹配度。
附图说明
15.图1为本发明实施例提供的问答方法的流程图之一;
16.图2为本发明实施例提供的问答方法的流程图之二;
17.图3为本发明实施例提供的问答方法的流程图之三;
18.图4为本发明实施例提供的问答装置的结构示意图;
19.图5为本发明实施例提供的第二确定模块的结构示意图。
具体实施方式
20.为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本发明的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本发明的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
21.如图1所示,图1为本发明实施例提供的问答方法的流程图之一,包括:
22.步骤s100,获取用户问题。
23.获取用户问题的方式可以是通过音频输入设备获取用户输入的语音信息,也可以是通过用户界面获取用户输入的文字信息。若获取到的是用户的语音信息,可以通过现有的语音识别技术将用户的语音信息转化为文字信息。
24.用户问题包括用于询问的常用词汇和询问对象关联的关键词汇,如常用词汇可以是“是什么”、“怎么样”、“是谁”“是什么时候”等等。例如,假设用户提出的问题为“采用http协议怎么接入onenet平台”,那么该用户问题中的常用词汇为“怎么”,该用户问题中的关键词汇“http协议”、“接入”、“onenet平台”等。
25.步骤s200,在预设问题模版中不包括与用户问题匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句,其中,预设问答对库包括多个预设问句和多个预设问句的答案。
26.在获取到用户问题后,将用户问题与预设问答对库中的预设问题模板进行匹配,由此确定预设问答对库中是否存在与用户问题匹配的目标问题模板。需要说明的是,该预设问答对库中预先存储有海量的问答对,每个问答对包括一一对应的预设问句和答案,且每个预设问句在设置时均是基于预设问题模板进行设置。具体地,预设问答对库中的预设问句包括同一问题的多种问题模板的问句和不同问题的多种问题模板的问句。
27.上述第一问句为预设问答对库中与用户问题相关性较大的一个或多个预设问句,具体地,可以将与用户问题的相关性大于某一预设阈值的预设问句作为第一问句,或者根据与用户问题的相关性大小,对所有预设问句的相关性进行排序,将靠前的某一预设个数的预设问句作为第一问句。
28.步骤s300,基于第一问句以及第一问句的答案,确定用户问题的目标答案。
29.当第一问句为一个时,该第一问句的答案直接作为目标答案反馈给用户。当第一问句为多个时,需要从多个第一问句中获取与用户问题相似度最高的目标问句,将目标问
句的答案作为目标答案反馈给用户。具体地,可以利用预设的相似度算法获取每个第一问句与用户问句的相似度,再根据每个第一问句与用户问句的相似度大小,确定多个第一问句中与用户问题相似度最大的目标问句。其中,预设的相似度算法可以为bm25(best match 25)算法、wmd(word mover’s distance)算法、tf-idf(term frequency

inverse document frequency)算法等中的任意一种,本发明不做具体限制。
30.本实施例中,本发明实施例中,先将用户问题与预设问答对库中的问题模板逐一进行匹配,由此可以确定预设问答对库中是否存在与用户问题匹配的目标问题模板,如果预设问答对库中存在与用户问题匹配的目标问题模板,可以进一步从目标问题模板的预设问句中确定目标答案;如果预设问答对库中不存在与用户问题匹配的目标问题模板,就继续从预设问答对库中确定与用户问题相关性较大的第一问句,再基于第一问句的相似度确定目标答案。由于目标答案的获取只需要基于预设问答对库中的问答对进行匹配即可,使得目标答案的获取方式更为简单,同时也保证了目标答案与用户理想答案的匹配度。
31.可选地,上述步骤s200,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句,包括:
32.上述步骤s210,基于预设问答对库的检索索引,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句;
33.其中,第一问句与用户问题的相关性大于其他问句与用户问题的相关性,其他问句为多个预设问句中除第一问句以外的问句;检索索引为对预设问答对库中的多个预设问句进行分词,基于多个预设问句的分词中的第一关键词而建立的索引。
34.在执行步骤s210前,需要基于预设问答对库中的多个预设问句建立检索索引,具体地,对预设问答对库中的所有预设问句进行分词,分词后去掉预设问句中没有实际意义的停用词,如“的”、“怎么”、“地”、“啊”、“哎呀”等,再将剩下的词作为关键词建立索引。该索引可以为包含有每个预设问句的序号、每个序号对应的关键词,以及每个序号对应的答案的关系图谱;也可以是基于每个预设问句中关键词的相关性建立的拓扑关系,这样就可以基于该拓扑关系确定每个预设问句和每个预设问句的答案。
35.基于预设问答对库的检索索引,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句。具体地,可以利用预设的文本相关性算法从检索索引中对用户问句中的关键词进行检索召回,从而得到与用户问题的关键词相似度较高的第一问句。其中,预设的文本相关性算法可以bm25(best match 25)算法、wmd(word mover’s distance)算法、tf-idf(term frequency

inverse document frequency)算法等中的任意一种,本发明不做具体限制。由于此处的文本相关性算法为现有技术,在此不再一一赘述。
36.本实施例中,通过从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句,由此缩小后续目标答案的匹配空间,减小整体的计算量,提高目标答案的提取效率。
37.可选地,如图2所示,图2为本发明实施例提供的问答方法的流程图之二,基于上述图1所示的实施例,上述步骤s300,基于第一问句以及第一问句的答案,确定用户问题的目标答案,包括:
38.步骤s310,获取第一问句的第一词向量以及用户问题的第二词向量。
39.在获取到多个第一问句后,分别对各第一问句和用户问题进行分词,并去掉各第一问句和用户问题中没有实际意义的停用词后,假设某一第一问句还包括m个词,将这m个
词转化为词向量,得到第一词向量序列p为[p1,p2,

,pm],用户问题还包括n个词,将这n个词转化为词向量,得到第二词向量序列q为[q1,q2,

,qn],其中,m和n为正整数。
[0040]
步骤s320,基于第一词向量和第二词向量,获取第一问句与用户问题的相似度。
[0041]
根据第一词向量序列p和第二词向量序列q,利用双向lstm算法生成第一词向量序列p的上下文向量序列和第二词向量序列q的上下文向量序列其中,为第二词向量序列q中第i位置单词对应的上文和下文得到的上下文向量,为第一词向量序列p中第i位置单词对应的上文和下文得到的上下文向量,再把第一词向量序列p不同位置的上下文向量与第二词向量序列q的所有位置的上下文向量做一个比较,获取两个向量序列的上下文向量的细粒度的联系信息,同时把第二词向量序列q不同位置的上下文向量与第一词向量序列p的所有位置的上下文向量做一个比较,获取两个向量序列的上下文向量的细粒度的联系信息。在获取到所有细粒度的联系信息后,用一个bilstm来将所有细粒度的联系信息结果集合到一个固定长度的向量m;用一个全连接层对固定长度的向量m进行一次映射,最后使用sigmoid层将得到的结果映射为指定(0-1)中的一个值作为匹配度数值,该数值即为语义的相似度。
[0042]
步骤s330,根据第一问句与用户问题的相似度,从第一问句中确定目标问句,其中,目标问句为第一问句中与用户问题相似度最大的问句。
[0043]
步骤s340,将目标问句的答案确定为用户问题的目标答案。
[0044]
对获取到的第一问句与用户问题的相似度进行降序排序,获取相似度最大的第一问句,并将相似度最大的第一问句作为目标问句。在确定目标问句后,将目标问句对应的答案作为目标答案。
[0045]
本实施例中,通过获取多个第一问句中与用户问题的相似度最大的第一问句,从而得到与用户问题最匹配的答案,由此提高了目标答案的准确性。
[0046]
可选地,在上述步骤s200,在预设问题模版中不包括与用户问题匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句,包括:
[0047]
步骤s220,对用户问题进行语义分析,确定用户问题的第一问题模板。
[0048]
在获取到用户问题之后,对用户问题中的文字进行预处理,此处的预处理可以为去除用户问题中的标点符号,也可以为对字母进行大小写转换等处理。在预处理完后,对用户问题进行语义分析,获取用户问题的语义,根据语义确定用户问题的第一问题模板,例如,假设用户问题为“采用http协议怎么接入onenet平台”,那么该用户问题中的常用词汇“怎么”,以及与“怎么”类似“怎样”、“如何”词汇,由此基于用户问题中的常用词汇和相近词汇,在预设问题模板中逐一匹配,确定用户问题的第一问题模板。此处的预设问题模板里包含有多种不同的问题类型,如谁(who)、对谁(whom)、是什么(what)、怎么(how)、如何(how)、哪里(where)、何时(when),以及与上述词汇语义相近的其他词汇等。
[0049]
步骤s230,在预设问答对库中的预设问题模版中不包括与第一问题模版匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句。
[0050]
在确定用户问题的第一问题模版之后,将该用户问题的第一问题模版与预设问答对库中预设问句的问题模板一一匹配,根据匹配结果,确认预设问题模版中是否有与第一
问题模版匹配的目标问题模版,在预设问题模版中存在与第一问题模版匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句。具体可参照步骤s210的方式,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句,在此不再一一赘述。此处的目标问题模版为第一问题模版中的一个。
[0051]
本实施例中,通过确定用户问题的第一问题模版,根据用户问题的第一问题模版确定匹配的目标问题模板,从而缩小查找范围,提高了查找效率,同时也便于从目标问题模板中去寻找最匹配的目标答案,提高目标答案的准确性。
[0052]
可选地,如图3所示,图3为本发明实施例提供的问答方法的流程图之三,基于上述图1所示的实施例,在上述步骤s100,获取用户问题之后,还包括:
[0053]
步骤s400,在预设问题模版中包括与用户问题匹配的目标问题模版的情况下,对用户问题进行分词,并从用户问题的分词中获取第二关键词。
[0054]
步骤s500,在多个预设问句中与目标问题模版对应的预设问句中包括与第二关键词匹配的第二问句的情况下,将第二问句的答案确定为用户问题的目标答案。
[0055]
上述用户问题的第二关键词为用户问题中去掉用于询问的常用词汇外的其他关键词。例如,假设用户提出的问题为“采用http协议怎么接入onenet平台”,那么该用户问题中的关键词汇“http协议”、“接入”、“onenet平台”。获取到第二关键词后,可以直接基于第二关键词在目标问题模板对应的预设问句中去匹配;还可以先获取第二关键词的相似词,如与“http协议”相似的“超文本传输协议”、“http通信协议”、“http2.0协议”、“http1.1协议”等,再基于这些第二关键词以及其对应的相似词在目标问题模板对应的预设问句中去匹配。根据目标问题模板中各预设问句的匹配度,获取匹配度最高的预设问句作为第二问句,并将第二问句的答案作为目标答案。
[0056]
本实施例中,当预设问答对库中存在与用户问题的目标模板的情况下,可以直接从目标问题模板中去寻找与用户问题最为匹配的目标答案,从而提高了目标答案的准确性和获取效率。
[0057]
如图4所示,图4为本发明实施例提供的问答装置的结构示意图,该问答装置40包括:
[0058]
获取模块410,用于获取用户问题;
[0059]
第一确定模块420,用于在预设问题模版中不包括与用户问题匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句,其中,预设问答对库包括多个预设问句和多个预设问句的答案;
[0060]
第二确定模块430,用于基于第一问句以及第一问句的答案,确定用户问题的目标答案。
[0061]
可选地,第一确定模块420,还用于:
[0062]
基于预设问答对库的检索索引,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句;
[0063]
其中,第一问句与用户问题的相关性大于其他问句与用户问题的相关性,其他问句为多个预设问句中除第一问句以外的问句;检索索引为对预设问答对库中的多个预设问句进行分词,基于多个预设问句的分词中的第一关键词而建立的索引。
[0064]
可选地,如图5所示,第二确定模块430,包括:
[0065]
第一获取单元431,用于获取第一问句的第一词向量以及用户问题的第二词向量;
[0066]
第二获取单元432,用于基于第一词向量和第二词向量,获取第一问句与用户问题的相似度;
[0067]
第一确定单元433,用于根据第一问句与用户问题的相似度,从第一问句中确定目标问句,其中,目标问句为第一问句中与用户问题相似度最大的问句;
[0068]
第二确定单元434,用于将目标问句的答案确定为用户问题的目标答案。
[0069]
可选地,第一确定模块420,包括:
[0070]
第三确定单元,用于对用户问题进行语义分析,确定用户问题的第一问题模板;
[0071]
第四确定单元,用于在预设问答对库中的预设问题模版中不包括与第一问题模版匹配的目标问题模版的情况下,从预设问答对库的多个预设问句中确定与用户问题匹配的第一问句。
[0072]
可选地,问答装置40还包括:
[0073]
处理模块,用于在预设问题模版中包括与用户问题匹配的目标问题模版的情况下,对用户问题进行分词,并从用户问题的分词中获取第二关键词;
[0074]
第三确定模块,用于在多个预设问句中与目标问题模版对应的预设问句中包括与第二关键词匹配的第二问句的情况下,将第二问句的答案确定为用户问题的目标答案。
[0075]
本发明实施例问答装置,是与上述问答方法相对应的装置,上述方法中的所有实现方式均适用于该装置的实施例中,也能达到相同的技术效果,在此不一一赘述。
[0076]
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述的问答方法的步骤。上述方法中的所有实现方式均适用于该计算机可读存储介质的实施例中,也能达到相同的技术效果,在此不一一赘述。
[0077]
以上的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1