本发明涉及一种信息预测的方法和装置,尤其涉及一种预测用户问句的方法和装置。
背景技术:
在实时的客服系统中,希望能够根据用户前面的一系列问题,预测出用户将要提出的问题,这样就可以根据预测的问题预先得到可能的回答答案,大大提高客服系统的效率。
在客服系统中用户进行业务办理或者投诉时,每个用户都会对应一个用户问句的序列,这些用户问句序列往往涵盖客户咨询问题时的行为习惯。现有技术中已有利用这些历史的用户问句序列来预测用户问句的方法。
现有技术中已有利用频繁项集挖掘来达到上述目的,而最为常用的技术是FPGrowth算法,通过统计学的方式,对用户的问题序列建立一颗FPTree,进而得到序列下一个可能的问题。
但现有技术的问题在于:FPTree基于统计学构建的,而对于一些不频繁的项集需要对树进行剪枝,而这种剪枝会损害最终预测的准确性。
技术实现要素:
本发明的目的在于提供信息预测的方法和装置,克服了传统技术中由于信息损失而降低预测准确性的问题,充分利用历史用户问序列,提高了预测的准确性。
根据上述目的,本发明提供一种信息预测的方法,所述方法包括:索引化知识库中的标准问;根据历史用户问句序列,在所述知识库中提取对应的标准问序列,以形成对应的历史索引序列;对所述历史索引序列进行拆分,使得相邻的至少两个历史索引为一组;对所述历史索引序列中的每一组序列进行训练,以得到预测模型;根据用户输入的问句序列,在所述知识库中提取对应的标准问序列,以形成对应的输入索引序列;将所述输入索引序列输入到预测模型中,所述预测模型输出至少一个索引值;将所述至少一个索引值对应的标准问作为所述用户输入的问句序列之后的用户问句所对应的标准问。
在一实施例中,所述对所述历史索引序列进行拆分,使得相邻的至少两个历史索引为一组,包括:对所述历史索引序列进行拆分,使得相邻的4个历史索引为一组。
在一实施例中,所述方法还包括:当历史用户问句序列有更新时,重复所述提取对应的标准问序列、所述拆分、所述训练的过程以得到新的预测模型。
在一实施例中,所述预测模型输出至少一个索引值包括:挑选出概率最高的1个索引值。
在一实施例中,所述预测模型输出至少一个索引值包括:挑选出概率从高到低的多个索引值。
在一实施例中,所述根据历史用户问句序列,在所述知识库中提取对应的标准问序列,以形成对应的历史索引序列还包括:计算历史用户问句序列中的每一个用户问句与知识库中每一个标准问的语义匹配度,将与各历史用户问句匹配度最高的标准问对应的索引提取出来,以形成对应的历史索引序列;所述根据用户输入的问句序列,在所述知识库中提取对应的标准问序列,以形成对应的输入索引序列还包括:计算用户输入的问句序列中的每一个用户问句与知识库中每一个标准问的语义匹配度,将与各用户输入的问句匹配度最高的标准问对应的索引提取出来,以形成对应的输入索引序列。
本发明还提供一种信息预测的装置,所述装置包括:索引化模块,用于索引化知识库中的标准问;标准问提取模块,用于根据历史用户问句序列,在所述知识库中提取对应的标准问序列,以形成对应的历史索引序列;序列拆分模块,用于对所述历史索引序列进行拆分,使得相邻的至少两个历史索引为一组;训练模块,用于对所述历史索引序列中的每一组序列进行训练,以得到预测模型;所述标准问提取模块还用于根据用户输入的问句序列,在所述知识库中提取对应的标准问序列,以形成对应的输入索引序列;预测模块,用于将所述输入索引序列输入所述预测模型,并将所述预测模型根据所述输入索引序列输出的至少一个索引值输出;所述标准问提取模块,还用于将所述至少一个索引值对应的标准问作为所述用户输入的问句序列之后的用户问句所对应的标准问。
在一实施例中,所述标准问提取模块还包括:语义匹配模块,用于计算历史用户问句序列中的每一个用户问句与知识库中每一个标准问的语义匹配度,将与各历史用户问句匹配度最高的标准问对应的索引提取出来,以形成对应的历史索引序列;所述语义匹配模块还进一步,用于计算用户输入的问句序列中的每一个用户问句与知识库中每一个标准问的语义匹配度,将与各用户输入的问句匹配度最高的标准问对应的索引提取出来,以形成对应的输入索引序列。
在一实施例中,所述序列拆分模块对所述历史索引序列进行拆分,使得相邻的4个历史索引为一组。
在一实施例中,所述装置还包括:控制模块,当历史用户问句序列有更新时,所述控制模块控制所述标准问提取模块、所述序列拆分模块、所述训练模块分别重复所述提取对应的标准问序列、所述拆分、所述训练的过程以得到新的预测模型。
在一实施例中,所述预测模块还用于挑选出概率最高的1个索引值输出。
在一实施例中,所述预测模块还用于挑选出概率从高到低的多个索引值输出。
如上所述,本发明通过对标准问和用户问句序列的索引化,并对索引化后的历史用户问句序列进行训练,得出预测模型,利用预测模型就可以实现实时的用户问句预测。
附图说明
图1示出了本发明信息预测方法一实施例的流程图;
图2示出了Word Embedding技术映射过程;
图3示出了LSTM算法示意图;
图4示出了本发明信息预测装置一实施例的示意图。
具体实施方式
本发明技术方案区别于现有技术,利用深度学习技术进行预测模型的训练。而利用深度学习技术的神经网络,必须首先将文字表达转换成数字表达,本发明采用索引化的方式完成文本的数字化表示。在得到预测模型之后,即可根据用户输入的问句序列来进行用户下一个问句的预测。
请参见图1,图1示出了本发明信息预测方法一实施例的流程图,所述方法包括:
101:索引化知识库中的标准问;
102:根据历史用户问句序列,在知识库中提取对应的标准问序列,以形成对应的历史索引序列;
103:对历史索引序列进行拆分,使得相邻的至少两个历史索引为一组;
104:对历史索引序列中的每一组序列进行训练,以得到预测模型;
105:根据用户输入的问句序列,在知识库中提取对应的标准问序列,以形成对应的输入索引序列;
106:将输入索引序列输入到预测模型中,预测模型输出至少一个索引值;
107:将至少一个索引值对应的标准问作为用户输入的问句序列之后的用户问句所对应的标准问。
知识库是通过长期不断的积累形成的,知识库包括多个知识点,每个知识点包括问题及对应的答案,所述问题至少包括一个标准问,所述问题还可以包括多个扩展问,同一知识点中扩展问和标准问表达的语义相同,只是表述方式不同。具体可以将问题中表达最为清晰且最易于维护的表述作为标准问。
在步骤101中,首先将现有的知识库中的所有标准问索引化,即为知识库中的每一个标准问分配一个编号,该编号可以随机分配,不同标准问对应的编号不应该相同。例如知识库中有“H I J K L M N”这几个不同的标准问,在进行索引化时,可以分别给“H I J K L M N”分配“1、2、3、4、5、6、7”作为各自标准问的索引编号。
需要说明的是,所述编号可以不仅是数字,还可以是其它任意的符号。
历史问句序列被保存在历史问句库当中,在进行预测模型训练时,从历史问句库中获取历史用户问句序列,并进行步骤102:根据历史用户问句序列,在知识库中提取对应的标准问序列,以形成对应的历史索引序列。
在一实施例中,提取对应的标准问序列时,是将每一个历史问句序列中的每一个历史问句同知识库中的每一个标准问进行语义匹配度计算,对每一个问句挑选出语义匹配度最高的标准问作为对应的标准问,当一个问句序列的每一个问句获取对应的标准问后,这一个问句序列就提取出了一个对应的标准问序列,由于每个标准问都对应有索引化后的序号,进而这一个问句序列就对应了一个索引序列。运用到模型训练的多个用户问句序列就对应了多个索引序列。
语义相似度计算的方法可以分为两类:基于语义网络的语义相似度和利用大规模语料库的语义相似度。
基于语义网络的语义相似度:主要是利用Word-Net、How-Net等语义词典中的同义词或义原组成的树状层次体系结构来计算相似度,计算模型包括基于语义距离、基于信息量和基于属性等。基于语义距离,主要是通过计算概念在树状层次体系结构中的语义距离来计算语义相似度。该模型简单、直观、但是过度依赖层次网络,并且没有考虑影响语义距离的其它多种因素;基于信息量,主要通过两个概念共同祖先的最大的信息量,来衡量它们的语义相似度。在此模型中信息论和概率论的相关知识得到充分利用,但是该模型多用于树状结构,并且不能细致区分语义差别。
利用大规模语料库的语义相似度:在此类方法中主要是利用两种方法来计算语义相似度,第一种方法通过统计其两个不同的概念在上下文中出现的频率,以频率为基础来计算语义相似度;第二种方法通过计算概念相关性来计算其相似度。
在步骤102中,首先将用户问句与标准问作对应,是由于不同的用户问句表达可能对应了同样的意思,这个同样的意思就是对应的标准问所表达的意思。通过这个步骤就可以将不同表达方式、但意思一致的用户问句标为一个索引编号,进而深度学习过程中能够运用相同的数字表达相同的意思。
如果训练所用序列太长,则最前面的问句和最后面的关联程度很小。如果训练所用序列太短,则起不到时间序列的作用。在步骤103中,对历史索引序列进行拆分,使得相邻的至少两个历史索引为一组。根据经验,每4个用户问句的关联性较高。在一优选实施例中,对所述历史索引序列进行拆分,使得相邻的4个历史索引为一组来进行模型训练。
例如在一个历史用户问句会话中,用户分别提出了“a b c d e f g”这7个问题,根据这7个用户问句,首先在知识库中分别利用语义相似度方法寻找匹配度最高的7个标准问,比如说,找到了“F G P A D R S”这7个标准问分别跟“a b c d e f g”对应,而“F G P A D R S”这7个标准问对应的索引编号分别为“6、7、16、1、4、18、19”,在这里,用相邻的4个历史索引为一组进行模型训练,则(6、7、16、1)、(7、16、1、4)、(16、1、4、18)、(1、4、18、19)分别为一组进行模型训练。
利用深度学习技术进行预测模型训练时,首先将拆分好的历史索引序列进行Word Embedding处理,将每一个索引数值映射到多维向量空间中,得到这个索引数值的多维表达。
关于Word Embedding(词嵌入)技术,举一个例子,给出一个问句序列“A B C D E F G”,希望对文档中每个问句都得到一个对应的向量表示。比如,对于这样的“A B C D E F G”的一个序列,将每一个问句通过Word Embedding进行表示纬度的扩充,最后可以得到:A对应的向量为[0.1 0.6-0.5],B对应的向量为[-0.2 0.9 0.7]等等。之所以希望把每个索引数值变成一个向量,目的还是为了方便计算,比如“求问句A的同义词”,就可以通过“求与问句A对应的多维向量在cos距离下最相似的向量”来做到。
在一优选实施例中,将每个索引序列数值通过Word Embedding技术扩展到4维或者128维。映射过程请参见图2,将一个组内的四个索引t1、t2、t3、t4,分别映射到128维的向量201、向量202、向量203向量204。每个向量内的元素都是不同的数值。
随后将分好组的每个组(在这里是4个为一组)内的索引数值的Word Embedding结果输入到LSTM神经网络中进行训练。
LSTM(长短时间记忆)算法框架请参见图3,各参数含义如下:
xt:表示下一时刻的输入标准问;
ht-1:表示上一课时的输出,即时间序列在隐语义空间,t-1时刻的状态;
c_int:t时刻的输入;
Ct:t时刻的单元状态;
Ct-1:t-1时刻的单元状态;
it:输入门,控制每次迭代运算的输入;
ft:遗忘门,控制遗忘比例;
ot:输出门,控制输出比例,最终输出t时刻的隐语义空间下的状态ht,为下一次迭代做准备。
在训练过程中为防止过拟合可以使用Batch Normalization(批量正则化)技术或者Dropout(丢失数据)技术来进行运算限制。
在LSTM层后再链接一个非全连接的神经网络,即可利用历史问句序列完成对预测模型的训练。在得到训练模型后,即可根据用户问句序列实时预测用户的下一个问句。同模型训练的预处理一样,先要进行步骤105:根据用户输入的问句序列,在知识库中提取对应的标准问序列,以形成对应的输入索引序列。这里还是要用到语义匹配的概念,将匹配度最高的标准问作为相应的用户问句对应的标准问提取出来。然后,进行步骤106,将在步骤105中得到的输入索引序列输入到预测模型中,预测模型便会输出至少一个索引值,同时给出每个索引值对应的可能被问到的概率值,更优地可输出概率从高到低的一个或多个索引值。索引值对应的标准问即为用户输入的问句序列之后的用户问句所对应的标准问。可以输出概率最高的多个索引值,并给出索引值可能被问到的概率值。
在客服系统工作的每一天,都会有新的用户问句产生,那么对预测模型进行训练的语料库也在不断扩大,在另一优选实施例中,使用更新的历史问句再次进行预测模型的训练。并重复不断用新的历史问句进行模型的训练来不断完善预测模型。
模型训练的具体过程包括:
a)将知识库中的标准问进行索引化;
b)将每一个问句序列对应的索引进行拆分,这里采用t+4模式,前后4个组成一个序列。
例如序列为:[1,2,3,4,5,6,7,8,9]
拆分结果为:[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7],[5,6,7,8],[6,7,8,9]
c)将拆分序列数据输入到Word Embedding算法中,将得到隐语义下每个序列多维的特征表示;
再将这些特征表示输入到LSTM算法中,得到状态预测值;LSTM后连接一个非全连接神经网络,即可得到最终的预测模型。
作为一个例子,其中的模型误差函数可以采用mean_squared_error方式,优化器可以采用rmsprop方式。
与传统方式相比,本发明避免了传统方式中剪枝过程,剪枝过程会造成信息的缩小,而在预测中,其实是需要更多的信息来做预测。另外,传统方式无法表征相邻序列相同的方式,而利用深度学习可以很好的解决这个问题,深度学习将序列最终表示为隐语义空间中的表示,并将隐语义空间中的表示作递归处理。
本发明还提供一种预测用户问句对应标准问的装置,对应上述方法,请参见图4,装置400包括:索引化模块401,用于索引化知识库中的标准问;标准问提取模块402,用于根据历史用户问句序列,在知识库中提取对应的标准问序列,以形成对应的历史索引序列;序列拆分模块403,用于对历史索引序列进行拆分,使得相邻的至少两个历史索引为一组;训练模块404,用于对历史索引序列中的每一组序列进行训练,以得到预测模型;标准问提取模块402还用于根据用户输入的问句序列,在知识库中提取对应的标准问序列,以形成对应的输入索引序列;预测模块405,用于将输入索引序列输入预测模型,并将预测模型根据输入索引序列输出的至少一个索引值输出;标准问提取模块402,还用于将至少一个索引值对应的标准问作为用户输入的问句序列之后的用户问句所对应的标准问。
作为一个例子,所述序列拆分模块403对所述历史索引序列进行拆分,使得相邻的4个历史索引为一组。
更优地,所述装置还包括控制模块,当历史用户问句序列有更新时,控制模块控制标准问提取模块402、序列拆分模块403、训练模块404分别重复提取对应的标准问序列、拆分、训练的过程以得到新的预测模型。不断的用新的用户问句序列去训练和更新预测模型,使得预测模型能够不断被改进,并预测的更准。
在另一实施例中,标准问提取模块还包括语义匹配模块,运用语义匹配的方法将与各历史用户问句匹配度最高的标准问对应的索引提取出来,以形成对应的历史索引序列;同时,将与各用户输入的问句匹配度最高的标准问对应的索引提取出来,以形成对应的输入索引序列。
在另一实施例中,预测模块405还可以根据问句被问到的概率值,从高到低进行排序输出一个或多个标准问对应的索引值。
如上所述,本发明通过对标准问和用户问句序列的索引数字化,将运用深度学习技术进行预测模型的训练以及运用深度学习的预测模型进行预测成为可能。同时将相关联的问句分组进行训练和预测,减少了运算量,且提高了预测准确性。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。