基于荔枝和龙眼病虫害知识图谱的问答系统*

2022-01-15 06:24郑泳智吴惠粦朱定局陈炳旭李文景
计算机与数字工程 2021年12期
关键词:结构化图谱意图

郑泳智 吴惠粦 朱定局 陈炳旭 李文景

(1.华南师范大学计算机学院 广州 510631)(2.广东省农业科学院植物保护研究所 广州 510640)(3.广州国家现代农业产业科技创新中心 广州 510500)

1 引言

知识图谱的提出源自于谷歌优化其搜索引擎的初衷,其前身是Berners-Lee[1]提出的语义网(Semantic Web),本质是用图来表示知识,如图1所示,其中使用节点表示实体概念,边表示关系,既清晰明了又可用于推理。自2002年来,许多机构和公司都采用了自动和半自动化形式采集数据并设计了较成熟的通用领域知识图谱,如DBpedia[2],Freebase[3],YAGO[4],XLore[5]等。

图1 语义网示例

而智能问答系统(Knowledge Based Question Answering,KBQA)的设计初衷是为了能让机器读懂人的自然语言问题,在经过程序的处理后,又以自然语言的形式回答人类。在知识图谱概念流行之前,智能问答的技术方案通常是基于句向量的语义检索或基于分类模型的问答系统,利用知识点的样本和统计特征训练模型。而近年来随着知识图谱的发展,研究者尝试在程序的处理过程中加入并依托知识图谱的先验知识来进行回答,如Jiang等[6]构建基于知识图谱的医学问答系统,王震南等[7]构建基于知识图谱的军事问答系统。

当前,农作物病虫害领域开源知识主要以传统数据库形式进行存储,聚合能力不高。而知识图谱对领域知识的管理较好,夏迎春等[8]根据作物病虫害数据分类标准生成本体层,并在其基础上扩展实体层从而形成知识图谱,同时实现了图谱的可视化;吴茜等[9]从互联网中收集农业数据,利用Protégé等工具构建了涵盖农作物品种、病虫害和农药肥料等知识的农业领域知识图谱;王丹丹等[10]利用公开数据集和农业语义词典上的水稻数据构建了水稻知识图谱,在领域专家指导下完成知识推理与补全。但这些知识图谱在在应用层面的规模化、智能化、体系化等方面仍有很大的提升空间,如何有效利用知识图谱的数据实现问答系统仍是十分有挑战性的工作。基于该问题,本文以农业病虫害知识信息化为出发点,构建荔枝和龙眼病虫害知识图谱,并在知识图谱的基础上构建智能问答系统。

2 荔枝和龙眼病虫害知识图谱设计

垂直领域知识图谱的构建是面向特定领域的,是基于行业数据构建,强调知识的深度,本体的顶层设计通常离不开领域专家协助,因此为了保证知识的质量,本研究在领域专家的协助下通过自顶向下方式,结合专家内部数据与百度百科、维基百科数据,经过数据清洗、知识抽取等步骤,荔枝和龙眼病虫害知识图谱,具体流程如图2所示。

图2 病虫害知识图谱构建流程

2.1 数据采集与数据预处理

数据采集是构建领域知识图谱的第一步,但通常领域知识图谱的数据来自于行业数据库,本研究使用来自广州农科院的专家内部数据,同时通过爬虫程序抓取网络上相关的非结构化与结构化数据,为了更高效地采集数据,本文采用基于Scrapy框架编写爬虫程序,抓取百度百科、维基百科上的相关数据。对获取得到的数据进行去重、异常值处理后,将数据保存至MongoDB数据库,其中,数据清洗使用正则表达式进行结构化数据提取,如病菌的科、属等信息可通过表达式/[属].+科/g进行提取。

2.2 知识获取与知识融合

知识获取的关键在于如何从数据源中提取所需候选知识单元,针对不同类型数据需要采用不同的知识获取方式。对于结构化数据,各项之间已存在明确的对应关系,可以直接构建三元组,部分结构化数据如表1所示。

表1 数据清洗所得的部分结构化数据

其中,非结构化数据的知识获取,置信度较高的做法是人工标注,虽然可靠准确,但是工作量较大。一些主流的做法是通过自然语言处理手段来处理,例如对文本进行分段、分句、分词、去除停用词后再进一步进行实体抽取、关系抽取。因此本研究在对非结构化文本去除停留词后,利用HanLP工具包[11]对文本分词、分句,再对非结构化数据进行标注,形成三元组数据。同时对病虫和病害进行BIO实体标注,构建病虫害实体数据集,作为实体识别模型的数据集。专家内部知识数据与百度百科上的知识数据存在重复的问题会导致实体属性名称不一致、数据类型冲突。为消除歧义,此处将实体词或属性词进行向量化。例如,词语A和词语B经过BERT模型向量化后,在向量空间上采用式(2)所示的余弦相似度评估向量间的相似度从而达到知识融合的目的。

2.3 知识存储

目前业内存储知识的方式有三种,如表2所示,第一种是三元组形式的资源描述框架[12](Resource Description Framework,RDF)存储;第二种是传统关系型数据库存储;第三种是图数据库存储。

表2 知识存储方式对比

结合本项目的实际情况,为了更优秀的读写性能和可扩展性,采用了第三种存储方式,使用主流的Neo4j图数据库,当完成该任务后,Neo4j可视化界面如图3所示。

图3 Neo4j可视化界面

3 问答系统设计

本研究中的问答系统构建过程分为AC自动机构建、命名实体识别模型构建、意图识别模型构建、答案封装与系统部署四个部分,具体如图4所示。

图4 问答系统架构图

3.1 AC自动机模块构建

在获取问句中的实体时,为保证用户高效问答体验,采用AC(Aho-Corasick)算法[13]构建AC自动机模块,快速匹配问句中的实体词。它用于从给定序列中查找所有相同的子字符串,可以从文本中匹配多个字符串并获取其位置、总数等相关信息,广泛应用于信息检索、入侵检测等领域。该算法依赖于构建一个有限状态自动机来实现,假设目标字符串的总长度为n,模式字符串的集合为P={p1,p2,…,pm},那么时间复杂度为O(N),所有模式字符串都可以在n内匹配,且不受大小的影响。该算法在均匀分布时具有近似线性的时间复杂度,大约是字符串的长度加上所有匹配的数量。因此,AC算法在最好和最坏情况下的时间复杂度都是O(N)。

3.2 命名实体识别模块构建

当AC自动机匹配失败后,命名实体识别模块试图在问句中提取实体词。命名实体识别(Named Entity Recognition,NER),是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。通常包括两部分:1)实体边界识别;2)确定实体类别(人名、地名、机构名或其他)。在本研究中,构建命名实体识别模型的目的是从问句中确定病虫、病害名称等实体,得到的实体词将链接至知识图谱中。当前命名实体识别的主要技术方法分为基于规则和词典的方法、基于统计的方法、二者混合的方法、神经网络的方法等。目前主流的方法是使用基于神经网络的方法,通常使用BiLSTM-CRF模 型,如 古 雪 梅 等[14]用 增 强 的BiLSTM-CRF模型识别推文中恶意软件名称、梁文桐等[15]构建BERT-BiLSTM-CRF模型进行电子病历的命名实体识别。本文使用上文所述的人工标注BIO数 据 集、构 建BiLSTM-CRF与BERT-BiLSTM-CRF实体识别模型,提取问句中的病虫、病害实体词。将P(精确度)、R(召回率)、F1作为模型评价指标,具体定义如下所示:

实验结果如表3所示,在病虫害命名实体识别数据集上,Bert+BiLSTM+CRF模型的识别效果更优,有80%以上概率能找到问句中的相应实体词,给予实体词提取模块可靠的支撑。

表3 实体识别实验结果

3.3 意图识别模块构建

意图识别是通过分类的办法将句子或Query分类至相应的意图种类,这在搜索引擎以及智能问答中都起很重要的作用。即当用户输入一句话或者一段文本时,意图识别可以准确识别出它是哪一类问题,然后分配给相应的处理机进行二次处理,在问题分类很多的情况下可明显提升问题匹配的准确度,目前主流方案是结合了BERT模型[16]的变式模型。BERT是谷歌在2018年发布的语言表示模型。它通过维基百科和书籍语料组成的庞大语料进行了预训练,使用时只要根据下游任务进行输出层的修改和模型微调训练,就可以得到很好的效果。

本研究中,对于问句中提问的意图,将其定义为查询田间症状、发病条件、防治措施等信息的文本多分类任务。构建BERT、BERT+CNN、BERT+RCNN、BERT+RNN、ERINE主流的分类模型,在病虫害领域的问句意图数据集中进行实验,将效果最佳模型部署至问答系统中的意图识别模块。具体实验结果如表4所示,问答系统的意图识别模块取F1值最高的BERT+RNN模型作为最终模型上线。

表4 意图识别实验结果

3.4 答案封装与系统部署

当命名实体识别子模块得到问句的实体词,意图识别子模块识别出问句的意图后,将相应的词作为变量填入预设的Cypher查询语句中。Cypher查询语句是Neo4j独有的查询语言,是一种类似与SQL语句的查询语言,通过该语句可以在Neo4j图数据库中快速查得相应的实体节点,并将实体节点的相关属性封装成答案句返回给提问者。例如,完成问句“荔枝白粉病的防治措施有哪些”的问题解析后,得到“荔枝白粉病”实体词和“查询防治措施”的意图,填入预设Cypher语句,得到“MATCH(s:Sick{sickname:‘荔 枝 白 粉 病’})return s.measures”,即可查询出其防治措施。最后,利用Flask框架构建Web后端接口提供提问的入口,并构建基于React框架的前端页面,结合Antd的UI库,建立起用户与问答系统的桥梁,用户只需在网页中的输入框输入问句,即可得到如图5、6所示的结果。

图5 问答可视化界面1

图6 问答可视化界面2

4 结语

本文以农业信息化为目的,通过爬虫、Neo4j、文本分类、命名实体识别等技术构建基于病虫害的知识图谱问答系统,为智慧农业的发展开辟了新的路径,为知识图谱顶层应用的落地提供了技术参考。

猜你喜欢
结构化图谱意图
原始意图、对抗主义和非解释主义
基于图对比注意力网络的知识图谱补全
陆游诗写意图(国画)
改进的非结构化对等网络动态搜索算法
深度学习的单元结构化教学实践与思考
制定法解释与立法意图的反事实检验
结构化面试方法在研究生复试中的应用
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
图表
主动对接你思维的知识图谱