用于保持对话系统对话连贯性的方法及系统
技术领域
本发明涉及一种用于保持对话系统对话连贯性的方法及系统。
背景技术
在人机对话系统中,用户和对话系统聊天的轮数是衡量该对话系统好坏的最直观的指标。为了提高用户和对话系统聊天的轮数,必须保障对话系统对话连贯性,一方面,在用户讨论的聊天主题下,对话系统需要尽可能在这个主题进行相关回复,避免答非所问;另一方面:当用户切换到新的聊天主题时,对话系统也需要切换到新的聊天主题下。
现有技术中,较为常用的保持对话系统对话连贯性的方法为:获取前面N轮的历史对话,并从中提取出关键词,然后将这些关键词跟当前用户的对话输入相结合,作为系统输入,由于该方法中包含前N轮对话的关键词信息,因而可以在一定程度上保持对话的连贯性。
但是,现有技术的缺陷在于:一方面,N的取值很难确定,如果取得过小,例如,N=1,那么只能包含前面一轮的历史对话信息,因而容易受限于局部信息;如果取得过大,又可能会超出上下文的范围,引入无关信息;另一方面,从N轮历史对话中很有可能获取过多的关键词,当相关度低甚至无关的关键词被引入时会给对话系统带来噪音,而且,无关的关键词越多,噪音越大,会严重影响对话质量。
发明内容
本发明要解决的技术问题是提供一种用于保持对话系统对话连贯性的方法及系统,根据当前对话输入的内容,实时地从所有以往话题中切割出与当前对话属于同一话题的相关话题集合,并从切割出的相关话题集合中,挖掘出最具有代表性的当前话题关键词,由于所挖掘出的关键词包含了上下文信息,将当前对话输入内容与当前话题关键词一并作为系统输入,可以保持对话系统对话连贯性,从而实现人机对话达到持续深入的效果。
为解决上述技术问题,本发明提供的技术方案是:
一方面,本发明提供一种用于保持对话系统对话连贯性的方法,包括,根据当前对话输入,实时地从所有历史对话中切割出与当前对话属于同一话题的相关话题集合;从相关话题集合中挖掘出当前话题关键词;根据当前对话输入和当前话题关键词,确定应答输出。
进一步地,根据当前对话输入,实时地从所有历史对话中切割出与当前对话属于同一话题的相关话题集合,具体包括,将当前对话输入标记为Q0,并对历史对话重新标记,其中,历史对话为[Q1,A1],[Q2,A2],…[Qi,Ai],…[Qn,An],重新标记后的历史对话为S1,S2,S3,S4,…,S2i-1,S2i,…S2n-1,S2n,其中,n为历史对话的总数量,[Qi,Ai]为第i轮历史对话,Qi为第i轮历史对话中的对话输入,Ai为第i轮历史对话中的应答输出,S2i-1为Qi重新标记后对应的句子,S2i为Ai重新标记后对应的句子;根据当前对话输入和重新标记后的历史对话,按照预先设定的话题切割规则进行话题切割,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
进一步地,话题切割规则为:计算S1与Q0的之间语义相似度M1,0,若M1,0<T,则S1与Q0不属于同一话题,若M1,0≥T,则继续计算,其中,T为预先设置的话题分割阈值;计算S2分别与S1和QO之间的语义相似度M2,1,M2,0,若max(M2,1,M2,0)<T,则S1与Q0属于同一话题,若max(M2,1,M2,0)≥T,则继续计算;计算S3分别与S2,S1和QO之间的语义相似度M3,2,M3,1,M3,0,若max(M3,2,M3,1,M3,0)<T,则S2,S1与Q0属于同一话题,若max(M3,2,M3,1,M3,0)≥T,则继续计算;以此类推,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
进一步地,计算每两个句子之间语义相似度的步骤包括,将两个句子分别转换成句子向量,以获得第一句子向量和第二句子向量;计算第一句子向量与第二句子向量之间的余弦值,并将此余弦值记为两个句子间的语义相似度。
进一步地,将句子转换成句子向量的步骤具体包括,对句子进行分词,以获得至少一个词;在预先训练好的word2vec矩阵中匹配出每个词对应的词向量;对匹配出的所有词向量进行计算,以获得句子对应的句子向量。
进一步地,从相关话题集合中挖掘出当前话题关键词,具体包括,对相关话题集合中的每个句子进行分词,以获得至少一个词;在预先训练好的word2vec矩阵中匹配出每个词对应的词向量;计算每个词向量对应的方差,其中,方差的计算公式为,Di=(Ci-C1)2+(Ci-C2)2+...+(Ci-Ci-1)2+(Ci-Ci+1)2+...+(Ci-Cm)2,其中,Di为第i个词向量对应的方差,Ci为第i个词对应的词向量,m为总的词向量的个数;选取对应方差最小的词和对应方差最大的词作为当前话题关键词。
另一方面,本发明提供一种用于保持对话系统对话连贯性的系统,包括,话题切割模块:用于根据当前对话输入,实时地从所有历史对话中切割出与当前对话属于同一话题的相关话题集合;关键词提取模块:用于从相关话题集合中挖掘出当前话题关键词;应答模块:用于根据当前对话输入和当前话题关键词,确定应答输出。
进一步地,话题切割模块,具体用于,将当前对话输入标记为Q0,并对历史对话重新标记,其中,历史对话为[Q1,A1],[Q2,A2],…[Qi,Ai],…[Qn,An],重新标记后的历史对话为S1,S2,S3,S4,…,S2i-1,S2i,…S2n-1,S2n,其中,n为历史对话的总数量,[Qi,Ai]为第i轮历史对话,Qi为第i轮历史对话中的对话输入,Ai为第i轮历史对话中的应答输出,S2i-1为Qi重新标记后对应的句子,S2i为Ai重新标记后对应的句子;根据当前对话输入和重新标记后的历史对话,按照预先设定的话题切割规则进行话题切割,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
进一步地,话题切割规则为:计算S1与Q0的之间语义相似度M1,0,若M1,0<T,则S1与Q0不属于同一话题,若M1,0≥T,则继续计算,其中,T为预先设置的话题分割阈值;计算S2分别与S1和QO之间的语义相似度M2,1,M2,0,若max(M2,1,M2,0)<T,则S1与Q0属于同一话题,若max(M2,1,M2,0)≥T,则继续计算;计算S3分别与S2,S1和QO之间的语义相似度M3,2,M3,1,M3,0,若max(M3,2,M3,1,M3,0)<T,则S2,S1与Q0属于同一话题,若max(M3,2,M3,1,M3,0)≥T,则继续计算;以此类推,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
进一步地,关键词提取模块,具体用于,对相关话题集合中的每个句子进行分词,以获得至少一个词;在预先训练好的word2vec矩阵中匹配出每个词对应的词向量;计算每个词向量对应的方差,其中,方差的计算公式为,Di=(Ci-C1)2+(Ci-C2)2+...+(Ci-Ci-1)2+(Ci-Ci+1)2+...+(Ci-Cm)2,其中,Di为第i个词向量对应的方差,Ci为第i个词对应的词向量,m为总的词向量的个数;选取对应方差最小的词和对应方差最大的词作为当前话题关键词。
本发明提供的用于保持对话系统对话连贯性的方法及系统,根据当前用户对话输入的内容,实时地从所有以往话题中切割出与当前对话属于同一话题的相关话题集合,并从切割出的相关话题集合中,挖掘出最具有代表性的当前话题关键词,由于所挖掘出的关键词包含了上下文信息,将当前对话输入内容与当前话题关键词一并作为系统输入,可以保持对话系统对话连贯性,从而实现人机对话达到持续深入的效果。
附图说明
图1是本发明实施例提供的用于保持对话系统对话连贯性的方法的流程图;
图2是本发明实施例提供的用于保持对话系统对话连贯性的方法的又一流程图;
图3是本发明实施例提供的用于保持对话系统对话连贯性的系统的框图。
具体实施方式
下面通过具体的实施例进一步说明本发明,但是,应当理解为,这些实施例仅仅是用于更详细具体地说明之用,而不应理解为用于以任何形式限制本发明。
实施例一
结合图1,本实施例提供的用于保持对话系统对话连贯性的方法,包括:
步骤S1:根据当前对话输入,实时地从所有历史对话中切割出与当前对话属于同一话题的相关话题集合;
步骤S2:从相关话题集合中挖掘出当前话题关键词;
步骤S3:根据当前对话输入和当前话题关键词,确定应答输出。
本发明实施例提供的用于保持对话系统对话连贯性的方法,根据当前对话输入的内容,实时地从所有以往话题中切割出与当前对话属于同一话题的相关话题集合,并从切割出的相关话题集合中,挖掘出最具有代表性的当前话题关键词,由于所挖掘出的关键词包含了上下文信息,将当前对话输入内容与当前话题关键词一并作为系统输入,可以保持对话系统对话连贯性,从而实现人机对话达到持续深入的效果。
优选地,如图2所示地,根据当前对话输入,实时地从所有历史对话中切割出与当前对话属于同一话题的相关话题集合,具体包括,
步骤S1.1:将当前对话输入标记为Q0,并对历史对话重新标记,其中,历史对话为[Q1,A1],[Q2,A2],…[Qi,Ai],…[Qn,An],重新标记后的历史对话为S1,S2,S3,S4,…,S2i-1,S2i,…S2n-1,S2n,其中,n为历史对话的总数量,[Qi,Ai]为第i轮历史对话,Qi为第i轮历史对话中的对话输入,Ai为第i轮历史对话中的应答输出,S2i-1为Qi重新标记后对应的句子,S2i为Ai重新标记后对应的句子;
步骤S1.2:根据当前对话输入和重新标记后的历史对话,按照预先设定的话题切割规则进行话题切割,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
本实施例中,具体地,话题切割规则为:
a)计算S1与Q0的之间语义相似度M1,0,若M1,0<T,则S1与Q0不属于同一话题,若M1,0≥T,则继续计算b),其中,T为预先设置的话题分割阈值;
b)计算S2分别与S1和QO之间的语义相似度M2,1,M2,0,若max(M2,1,M2,0)<T,则S1与Q0属于同一话题,若max(M2,1,M2,0)≥T,则继续计算c);
c)计算S3分别与S2,S1和QO之间的语义相似度M3,2,M3,1,M3,0,若max(M3,2,M3,1,M3,0)<T,则S2,S1与Q0属于同一话题,若max(M3,2,M3,1,M3,0)≥T,则继续计算下一步骤;
以此类推,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
进一步具体地,计算每两个句子之间语义相似度的步骤包括,将两个句子分别转换成句子向量,以获得第一句子向量和第二句子向量;计算第一句子向量与第二句子向量之间的余弦值,并将此余弦值记为两个句子间的语义相似度。
更加具体地,将句子转换成句子向量的步骤具体包括,对句子进行分词,以获得至少一个词;在预先训练好的word2vec矩阵中匹配出每个词对应的词向量;对匹配出的所有词向量进行计算,以获得句子对应的句子向量。
进一步优选地,结合图2所示地,从相关话题集合中挖掘出当前话题关键词,具体包括,
步骤S2.1:对相关话题集合中的每个句子进行分词,以获得至少一个词;
步骤S2.2:在预先训练好的word2vec矩阵中匹配出每个词对应的词向量;
步骤S2.3:计算每个词向量对应的方差,其中,方差的计算公式为,Di=(Ci-C1)2+(Ci-C2)2+...+(Ci-Ci-1)2+(Ci-Ci+1)2+...+(Ci-Cm)2,其中,Di为第i个词向量对应的方差,Ci为第i个词对应的词向量,m为总的词向量的个数;
步骤S2.4:选取对应方差最小的词和对应方差最大的词作为当前话题关键词。
本实施例中,词对应的方差越小,表示该词越处于中心位置,即,该词与相关话题集合中的其他词在语义上越接近;而词对应的方差越大,则表示该词越处于边沿位置,即,该词与相关话题集合中的其他词在语义上差异越大。此外,本实施例选取对应方差最小的词和对应方差最大的词作为当前话题关键词,其原因在于,方差最小,表示该词最能够表示当前话题中所论述的内容;方差最大,表示该词最能够表示当前话题所能达到的外沿部分,这两个词从两个不同的维度编码了当前话题的上下文信息,能够更好地把控全局对话信息,从而更好地保持对话连贯性。
实施例二
结合图3,本实施例提供的用于保持对话系统对话连贯性的系统,包括,
话题切割模块1:用于根据当前对话输入,实时地从所有历史对话中切割出与当前对话属于同一话题的相关话题集合;
关键词提取模块2:用于从相关话题集合中挖掘出当前话题关键词;
应答模块3:用于根据当前对话输入和当前话题关键词,确定应答输出。
本发明实施例提供的用于保持对话系统对话连贯性的系统,根据当前对话输入的内容,实时地从所有以往话题中切割出与当前对话属于同一话题的相关话题集合,并从切割出的相关话题集合中,挖掘出最具有代表性的当前话题关键词,由于所挖掘出的关键词包含了上下文信息,将当前对话输入内容与当前话题关键词一并作为系统输入,可以保持对话系统对话连贯性,从而实现人机对话达到持续深入的效果。
优选地,话题切割模块1,具体用于,
将当前对话输入标记为Q0,并对历史对话重新标记,其中,历史对话为[Q1,A1],[Q2,A2],…[Qi,Ai],…[Qn,An],重新标记后的历史对话为S1,S2,S3,S4,…,S2i-1,S2i,…S2n-1,S2n,其中,n为历史对话的总数量,[Qi,Ai]为第i轮历史对话,Qi为第i轮历史对话中的对话输入,Ai为第i轮历史对话中的应答输出,S2i-1为Qi重新标记后对应的句子,S2i为Ai重新标记后对应的句子;
根据当前对话输入和重新标记后的历史对话,按照预先设定的话题切割规则进行话题切割,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
本实施例中,具体地,话题切割规则为:
a)计算S1与Q0的之间语义相似度M1,0,若M1,0<T,则S1与Q0不属于同一话题,若M1,0≥T,则继续计算b),其中,T为预先设置的话题分割阈值;
b)计算S2分别与S1和QO之间的语义相似度M2,1,M2,0,若max(M2,1,M2,0)<T,则S1与Q0属于同一话题,若max(M2,1,M2,0)≥T,则继续计算c);
c)计算S3分别与S2,S1和QO之间的语义相似度M3,2,M3,1,M3,0,若max(M3,2,M3,1,M3,0)<T,则S2,S1与Q0属于同一话题,若max(M3,2,M3,1,M3,0)≥T,则继续计算下一步骤;
以此类推,以获得所有历史对话中与当前对话输入属于同一话题的相关话题集合。
进一步优选地,关键词提取模块2,具体用于,对相关话题集合中的每个句子进行分词,以获得至少一个词;在预先训练好的word2vec矩阵中匹配出每个词对应的词向量;计算每个词向量对应的方差,其中,方差的计算公式为,Di=(Ci-C1)2+(Ci-C2)2+...+(Ci-Ci-1)2+(Ci-Ci+1)2+...+(Ci-Cm)2,其中,Di为第i个词向量对应的方差,Ci为第i个词对应的词向量,m为总的词向量的个数;选取对应方差最小的词和对应方差最大的词作为当前话题关键词。
本实施例中,词对应的方差越小,表示该词越处于中心位置,即,该词与相关话题集合中的其他词在语义上越接近;而词对应的方差越大,则表示该词越处于边沿位置,即,该词与相关话题集合中的其他词在语义上差异越大。此外,本实施例选取对应方差最小的词和对应方差最大的词作为当前话题关键词,其原因在于,方差最小,表示该词最能够表示当前话题中所论述的内容;方差最大,表示该词最能够表示当前话题所能达到的外沿部分,这两个词从两个不同的维度编码了当前话题的上下文信息,能够更好地把控全局对话信息,从而更好地保持对话连贯性。
尽管本发明已进行了一定程度的描述,明显地,在不脱离本发明的精神和范围的条件下,可进行各个条件的适当变化。可以理解,本发明不限于所述实施方案,而归于权利要求的范围,其包括所述每个因素的等同替换。