APP下载

基于知识图谱的齿轮传动智能问答系统

2022-10-30王学军何文杰赵宇

农业装备与车辆工程 2022年2期
关键词:传动齿轮图谱

王学军,何文杰,赵宇

(200093 上海市 上海理工大学 机械工程学院)

0 引言

齿轮传动是一种瞬时传动比恒定、传动效率高、传动寿命长的传动方式[1]。然而齿轮传动设计过程中知识点多且复杂,公式和检索手册更是让人眼花缭乱,因此,构建一种基于新型数据结构的齿轮传动设计问答系统,简化齿轮传动设计流程,非常有研究价值。

自2012 年被Google 成功应用到搜索引擎方面后,知识图谱作为一种新型的数据结构受到了研究者们的广泛关注。黄登奎[2]提出基于自顶向下和自底向上相结合的知识图谱建模方法,人工定义构建工程机械维修保养知识图谱的顶层数据模式;赵倩[3]采用基于模式的数据映射机制,将关系型数据库(RDB)数据转化为资源描述框架(RDF)四元组进行存储,提出了数据驱动的增量式本体构建技术建立数控设备故障本体模型;凡天娣[4]根据人工获取的实体及其语义关系构建焊接工艺知识图谱,提出了一种基于本体的船舶焊接工艺知识图谱构建方法。

目前的研究工作中以知识图谱形式构建问答系统的技术大都很成熟,但是基本都采用了人工方式去筛选实体及实体间关系。齿轮传动设计领域中有大量专有名词和命名实体需要识别,人工工作量巨大。对此,本文提出一种优化后的Att-BiLSTM-CRF 模型,大大提升了命名实体的识别效率。通过Python 连接Neo4j 平台自动构建知识图谱,并采用基于余弦距离的相似度算法和维特比(Viterbi)最优路径算法来进行关键词的搜索匹配。测试结果表明,系统回答的内容准确率高且能返回部分关联的实体信息,有效提升了问答系统的智能程度。

1 算法预览

在面对大批齿轮传动[5]文件时,工作量最大的是自然语言处理部分。本章首先介绍了分词算法,然后介绍了基于词性标注的关键词提取算法,最后介绍了在对问题关键词进行搜索时采用的基于余弦距离计算的相似度算法。

1.1 基于规则匹配的分词算法

在对齿轮传动设计文档进行自然语言分词时,我们提出了一种融合了多个匹配方法的复杂规则集:首先,分别执行正向和逆向最长匹配,当两者匹配出的词的数目不同时,优先返回词数更少的;当出现单字时,优先返回单字更少的;单字数也相同,则优先返回逆向最长匹配的结果。可知正向匹配或逆向匹配的算法复杂度为O(n),双向最长匹配的复杂度为O(2n),虽然算法复杂度变高,但是分词正确率大幅提升。这种规则的出发点来自于语言学上的启发,这样的算法也称为启发式算法[6]。

1.2 基于词性标注的关键词提取

在进行关键词提取时,首先对分词后的各词进行词性标注。将词与词性分别对应存储在两个不同的列表中,对词性列表进行检索,得到所需提取词性在列表中的位置。然后将词列表中对应位置的值进行输出,此时输出的值便是所需提取的关键词。本系统所提取的关键词词性为动词、名词以及识别出的命名实体和齿轮传动专用名词。

1.3 基于余弦距离的文本相似度计算

精确搜索是指当输入的齿轮传动问题和知识图谱中的节点内容完全一致时输出其对应答案。相似度计算则是需要先设定相似度阈值,当问句中提取出的关键词与齿轮传动知识图谱中的关键词的相似度达到设定的阈值时,则判定两者相似且返回该节点对应的答案。结果显示,基于相似度计算的查询方法使得查询结果的召回率更高。

节点相似度的计算方法:假设有2 个词向量分别为x 与y,词x 向量为(x1,x2,x3,…,xn),词y 向量为(y1,y2,y3,…,yn)。用余弦相似度计算公式计算文本相似度:

2 齿轮传动命名实体识别的模型优化

对于目前的智能问答系统来说,难点主要在于文档中大量命名实体的识别。传统的BiLSTMCRF 模型是一种常用的基于深度学习的句子级命名实体识别方法,然而遇到多语句文档时,该模型会出现上下文语句中命名实体标注不一致的情况。针对该问题,本文创新地引入attention 机制设计了一种优化后的Att-BiLSTM-CRF 模型,优化后的模型利用attention 机制获得文档级的全局信息,使得文档中同一命名实体在多个独立的语句间强制实现标记的一致性。

本节首先介绍神经网络模型中使用的特征嵌入,其次介绍了BiLSTM-CRF 模型,然后给出优化后的Att-BiLSTM-CRF 模型,最终比较了两种模型分别在句子级和文档级中命名实体识别的性能。

2.1 特征嵌入

词嵌入(Word embedding),又称分布式词向量,可以从大量未标记的语料库中捕获单词的语义和句法信息。与词袋模型(BOW)表示相比,词向量具有低维、高密度的优点。

特征嵌入就是对原先的词嵌入添加多个特征,进行了特征增强,本文的方案是在单词嵌入的基础上加入字符嵌入作为基本特征。字符特征主要包括部首、前缀和后缀等。与以往传统的基于人工处理的字符特征提取方法不同,本文让字符嵌入在训练的同时进行机器学习。首先,系统对字符嵌入的字符查找表进行随机初始化处理;然后,将单词中每一个字符对应的字符嵌入按正、反两种顺序进行排序,形成双向长短时记忆(BiLSTM);最后,将BiLSTM 的前后向序列的串联结果作为单词的字符级特征。为了实现高质量的单词嵌入,对照现有文档和语料库,利用word2vec 工具,以skip-gram 模型作为预训练的词嵌入,然后再对词嵌入进行训练。

2.2 基于深度学习BiLSTM-CRF 模型

本模型是基于BIO 标注集对命名实体进行标注,其中,人名首字用B-PER 来表示,人名非首字用I-PER来表示;地名首字用B-LOC来表示,地名非首字用I-LOC 来表示;组织机构名首字用B-ORG 来表示,组织机构名非首字用I-ORG 来表示;该字不属于命名实体的一部分时用O 代表。如图1 所示。

图1 命名实体标注Fig.1 Named entity annotation

系统先把输入的问答文本切分成很多句子。假设某句有xn个字,字的序列记作:x=(x1,x2,…,xn)。该句子中第i 个字在已有字典中的id 用xi来表示,因此能得到句子中每个字的one-hot 向量,维数是字典总字数。

如图2 所示,look-up 层是模型的第1 层。使用2.1 预训练中的embedding 矩阵将句子中的xi的one-hot 向量从高维度向低维度进行映射形成稠密的字向量(character embedding)即xi∈Rd,向量的维度用d 来表示。在进行下一层的输入之前,需要先设置dropout 以缓解过拟合。

图2 基本的BiLSTM-CRF 模型Fig.2 Basic BiLSTM-CRF model

双向LSTM 层是模型最主要的第2 层,能实现自动提取句子特征的功能。将需要处理句子中各个字的char embedding 序列(x1,x2,…,xn)作为双向LSTM 各个时间步的输入,处理完输入后,再将正向LSTM 输出的隐状态与反向LSTM 的按位置对各位置输出的隐状态进行拼接:得到完整的隐状态序列(h1,h2,…,hn)∈Rn×m。

dropout 设置好之后,需再接入一个线性层,是为了实现隐状态向量从m 维到k 维的映射,从而自动提取所需的句子特征。标注集的标签个数用k 表示,记作矩阵P=(p1,p2,…,pn)∈Rn×k。将字xi分类到第j 个标签的打分值,可以用pi∈Rk的每一维pij来表示。如果对P 再进行Softmax 处理(对各个位置独立进行k 类分类),那么对各个位置进行标注时就不能再利用标注过的信息,因此本文计划接入一个CRF 层来实现标注功能。

CRF 层作为模型的第3 层,主要是为了实现句子级的序列标注功能。CRF 层的参数是一个(k+2)×(k+2)的矩阵A,从第i 个标签到第j 个标签的转移得分用Aij来表示。因为利用了此前已标注过的标签,所以要为句子首部添加一个起始状态,为句子尾部添加一个终止状态,因此矩阵A 的行数和列数加2。如果把一个长度等于句子长度的标签序列记做y=(y1,y2,…,yn),那么模型根据句子x 的标签得出y 的打分为

已知各个位置的打分之和等于整个序列的打分。但是每个位置的打分是由2 部分决定的,LSTM 输出的pi是其中一部分,CRF 的转移矩阵A 是另外一部分。因此可以利用Softmax 函数得到归一化后的概率

模型通过最大化对数似然函数进行训练,式(4)给出了对一个训练样本(x,yx)的对数似然函数

模型使用动态规划的维特比(Viterbi)算法(一种动态规划算法用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列)在预测(解码)时,求解最优路径

2.3 优化后的Att-BiLSTM -CRF 模型

与大多数传统的机器学习方法相似,上述的BiLSTM-CRF 方法是一种句子级的命名实体识别方法,当遇到多语句文档时,模型会出现实体标注不一致的情况。为了解决该问题,以往研究通常采用基于规则的后处理来增强标签一致性,然而如果模型一开始就错误地标记了实体,则后处理会引入更多误差,因此本文尝试引入attention机制设计了一个Att-BiLSTM-CRF 模型,新模型利用attention 机制获得文档级的全局信息,使得同一命名实体在文档中强制实现标记的一致性。模型的架构如图3 所示。

图3 优化后的Att-BiLSTM-CRF 模型Fig.3 Optimized Att-BiLSTM-CRF model

假设输入文档有m 个句子:D=(X1… Xt…Xm),每个句子用(x1…xt…xn)表示,n 为句子的单词数,我们定义N 为文档总字数。同2.2 节的BiLSTM-CRF 模型一样,先将2.1 节的词向量作为BiLSTM 层输入,然后在BiLSTM 层上建一个新的attention 层,用来在文档级捕获相似的单词。在attention 层,本文引入矩阵A 来计算当前目标词与文档中所有词的相似度。xt表示第t 个当前目标词,xj表示文档中的第j 个已有词。

矩阵A 中相似度权重值αt,j的定义如式(6):

然后计算BiLSTM 层输出的hj与αt,j的加权和作为文档级的全局向量Gt

接下来,将文档级全局向量和目标单词的BiLSTM 输出连接为向量[Gt;ht],以反馈传送到tanh 函数以产生attention 层的输出

再然后,注意层上的tanh 层用于预测具有每个可能标签的单词的置信度得分,作为神经网络的输出分数

最后,与BiLSTM-CRF 模型类似,加入CRF层来解码所有可能的路径中最佳路径。对于输入文档D,文档分数以及标记路径y 由转换分数和神经网络分数的总和给出

在训练阶段,该模型的目标是使正确标签序列的对数概率最大化,模型通过最大化对数似然函数进行训练。与式(2)相比,式(10)得出的是文档级别的分数,而不是句子级别的分数。接下来,像BiLSMT-CRF 模型一样,使用softmax 函数获得路径的条件概率。然后用维特比(Viterbi)算法,在预测(解码)时求解最优路径。

2.4 文档级和句子级方法在以往工作中的性能比较

在以前的工作中,大多数方法都将NER(Named Entity Recognition,命名实体识别)视为一个句子级的任务,这通常伴随着2.3 节中讨论的实体标记不一致问题。相反,本文的Att-BiLSTM-CRF 模型是通过引入文档级的attention机制来解决这个问题的。

精确度(Precision)、召回率(Recall)和F1-score是命名实体识别中经常使用的判断标准。P(正确)代表所有样本中的正确样本,N(错误)表示所有样本中的错误样本。TP(真正确)是预测为正确的正确样本数,FN(假错误)是预测为错误的正确样本数。FP(假正确)是预测为正确的错误样本数,TN(真错误)是预测为错误的错误样本数。

精确度是所有预测为正确的样本中真正确样本的比例,定义为

召回率是正确性样本中真正确样本的比例,由式(12)得出

F1-score 是精确度和召回率的调和平均值,定义为

在模型测试实验中,我们比较了两种模型分别在文档级和句子级中的表现。测试所用的语料库是人工构建的,大小为19 469 个句子,所有模型都只使用单词和字符嵌入作为输入。各种模型在语料库上的性能比较如表1 所示。

表1 各模型的测试结果Tab.1 Test results of models

由表1 可知,将文档直接用作模型的输入实现了文档级BiLSTM-CRF,然而文档级BiLSTMCRF 的F-score 并不高于句子级的效果(89.44%对89.51%),主要原因是LSTM 模型是一个有偏模型。尽管LSTM 可以解决门控机制带来的长时间滞后问题,但由于后面的单词比前面的单词更占优势,这导致了长句的识别困难,因此简单地从句子扩展到文档作为模型的输入来捕获全局文档级信息是不可行的。

将句子直接输入模型实现句子级Att-BiLSTM-CRF。与句子级BiLSTM-CRF 模型相比,它可以获得更高的F-score,但低于文档级的Att-BiLSTM-CRF 模型(F-score 分别为89.62%和89.51%和90.45%),这说明本文的attention机制即使在句子层面上也能学习到更丰富的上下文信息。

3 齿轮传动知识问答系统的实例构建

本系统对齿轮传动相关的问答文件进行处理后构建对应的齿轮传动知识图谱,并且拥有良好的人机交互界面,

3.1 问答系统架构图

整个问答系统分为3 部分,系统设计架构如图4 所示。

图4 问答系统架构图Fig.4 Architecture of question answering system

第1 部分的用户交互模块是用户在客户端所看到的人机交互界面,用户在设计好的GUI 界面上输入齿轮传动设计的相关问题。

第2 部分的系统内部功能模块以第3 部分中知识图谱为基础。在接受第1 部分输入的用户问题后,系统内部功能模块会对问句进行自然语言处理[8]。首先会对问句进行分词,然后对分词后的结果进行实体识别,再对处理后的结果进行关键词提取操作,最后将处理后的问题关键词导入Cypher 查询语句中[9],在Neo4j 平台进行查询得到用户求索问题的最终答案。

第3 部分知识图谱模块是用来存储齿轮传动设计相关的知识图谱,主要根据对齿轮传动相关问答文件的处理来构建知识图谱。

3.2 图谱构建

目前国内很多搜索平台采用的是以知识库的形式去存储数据,这种数据具有形式单一,数据间关联度低,数据挖掘程度低的缺点,本系统采用的是基于Neo4j 平台的图数据库。Neo4j 是一种性能十分优越且独特的NOSQL 类型的图数据库[10]。同时,Neo4j 可视化窗口做得非常优秀且其特有的Cypher 查询语言很直观,在构建适当的查询计划的情况下,Neo4j 的查询效率会很高。

第1 步是知识获取。知识获取大部分来源于Word 等格式的齿轮传动相关问答的文档,通过编写的程序便可自动完成;第2 步是知识融合。主要是SPO 三元组抽取,对不同格式的数据采用不同的技术进行提取。然后开始进行知识融合,目的是将不同数据源获取的知识进行融合构建数据之间的关联。最终可以将知识图谱可视化,让用户在检索时能看到神经网络的检索过程。

图5 知识处理过程Fig.5 Process of knowledge processing

先将提取好的节点、边、节点以三元组形式存储到Neo4j 图数据库里。知识融合环节会将已创建三元组中的相同节点进行融合,根据节点内容进行计数,筛选出重复节点,然后删除重复节点只保留一个,并将原有的三元组关系移植到仅剩的节点上。

构建好的部分知识图谱如图6 所示。

图6 齿轮传动设计知识图谱Fig.6 Knowledge graph of gear transmission design

3.3 实例的问答结果

系统采用的是基于easygui.py 设计的GUI 界面,有问题输入和问题输出两个界面。在问题输入界面中输入问题,确认后经后端处理会返回答案至输出文本框。问答界面及问题测试的效果图如图7、图8 所示。

图7 问题输入界面Fig.7 Interface of question input

图8 答案输出界面Fig.8 Interface of answer output

4 数据集的测试结果

构建完成的齿轮传动设计相关的知识图谱数据库中拥有299 对问答数据以及299 条边关系。接下来设计系统的相关测试用例,然后对测试结果进行统计与分析。

当问句无干扰,测试用例为299 个时,测试的准确率达到了98.33%;在为每个问题添加了十多个类似问题后(即299 个答案对应4 995 个问题)继续进行测试,有干扰的情况下,测试准确率也能达到80%以上。整体的测试结果见表2。

表2 问答系统测试结果Tab.2 Test results of question answering system

5 结语

随着互联网+热潮的不断席卷,问答系统与各行各业的结合也更加密切,目前市面上开发了很多App 搜索和浏览器搜索,这类搜索工具的搜索结果大多十分繁乱,需要人为的二次辨识和筛选,用户体验很不友好。而且这类搜索引擎的数据多以关系数据库的形式存储,信息关联度不强,导致信息利用率低。本系统的设计是基于机械学科的知识图谱开展的,并以齿轮传动为例进行了说明。本文提出的一种基于深度学习和优化后Att-BiLSTM-CRF 模型的问答系统构建方法,解决了目前市场上针对机械专业知识问答结果稀少的问题。

目前该系统的缺点在于构建的齿轮传动知识图谱不够完善,机械词典的词数较少,这些导致实际的系统模型达不到预计的准确率。随着知识图谱规模的增加,问答系统可以回答问题的种类将日渐增多,准确度也会获得明显的提高。同时,自然语言处理算法的优化和知识图谱的知识挖掘是后续的主要的研究和改进方向。

猜你喜欢

传动齿轮图谱
“植物界大熊猫”完整基因组图谱首次发布
基于仿真的液压传动课程教学改革
基于伪谱法的水下航行体快速操舵变深图谱研究
某型航发结冰试验器传动支撑的热固耦合分析
关于齿轮的有趣问答
你找到齿轮了吗?
异性齿轮大赏
骑车上班日
坚朗五金获得“传动器及门窗结构”发明专利
数控卧式重型车床主传动设计