基于多特征融合的羊养殖问句相似度评价方法

2021-03-01 08:44李茂胜王天一
智能计算机与应用 2021年12期
关键词:养羊向量神经网络

李茂胜,王天一

(贵州大学 大数据与信息工程学院,贵阳 550025)

0 引 言

进入互联网时代以来,各行各业的数据呈指数级增长,面对这些海量的数据,以往的搜索引擎[1]已逐渐不能满足用户准确、快速获取信息的需求。传统搜索引擎主要存在以下几点不足:

(1)通过关键字匹配进行搜索,导致返回的信息多且杂乱,有太多无关的信息被搜索引擎获取。

(2)没有对用户输入的句子进行句法、语法、语义方面的分析,只是简单地模糊搜索(同义词搜索),考虑的因素太少,影响搜索的准确率。

(3)由于用户界面的目录一般是按照类别进行分类,用户需要逐级进行搜索才能找到最终的类别和结果,导致速度较慢,耗费了大量时间。

面对以上传统搜索引擎的不足,问答系统[2]应运而生。问答系统是一种高效、智能的信息检索系统。用户可以使用自然语言来进行输入,系统通过相关的自然语言处理技术,对用户的输入进行分析,通过对数据库中的问句进行匹配,最终返还给用户一个简洁、准确的答案。问句相似度计算方法是FAQ 问答系统的核心,很大程度上决定问答系统的好坏。问句相似度计算方法主要分为以下3 种[3],分别是基于字符串的方法、基于知识库的方法和基于统计的方法。

基于字符串的方法主要是对输入的句子或组成句子词语的重复度、长度、词序等直接进行比较[4-5]。主要方法有编辑距离、最长公共子序列算法、N-Gram模型、Jaccard 系数等。基于知识库的方法主要分为两类:一是基于结构化词典来衡量词语间的相似度,从而计算句子的相似度。常见的词典有《知网》(HowNet)、《同义词词林》、《WordNet》等,另一类则是通过网络知识的方法。该方法主要是利用维基百科、百度、搜狗等网络知识库资源,通过网页链接、内容进行相似度计算。基于统计的方法在近年来取得了重要进展,该方法假设一个文本的语义只与其组成的词语有关,与上下文、词序、语法及句子结构无关。通过把词语映射为向量,把句子用向量来表示,计算两个句子向量间的距离来表示句子的相似度。基于统计的方法主要分为向量空间模型(如VSM[6])和主题模型(如LSA[7]、PLSA[8]、LDA[9])。近年来,随着深度学习的高速发展,通过神经网络训练词向量成为一种主流方法。一些词向量生成工具,如word2vec[10]、Glove[11]、FastText[12]等,逐渐成为词向量预训练手段。基于神经网络的词向量相比于传统的哑编(one-hot)有以下优点:

(1)词向量维度明显降低。把词语用固定长度的向量来表示,大大减少了内存和计算量。

(2)基于神经网络的词向量能够很好地表示词语之间的语义。

由于单一的相似度计算方法主要是针对某一方向进行优化,均存在一定缺点。许多学者融合多个相似度计算方法,对算法进行改良,取得了不错的效果[13-14]。本文通过对多种自然语言处理(Natural Language Processing,NLP)常见特征以及3 种改良的深度学习模块提取的特征进行融合,设计了一种问句相似度模块,并运用在羊养殖FAQ 问答系统中。该问答系统将为养羊户提供简洁、具体的答案,相信通过该问答系统,能够解决养羊户在养殖过程中的常见问题。

1 构建数据集及训练词向量

1.1 问句对数据集构建

本文实验所使用的问句对来源于《山区肉羊高效养殖问答》、《农区科学养羊技术问答》、《现代羊病防制实战技术问答》等羊养殖相关问答书籍。经过整理,得到2 500 个养羊基础问句对。在这2 500个问句对的基础上,用Python 语言编写对应“百度问答”网站的爬虫代码,对这2 500 个养羊基础问句分词后的句子进行爬虫。每个养羊基础问句爬虫了10 个相似的问句,经过人工筛选并剔除语义无关的语句后,形成包含2 500 组、11 000 个问句的数据集,每组相似句子2~8 个不等。数据集实现步骤如下:

Step 1根据羊养殖相关问答书籍整理得到2 500个养羊基础问句。

Step 2对2 500 个养羊基础问句分词后进行爬虫后,人工筛选并剔除与语义无关的语句,得到2 500组共11 000 个问句,每组相似的句子2~8 个不等。

Step 3在2 500 组问句中,每次选取1 组问句Qi={qi1,qi2,…,qik}。

Step 4由步骤2 可知,Qi中qi1,qi2,…,qik都相似,因此任取2 个问句qi1、qi2就可构成一个相似问句对。只需取尽Qi中2 个句子的组合就得到了Qi全部的相似问答对。对于不相似问句对,由于各组句子都不相似,所以只须从Qi中任取一个句子和其他组句子任意组合就可构成。最后,把得到的全部问答对存入数据集中。

Step 5重复上述步骤,对2 500 组进行处理,则可得到全部的数据集。

通过以上处理可以得到72 260 个问句对。其中相似问句对和不相似问句对的比例为1∶1,数目均为36 130,避免在深度学习训练中造成数据平衡性对相似和不相似的权重的影响。生成的数据示例样本见表1:其中index 为句子对的编号,s1 和s2 分别代表句子对的句子1 和句子2,label 则表示句子对的相似度,1 表示相似,0 表示不相似。

表1 数据集样本Tab.1 Dataset sample

1.2 问句对数据集的词向量生成

在NLP 任务中,需要将人类语言建模为向量的形式,这一过程首先需要对句子进行分词处理,再把词语嵌入到向量空间中,即词嵌入。本文使用jieba作为分词工具,并把养羊相关领域词语加入自定义词典,这样可以正确切分“农膜暖棚式”、“青绿饲料”等羊养殖专业词汇。经过jieba 分词前后的样本见表2。

表2 问句分词结果Tab.2 Question partition results

分词后的句子向量化,使用谷歌开源的训练词向量工具word2vec 完成,将jieba 切分后的句子向量化,作为深度学习特征提取模块的输入。本文采用连续词袋模型,通过对上下文单词,来预测当前单词出现的概率。词向量维度设置为300,窗口大小设置为5,通过养羊相关的领域知识库进行词向量训练。

2 特征提取及最终特征融合模型

2.1 多特征融合模型结构

本文提出了一种基于多特征融合的相似度计算方法。该方法的实现过程是输入问句对,转化为词向量矩阵,然后进行特征提取,最后通过stacking 用来训练一个分类器,对问句对进行分类。多特征融合模型结构总体框架如图1 所示。其中,特征提取是其中的核心部分,主要分为两个方向:一是直接对数据集提取一些常见的NLP 特征,如编辑距离、ngram 相似性等。二是通过神经网络模型计算问句对的相似度作为特征。主要通过3 个深度学习模块(曼哈顿相似度、注意力机制相似度、比较-聚合相似度)分别提取特征。

图1 多特征融合模型结构Fig.1 General structure of multi feature fusion model

2.2 NLP 数据特征

NLP 数据特征主要是通过编写相对应的代码,提取问句对常见特征。本文提取了10 个NLP 特征,并把提取的特征用列的形式保存,构成10 维向量,作为多特征融合模型输入数据的一部分。本文提取的常见特征如下:

(1)长度上的不同:计算两个句子长度的差。

(2)编辑距离:指两个字符串A、B,A 编辑为B所需的最少编辑次数。如果其编辑距离越小,则其越相似。反之,亦然。

(3)N-Gram 相似性:将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成长度是N的字节片段序列。每一个字节片段称为gram,对所有的gram 的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram 列表,也就是这个文本的向量特征空间。

(4)句子中词语个数的特征:将提取6 种与词语个数相关的特征。如,两个句子中相同词的个数分别除句子的最大及最小以及平均个数作为特征;两个句子不同词的个数分别除以对应句子词语总个数;计算两个句子的交集除以并集得到杰卡德(Jaccard)相似度等等。

(5)两个语句词向量组合的相似度:主要利用经word2vec 训练的词向量对两个句子进行向量表示,再计算两个语句词向量组合的余弦相似度。

2.3 神经网络特征

在介绍深度学习相似度模块之前,先对后面用到的孪生神经网络(Siamese network)和长短时神经网络(Long Short-Term Memory,LSTM)进行简单介绍。

孪生神经网络也叫做“连体的神经网络”。神经网络的“连体”是通过共享权值来实现孪生神经网络。首先将两个输入分别输入两个神经网络中,再通过这两个神经网络分别将输入映射到新的空间,形成输入在新的空间中的表示,最后计算Loss,评价两个输入的相似度。

循环神经网络(RNN),具有记忆的功能,能够很好地处理和预测时间序列,适用于文本处理。但伴随着序列输入越长,越可能导致梯度消失和梯度爆炸问题。而RNN 网络的变种LSTM,通过特别构建的门结构,对细胞状态进行删除或添加信息,就能较好地解决这两个问题。

2.3.1 曼哈顿距离相似度模型(siamese-lstmmandist,SLM)

曼哈顿距离相似度模型是以孪生神经网络和LSTM 为基础构建的相似度模型[13]。由输入层、嵌入层、LSTM 层、自定义的曼哈顿层和输出层5 部分组成,模型结构如图2 所示。输入层把每个词语在词典中得到一个词语编号序列传递给嵌入层;嵌入层则将各个词语编号映射为word2vec 词向量后,作为LSTM层的输入。两个LSTM 开始对句子1、2 的词向量进行学习,两个LSTM 层彼此共享权重;将LSTM 学习后的向量输入曼哈顿层,计算曼哈顿距离;再通过dropout 来防止过拟合,以及归一化来提高计算速度;最后在输出层通过softmax函数输出结果。

图2 曼哈顿距离相似度模型结构图Fig.2 Manhattan distance similarity model structure

2.3.2 注意力机制相似度模型(Siamese-lstmattention,SLA)

注意力机制相似度模型是以LSTM 和注意力机制(Attention)为基础构建的相似度模型[17]。由输人层、嵌入层、LSTM 层、注意力层和输出层5 部分组成,模型结构如图3 所示。输入层、嵌入层、LSTM层的功能同上个模型。其不同之处在于,LSTM 学习到的向量加上注意力层,对LSTM 输入的向量分配不同的权重,进行选择性输入,更好地表示句子的语义。再通过全连接层降低维度,dropout 来防止过拟合,归一化来加速收敛速度;最后在输出层输出问句对的相似结果。

图3 注意力机制相似度模型结构图Fig.3 Structure of attention mechanism similarity model

2.3.3 改进的比较-聚合相似度模型

(Approve-Compare-Aggregate-Model,ACAM)

该模型基于Compare-Aggregate-Model[15]进行了改进,模型结构如图4 所示。该模型主要做了3部分改进。

图4 改进的比较-聚合相似度模型结构图Fig.4 Structure of improved comparison-aggregation similarity model

第一部分:在左边词向量输入的情况下,右边添加了字符向量作为输入。主要是为了提取词语内字间的信息,以及对超出词典的词进行表示。

第二部分:对embedding 层分别用注意力机制和bi-lstm 对向量分别表示,然后把这两个向量进行拼接。加入注意力机制后使得语句向量在词上有了重心,分配的权重不同。

第三部分:对前面处理过的句子向量进行更多的交互处理,对输入的两个句子向量进行相乘、相减、取最大值等操作。通过对句子向量进行这几种交互处理能够更好地比较句子之间的语义,提高模型准确率。

最后,模型把交互处理后的向量和前面LSTM和CNN 网络提取的向量进行拼接,并通过全连接层进行降维,最后通过输出层进行输出。

2.4 stacking 建立分类模型

2.4.1 构建多个特征组成的数据集

通过代码提取了NLP 数据特征,以及通过3 个不同深度的学习网络提取了SLM 特征、SLA 特征、ACAM 相似度特征。把提取的12 个特征组合在一起构建一个12 维的向量数据集,用来训练一个机器学习的分类模型。

2.4.2 构建分类模型

构建的分类模型主要是基于Sklearn 库的常见分类方法,通过stacking 算法进行融合得到。主要把分类器分为了两级:第一级别的分类器(初级学习器)有随机森林、朴素贝叶斯、支持向量机、逻辑回归,第二级分类器(次级学习器)为决策树。前面多个模型提取的特征所组成的数据集输入初级学习器分别进行训练,并将训练后所得到的结果作为次级学习器的输入,最后通过次级学习器进行分类以后,输出最终结果。总体Stacking 计算过程如图5 所示。

图5 Stacking 计算结构图Fig.5 Stacking calculation structure

3 实例验证

实验环境设置为:Intel(R)Core(TM)i5-10200H CPU 8 核处理器;GPU 为RTX 2060,运行内存16 G。

实验通过对72 106 个问句对划分为训练集、验证集,比例为8∶2。

3.1 评测标准

本次实验通过精确度(Accuracy)、查准率(Precise)、查全率(Recall)、F1 分数这4 个评测标准来衡量模型的性能,评测标准的具体公式见表3。

表3 评测标准公式Tab.3 Evaluation metrics

其中,精确度(Accuracy)表示预测符合标准的样本与总样本的比例;查准率(Precise)表示正确预测正样本占实际预测为正样本的比例;查全率(Recall)表示正确预测正样本占正样本的比例。F1分数是分类问题的一个衡量指标,其是Accuracy和Recall的调和平均数,能更好地衡量分类的好坏。所以在机器学习竞赛中,F1 常常作为最终测评的方法。

表3 中TP、FN、FP、TN的含义见表4。TP表示正确地把正样本预测为正;FN表示错误地把正样本预测为负;FP表示错误地把负样本预测为正;TN表示正确地把负样本预测为负。在机器学习中尤其是统计分类中,通过混淆矩阵能够很容易地看到机器学习是否混淆了样本的类别。矩阵的每一列表达了分类器对于样本的类别预测,矩阵的每一行表达了样本所属真实类别。

表4 混淆矩阵Tab.4 Confusion matrix

3.2 实验结果分析

4 种方法在养羊验证集上训练的结果见表5。可以看出,本文方法是把前面提取的NLP 特征及几种深度学习提取的特征作为集成学习stacking 的输入,通过训练一个分类器,得到结果。相较前面3 个方法,本文方法的各项评价指标都接近99%,在4 个评价指标上具有最优的综合性能,表明该方法能够很好地计算问句相似度,改善羊养殖问答系统的性能。但是,由于stacking 方法需要计算前面多种模型的特征作为输入的数据,在时间效率上的对比,本文方法效率较低,还有值得改善的地方。在后续设计羊养殖问答系统时,可以结合问句分类模型,减少问答系统在相似度计算模块的匹配数量,以弥补本方法效率较低的问题。

表5 多种相似度计算方法结果及时间效率Tab.5 Results of multiple similarity calculation methods

4 结束语

本研究通过对常用的NLP 特征和3 种深度学习方法进行特征提取分类,能够很好地考虑多种特征的情况,相比于提取单一特征的方法,该方法通过对多种方法提取的特征进一步分类,明显提升了4种评价指标,且在验证集上各评价指标都接近99%。因此,本文提出的方法明显优于前2 种方法,对比第3 种方法也有了一定提升。

基于该相似度计算方法的羊养殖问答系统,能够准确匹配用户的问题,提供对应答案。相信这个羊养殖问答系统能够帮助养殖户解决许多养殖问题,能够促进养羊业更好的发展。

但本文的工作还有些不足,主要是在创建养羊数据集时,对于爬虫得到的相似问句需要人工进行判断,费时费力,且具有一定的主观性。下一步的工作会围绕如何自动或半自动构建知识库;或者对基于知识图谱的问答系统进行设计。

猜你喜欢
养羊向量神经网络
学会这五招 轻松节约养羊成本
基于神经网络的船舶电力系统故障诊断方法
早春养羊需防六大病害
基于人工智能LSTM循环神经网络的学习成绩预测
向量的分解
MIV-PSO-BP神经网络用户热负荷预测
分头行动
续写《亡羊补牢》
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
向量垂直在解析几何中的应用