一种基于多特征融合的智能客服方法及系统
技术领域
本发明涉及自然语言处理及智能客服技术领域,具体涉及一种基于多特征融合的智能客服方法及系统。
背景技术
智能客服是金融领域的一大研究热点,核心是快速、准确地回答用户的咨询问题。传统的智能客服系统主要是通过单一特征计算用户提问语句和语料库语句的相似度,通过匹配的方式检索出答案。尽管用户提问语句和语料库语句包含相似的关键词,但语义逻辑却可能截然不同。句子相似度是实现智能客服的关键技术,是文本相似度识别的子集。基于深度学习的方法是进行文本相似度计算的重要方法,它从不同角度提取文本中的信息,可以更大限度利用上下文信息,从而提高输入表征的信息量,克服文本语义表示上的鸿沟问题,使计算结果更加准确。基于深度学习的方法利用word2vec等词向量方法将词语转化为词向量后,输入到神经网络模型中,得出句子的语义特征表示,再将语义特征表示送入全连接层或使用距离公式进行语义相似度计算。虽然现有的方法对智能客服数据句子相似度计算有着不错的效果,但是仍然不能满足相似度计算的精度要求。
发明内容
本发明的目的在于提出一种基于多特征融合的智能客服方法及系统,以提高基于深度学习方法的金融证券领域智能客服句子相似度计算,用来对用户的提问进行自动答复。
一种基于多特征融合的智能客服方法,具体如下:
步骤一、建立语料库和用户询问数据集。语料库中含有客服所需的问答信息。将语料库中提取出多个语义相同的语句对和多个语义不同的语句对,组成用户询问数据集。
步骤二、对语料库中的语句进行预处理;预处理中包括中文分词,以得到词汇表。
步骤三、模型建立和训练
3-1.搭建相似度识别模块
相似度识别模块包括预处理层、特征提取模块、特征融合层、分类层和输出层。所述的预处理层用于对用户输入的提问语句S1进行包括中文分词在内的预处理操作;所述的特征提取模块包括语义特征模块和词形特征模块。语义特征模块用于对提问语句S1和语料库语句S2组成的语句对进行语义特征提取,得到语义特征矩阵;词形特征模块用于对提问语句S1和语料库语句S2组成的语句对进行词形特征提取,得到语义特征矩阵。特征融合层将语句对的词形特征矩阵和语义特征矩阵横向拼接,形成融合特征矩阵。分类层用于根据融合特征矩阵进行相似度判断,获得提问语句S1与语料库语句S2是否同义的判断结果。
3-2.模型训练
将用户询问数据集输入到步骤3-1记载的相似度识别模块中进行训练。使得训练后的相似度识别模块能够对用户输入的语句与语料库中的各个语句进行相似度计算。
步骤四、使用者将需要解答的用户提问语句S1输入到相似度识别模块中;并逐个将语料库内的语句作为语料库语句S2输入训练后的相似度识别模块中各自进行相似度计算;并根据所得相似度判断用户提问语句S1与各个语料库语句S2是否同义;当语料库内的一个语句与用户提问语句S1同义时,将该语句对应的答复信息推送给使用者。
作为优选,所述的词形特征模块获取词形特征矩阵的具体过程如下:使用N-Gram算法、最小编辑距离算法和Jaccard相似度方法分别对提问语句S1和语料库语句S2进行处理,分别得到N-gram相似度矩阵、编辑距离相似度矩阵和Jaccard相似度矩阵,将所得的该三个矩阵横向拼接,获得三特征融合的词形特征矩阵。
作为优选,步骤3-1中,语义特征模块获取语义特征矩阵的过程如下:所述的语义特征模块包括词向量嵌入层、网络编码层、注意力交互层、语义特征融合层。用户提问语句S1和一个语料库语句S2分别经过词向量嵌入层将语句中的各个词映射为对应的词向量,每个词向量均对应一个位置向量;位置向量表示对应的词在词库中的位置;词向量与对应的位置向量的维度相同。将各个词向量分别与对应的位置向量横向拼接在一起,得到带位置信息的特征词向量。
所述的网络编码层中设置有LSTM网络、Bi-LSTM网络和CNN网络。由用户提问语句S1和一个语料库语句S2得到的带位置信息的特征词向量进入网络编码层后,各自在LSTM网络和Bi-LSTM网络中进行全局语义特征编码。将用户提问语句S1和一个语料库语句S2经过LSTM网络编码后的输出结果进行点乘后,送入CNN网络提取用户提问语句S1与语料库语句S2之间的相似特征信息,得到CNN相似矩阵;
运用多头注意力机制分别获得用户提问语句S1、语料库语句S2的多头注意力;用户提问语句S1、语料库语句S2的多头注意力进行全局平均池化后经过余弦相似度和曼哈顿相似度两个特征提取方法获取深层语义特征,获得余弦相似矩阵和曼哈顿相似矩阵;将用户提问语句S1、语料库语句S2经Bi-LSTM网络编码后的输出结果经过乘法、减法、最大值特征提取方法,获得乘法提取矩阵、减法提取矩阵和最大值提取矩阵。
将根据用户提问语句S1和语料库语句S2获取的CNN相似矩阵、余弦相似矩阵、曼哈顿相似矩阵、乘法提取矩阵、减法提取矩阵和最大值提取矩阵横向拼接,获得语义特征矩阵。
作为优选,步骤3-1中获取语句的多头注意力的过程如下:语句的多头注意力计算过程如式(1)、(2)、(3)所示。
MultiHead(Q,K,V)=Concat(head1…headh)W0 (1)
其中;MultiHead(Q,K,V)为被计算语句的多头注意力;head
i为第i个子空间的注意力,其表达式如式(2)所示;W
0为参数矩阵,
Concat(·)为拼接矩阵函数;d
model为词向量的维度;
其中;矩阵Q、K、V相同,均为LSTM网络的语义基础矩阵;Attention(·,·,·)表示注意力计算函数,Attention(·,·,·)以Q、K、V为变量的表达式如式(3)所示。
其中;softmax(·)为softmax激活函数运算;
分别第i个子空间的三个权重系数。
作为优选,步骤一中,语料库通过Python网络爬虫技术模拟浏览器行为的方式,从网络问答平台中抓取得到。
作为优选,所述的预处理操作包括去无用字符操作、去停用词操作、中文纠错操作和中文分词操作;中文分词操作后,对所得词汇表中的各个词分别进行向量化操作。
作为优选,所述的去无用字符操作通过正则表达式实现。
作为优选,所述的中文纠错操作,分为错误检测和错误纠正两个部分。错误检测是使用Jieba分词对比粒度的方式形成疑似错误位置候选集;错误纠正是使用音似、形似词典替换疑似错误位置候选集中的各个错误位置的词。
作为优选,所述的向量化操作是使用Word2Vec模型中的CBOW方式对语料库中的各语句对经分词后得到的各个词进行向量化操作,获取各个词相应的词向量矩阵。
本发明一种基于多特征融合的智能客服系统,包括相似度识别模块。所述的相似度识别模块包括预处理层、特征提取模块、特征融合层、分类层和输出层。所述的预处理层用于对用户输入的提问语句S1和进行包括中文分词在内的预处理操作;特征提取模块包括语义特征模块和词形特征模块。词形特征模块用于对提问语句S1和语料库语句S2组成的语句对进行词形特征提取,得到词形特征矩阵。语义特征模块用于对提问语句S1和语料库语句S2组成的语句对进行语义特征提取,得到语义特征矩阵;特征融合层将语句对的词形特征矩阵和语义特征矩阵横向拼接,形成融合特征矩阵。分类层用于根据融合特征矩阵进行相似度判断,获得提问语句S1与语料库语句S2是否同义的判断结果。
所述的语义特征模块包括词向量嵌入层、网络编码层、注意力交互层和语义特征融合层。词向量嵌入层用于将用户提问语句S1和一个语料库语句S2中的各个词映射为对应的词向量,且每个词向量均对应一个位置向量,并将词向量与对应的位置向量横向拼接在一起,得到带位置信息的特征词向量。
所述的网络编码层中设置有LSTM网络、Bi-LSTM网络和CNN网络。LSTM网络、Bi-LSTM网络各自对各个特征词向量进行全局语义特征编码。用户提问语句S1和一个语料库语句S2经过LSTM网络编码后的输出结果进行点乘。CNN网络对点乘结果提取相似特征信息,得到CNN相似矩阵;用户提问语句S1、语料库语句S2经Bi-LSTM网络编码后的输出结果经过乘法、减法、最大值特征提取方法,获得乘法提取矩阵、减法提取矩阵和最大值提取矩阵。
所述的注意力交互层运用多头注意力机制分别获得用户提问语句S1、语料库语句S2的多头注意力;并对用户提问语句S1、语料库语句S2的多头注意力进行全局平均池化后经过余弦相似度、曼哈顿相似度特征提取方法,获得余弦相似矩阵和曼哈顿相似矩阵;
所述的语义特征融合层将根据用户提问语句S1和语料库语句S2获取的CNN相似矩阵、余弦相似矩阵、曼哈顿相似矩阵、乘法提取矩阵、减法提取矩阵和最大值提取矩阵横向拼接,获得语义特征矩阵。
本发明的有益效果如下:
1、本发明方法通过引入多头注意力机制,充分利用关键词和词频方面信息提取两个语句的词形特征,以及深度学习方法提取两个语句的语义特征。其中,本发明所用的多头注意力由多个分支构成,能够捕捉文本中每一个子空间的信息以理解字词之间的依赖关系,据此进行相似度计算,能够提高客服系统的智能性。该方法易于实现,数据预处理操作简单,具有更好的准确率和泛化能力。
2、本发明同时对语句对的语义特征和词形特征进行相似性判断,并将两者融合作综合判断,能够更加准确的判断两个语句是否同义,从而在语料库中选取出与用户提问语句同义的语句的答复信息。
附图说明
图1是本发明中相似度识别模块的模型图;
图2是本发明中语义特征模块的模型框架图;
图3是本发明中语义特征模块的网络编码层、注意力交互层、语义特征融合层的详细结构图。
具体实施方式
下面结合具体实施例对本发明做进一步分析。
一种基于多特征融合的智能客服方法,采用的客服系统包括数据获取模块、数据预处理模块和相似度识别模块。数据预处理模块包括去无用字符部分、去停用词部分、中文纠错部分、中文分词部分和向量化部分。相似度识别模块包括预处理层、特征提取模块、特征融合层、分类层和输出层。特征提取模块包括语义特征模块和词形特征模块。语义特征模块用于对提问语句S1和语料库语句S2组成的语句对进行语义特征提取,得到语义特征矩阵;词形特征模块用于对提问语句S1和语料库语句S2组成的语句对进行词形特征提取,得到语义特征矩阵。语义特征模块包括词向量嵌入层、网络编码层、注意力交互层和语义特征融合层。
该基于多特征融合的智能客服方法,具体步骤如下:
步骤一、数据获取模块建立语料库和用户询问数据集。
数据获取模块通过Python网络爬虫技术模拟浏览器行为的方式,从网络问答平台(本实施例中选用“百度知道”)动态抓取数据,得到金融证券领域的语料库;将语料库中提取出多个语义相同的语句对和多个语义不同的语句对,组成用户询问数据集。语义相同的语句对为正样本;语义不同的语句对为负样本;本实施例中,用户询问数据集中包含117588个已知是否同义的语句对,其中数据正负样本比为52877:64711。用户询问数据集用于训练相似度识别模块;用户询问数据集中的每个语句对均可以分为一个用户提问语句S1和一个语料库语句S2。供相似度识别模块进行相似性判断的训练。相似性即为是否同义。将用户询问数据集中的数据按照6:4的比例拆分为训练集和测试集。
步骤二、数据预处理模块对的语料库内的语句进行去无用字符、去停用词、中文纠错、中文分词,得到词库。之后,对词库中的各个词分别进行向量化操作。
2-1.去无用字符操作。利用正则表达式删除语料库的各语句中的无用字符。无用字符包括数字、标点和字母。
2-2.去停用词操作。根据停用词表匹配删除语料库的各语句中的停用词。停用词表提前建立得到。
2-3.中文纠错操作,分为错误检测和错误纠正两个部分。首先使用结巴(Jieba)分词对比粒度形成疑似错误位置候选集来进行错误检测;然后使用音似、形似词典替换疑似错误位置候选集中的各个错误位置的词实现错误纠正。
2-4.中文分词操作。根据实际情况分析对比,采用Jieba中文分词的精准模式来对语料库中的文本进行分词。与此同时,虽然Jieba有新词识别能力,但依然存在识别不出新词而导致分词不正确的情况。因此这里选择载入自定义词典,其中包含Jieba默认词库中没有的金融证券方向的专业词汇,以便更加精准地分词,并对语料库分词后获得相应的词汇表。
2-5.向量化操作。使用Word2Vec模型中的CBOW方式(Continuous Bag-Of-WordsModel)对语料库中的各语句对经分词后得到的各个词进行向量化操作,获取各个词相应的词向量矩阵。
步骤三、模型训练
3-1.模型搭建
如图1所示,搭建的相似度识别模块包括预处理层、特征提取模块、特征融合层、分类层和输出层。
预处理层用于对用户输入的提问语句S1按照步骤2-1至2-4中的方法进行包括去无用字符、去停用词、中文纠错、中文分词在内的预处理操作;特征提取模块包括语义特征模块和词形特征模块。语义特征模块用于对提问语句S1和语料库语句S2组成的语句对进行语义特征提取,得到语义特征矩阵;词形特征模块用于对提问语句S1和语料库语句S2组成的语句对进行词形特征提取,得到词形特征矩阵。特征融合层将语句S1和语句S2组成的语句对的词形特征矩阵和语义特征矩阵横向拼接(即将语义特征矩阵拼接到词形特征矩阵的右侧),形成融合特征矩阵。之后,将融合特征矩阵输入到分类层进行相似度判断。最终将机器学习分类器分类结果作为提问语句S1与语料库语句S2是否同义的判断结果。
词形特征模块获取词形特征矩阵的具体过程如下:使用N-Gram算法(N元模型)、最小编辑距离算法(Edit Distance)和Jaccard相似度(Jaccard similarity coefficient)三种传统统计特征方法分别对提问语句S1和语料库语句S2进行处理,分别得到N-gram相似度矩阵、编辑距离相似度矩阵和Jaccard相似度矩阵,将所得的该三个矩阵横向拼接,获得三特征融合的词形特征矩阵。
如图2所示,语义特征模块包括词向量嵌入层、网络编码层、注意力交互层、语义特征融合层。语义特征模块获取语义特征矩阵的具体过程如下:语义特征模块采用基于多头注意力机制的神经网络模型LBMA(LSTM based on Multi-head Attention),该模型为本发明与现有技术的一个主要区别点。
用户提问语句S1和一个语料库语句S2分别经过词向量嵌入层将语句中的各个词映射为对应的词向量,每个词向量均对应一个位置向量;位置向量表示对应的词在词库中的位置;词向量与对应的位置向量的维度相同。获取位置向量的目的是区分句子中词的位置信息,并将词向量和位置编码合并输入网络编码层。将各个词向量分别与对应的位置向量拼接在一起,得到带位置信息的特征词向量。
如图3所示,网络编码层中设置有LSTM网络、Bi-LSTM网络和CNN网络。由用户提问语句S1和一个语料库语句S2得到的带位置信息的特征词向量进入网络编码层后,各自在LSTM网络和Bi-LSTM网络中进行全局语义特征编码。将用户提问语句S1和一个语料库语句S2经过LSTM网络编码后的输出结果进行点乘后,送入CNN网络充分提取用户提问语句S1与语料库语句S2之间的相似特征信息,得到CNN相似矩阵;
运用多头注意力机制分别获取用户提问语句S1、语料库语句S2的LSTM网络输出结果在不同子空间的注意力,从而分别获得用户提问语句S1、语料库语句S2的多头注意力;语句的多头注意力计算过程如式(1)、(2)、(3)所示。
MultiHead(Q,K,V)=Concat(head1…headh)W0 (1)
其中;MultiHead(Q,K,V)为被计算语句的多头注意力;head
i为第i个子空间的注意力,其表达式如式(2)所示;W
0为参数矩阵,
Concat(·)为拼接矩阵函数;d
model为词向量的维度;
其中;矩阵Q、K、V相同,均为LSTM网络的语义基础矩阵;Attention(·,·,·)表示注意力计算函数,Attention(·,·,·)以Q、K、V为变量的表达式如式(3)所示。
其中;softmax(·)为softmax激活函数运算;
分别第i个子空间的三个权重系数。
用户提问语句S1、语料库语句S2的多头注意力进行全局平均池化后经过余弦相似度和曼哈顿相似度两个特征提取方法获取深层语义特征,获得余弦相似矩阵和曼哈顿相似矩阵;将用户提问语句S1、语料库语句S2经Bi-LSTM网络编码后的输出结果经过乘法、减法和最大值三个特征提取方法,获得乘法提取矩阵、减法提取矩阵和最大值提取矩阵。
将根据用户提问语句S1和语料库语句S2获取的CNN相似矩阵、余弦相似矩阵、曼哈顿相似矩阵、乘法提取矩阵、减法提取矩阵和最大值提取矩阵横向拼接的方式实现语义特征融合,获得语义特征矩阵。
3-2.模型训练
将用户询问数据集输入到步骤3-1记载的相似度识别模块中进行训练。训练后的相似度识别模块能够对用户输入的语句与语料库中的各个语句进行相似度计算。所得相似度为0到1之间的数值。
步骤四、使用者将需要解答的用户提问语句S1,输入到客服系统中;逐个将语料库内的语句作为语料库语句S2,与用户提问语句S1输入训练后的相似度识别模块中进行相似度计算;直到出现一个语句与用户提问语句S1同义。
当语料库内的一个语句与用户提问语句S1的相似度高于阈值时,认为该语句与用户提问语句S1同义,将该语句对应的答复信息推送给使用者。