基于知识图谱的水稻病虫害智能诊断系统
2021-07-28于合龙沈金梦毕春光陈慧灵
于合龙,沈金梦,毕春光,梁 婕,陈慧灵
(1 吉林农业大学 信息技术学院,吉林 长春 130118;2 吉林农业大学 智慧农业研究院,吉林 长春 130118;3 悉尼科技大学 工程与信息技术学院,悉尼 2007;4 温州大学 计算机与人工智能学院,浙江 温州 325035)
水稻作为中国主要的粮食作物之一,每年因病虫害造成的损失多达几百万吨[1]。各种水稻病虫害发生快、易扩散,且水稻受害植株常表现出相同的症状,让农民难以区分[2-3]。随着信息技术、光谱技术[4]、遥感技术[5]等新方法不断出现,有的利用光谱的反射值或得到的图像特点来关联病虫害特征信息,构建病虫害模型,最终实现病虫害识别;有的通过图像技术、规则推理等方式进行作物病虫害诊断[6-11],而在水稻领域常利用专家系统进行病虫害诊断[12-15],它们大多从专家处获得规则算法,再根据受害症状等因素进行分类并判断。但上述研究并不能完全解决病虫害诊断中存在的问题,主要原因有以下三点:一是水稻数据种类多样,关系及属性复杂,数据间深层次的关联关系不易被挖掘,同时,也缺少相关推理过程的显示;二是传统专家系统大都是定量识别,存在推理可解释性弱的问题;三是很少有专家系统把节气与规则相结合进行病虫害预警。知识图谱以节点及边的形式将不同类型的实体、概念组合成巨大网络[16],有利于以可视化形式展示知识的多种关系和结构,它为提高检索的可推理性及检索效率提供了机遇。随着农业信息化的普及,对农业领域异构数据的处理从原有的本体构建再到语义网,国内外学者都进行了探究[17-19]。此外,农业领域知识图谱也有成功的应用案例[20-22],促进了知识图谱技术在农业领域的发展,初步实现了数据信息的有效利用。但知识图谱是网状结构,在实现知识推理时主要是定性地解决问题,且利用语义资源解决农业知识的应用相对不足,所以从大量繁琐数据中提取有用的农业知识、有效结合定量与定性,使推理更具可解释性的研究意义重大。本文主要工作是根据水稻病虫害数据,提出一种面向该领域的知识图谱构建方法,同时以图谱数据为支撑,提出系列基于图的水稻病虫害检索算法;然后将专家置信度确定性因子(Certainty factor,CF)融合到知识图谱中,解决图谱难以定量的问题,且增加图谱的可解释性,构建基于CF和知识图谱相结合的知识推理方法,并且通过自主开发的智能诊断系统,结合实际案例对文中方法进行分析,实现水稻领域病虫害的智能检索、预警及诊断。
1 水稻病虫害知识图谱构建
1.1 水稻病虫害知识图谱建模
水稻病虫害知识图谱建模是建立水稻病虫害的数据模型,即采取特定形式表示领域知识,并构建包含概念、属性及概念间关系的本体模型对水稻病虫害知识进行描述[23]。建模途径通常包括自顶向下和自底向上2种。本研究将采用2种途径相结合的方式,通过构建水稻病虫害领域本体模型[24],映射到知识图谱的模式层,将从不同数据源中获取到的实体、关系、属性等知识进行融合,形成水稻病虫害知识图谱。
1.1.1 水稻病虫害本体建模 建模过程分为明确目标领域本体及任务、模型复用、罗列本体中涉及到的领域元素、明确分类体系、定义相关属性与关系及定义约束条件6个主要步骤。在构建相关本体层类别概念过程中,利用网络本体语言建立知识模型,根据国家农业科学数据共享中心数据库对病虫害进行分类,结合水稻专家的指导,得到本体层类别以及概念之间的关系,如图1所示。
图 1 水稻病虫害本体构建图Fig.1 The ontogeny construction figure of rice diseases and pests
确定水稻病虫害领域类的集合。实际的概念一般用类形容,如发病阶段、危害症状、节气等称为类。用三元组表示为(危害部位,rdfs:hasclass,Owl:thing)。
确定水稻病虫害领域内概念的关系集合。本体概念间关系分为子类间关系、实例及类间关系和参照关系3种。其中subClassOf (病斑颜色,病害症状)表示病斑颜色是病害症状的子类;type(暗绿色,病斑颜色)表示暗绿色属于病斑颜色类。
确定水稻病虫害领域的属性集合。本体概念中包括对象属性及数据属性2种。用三元组表示为(花足秆,纹枯病,Owl:dataProperty)。其中:花足秆是纹枯病的数据属性,即花足秆是纹枯病的别名;水稻病虫害本体概念间存在约束关系的特殊属性。三元组(病害类别,病害症状,Owl:objectProperty)表示病害类别和病害症状之间的关系。
确定水稻病虫害领域的实例集合。从语义角度分析实例代表对象,如每个具体病虫害都是病虫害类的实例,用三元组(纹枯病,rdfs:type,Owl:individual)表示。
1.1.2 水稻病虫害知识表示 水稻病虫害知识图谱的结构关系分为2大类:一类为概念层级关系(GMR)、另一类为实体关系 (GER)[25]。概念层级关系图GMR=<CMR,RMR>,其中CMR代表图中出现的概念节点,RMR则代表被多条边连着的概念间的关系边。实体关系图 GER=<EER,RER>,其中EER代表图中出现的实体节点,RER代表被多条边连着的实体间的关系边。以水稻病害为例,展示知识图谱模式层与数据层之间的相互对应关系,如图2所示。其中水稻病虫害领域知识中的各种概念、实体以及连接它们的关系由节点、边分别表示,即防治方法、发病阶段、节气等概念节点和科学管水、苗期、立夏等实体节点,可并称为节点集合;Has_Subclass(概念间)关系和REL_PH(虫害实体和危害方式)关系、REL_CI(病害实体与危害症状实体)关系等,并称为边集合。
图 2 知识图谱概念层次图及实体关系图Fig.2 Conceptual hierarchy graph and entity relationship graph of knowledge graph
1.1.3 水稻病虫害本体与知识图谱映射匹配机制 构建水稻病虫害知识图谱的首要工作是对该领域本体与知识图谱间匹配机制的确认。本体实质是使用层次化抽象方法进行关系和实体的表示[26]。本体概念层级结构被当成树,其概念、实例及关系通过树形节点和树间的连线来体现。而知识图谱本质被认为是一张庞大的语义知识网络[27],其概念层级关系图被比作树,树的节点表示其概念节点,实体节点和实体间关系就是图谱中实体关系图中的节点及连线。因此,可根据树与树、树与图之间的映射表示本体和知识图谱的本体映射匹配模式。
把水稻病虫害本体中防治方法、危害症状、节气等概念当作树的节点,而知识图谱中,它们也对应地成为知识图谱概念层级中树的相关节点,同时,纹枯病、水浸状等实例作为知识图谱中实体关系图的节点,具体如图3所示。
图 3 本体与知识图谱映射图Fig.3 The mapping picture from ontology to knowledge graph
1.2 水稻病虫害知识获取
1.2.1 水稻病虫害数据获取与预处理 目前,水稻领域暂时没有公开数据库可作为试验语料,本研究首先利用python爬取网络上水稻病虫害文献(包括南方农业、农家参谋、农民致富之友、乡村科技、植物医生等)资料,获取到576篇水稻相关文本,共4 140个语句。然后通过正则表达式、规范字符格式等一系列数据预处理操作,删除非文本数据,获得规范化的水稻病虫害语料库。
一般分词都被当作是命名实体识别的基础,但是分词会产生各类不同的错误。例如,水稻病害实体“叶鞘腐败病”分词后为叶鞘/腐败/病。由于错误分词的情况会导致实体的特征表示出错,基于字符的实体识别可减少此类问题的出现。研究中利用字向量作为模型的最初输入,使用预训练的方式,以字为单位切割,进而得到实体的特征表示。
1.2.2 水稻病虫害知识抽取模型框架 本研究采用Bi-LSTM-CRF模型[28]进行水稻病虫害实体的抽取,其框架包括3个部分,如图4所示。
图 4 Bi-LSTM-CRF模型Fig.4 Bi-LSTM-CRF model
表示层:水稻文本数据需进行文本向量化,将相应字符映射为一定维度的实数向量,才能被计算机处理。CBOW模型[29]是依据当前字的前后各2个字预测当前字出现的概率。例如水稻病害实体“菌核秆腐病”,通过“秆”字的前后“菌”“核”“腐”“病”4个字,来预测“秆”这个位置出现各个字的概率,其中给定的“秆”字出现的概率最大。
Bi-LSTM层:Bi-LSTM由LSTM演化而来,LSTM是缓解循环神经网络在面对长序列会出现梯度消失的问题提出的[30]。LSTM是包括遗忘门、输出门和输入门的网络模型,各门的结构如下:
其中:ft、it、ot分别为遗忘门、输入门、输出门;w代表权重矩阵;b代表偏置向量;σ代表sigmoid函数;Ct代表当前细胞的状态,⊗代表矩阵按位相乘。
单向LSTM网络在进行训练时只考虑到句子的时序信息而忽略了上下文之间的关系,因此,多句对话时,往往不能取得很好的效果。例如:水稻病害实体“白叶枯病”,LSTM只能访问“叶”的前一个字“白”的特征而不能预测下一个字“枯”的出现。Bi-LSTM模型将前向的LSTM和后向的LSTM结合,可以充分利用序列的上下文信息,具有能够捕获前后信息特征的作用。
CRF层:CRF是一种序列建模算法[31],它综合了隐马尔可夫模型和最大熵模型的优点。它由既定的观察序列进一步推测出对应的状态序列,可以利用相邻前后的标签关系获取当前最优的标记。
1.2.3 水稻病虫害知识抽取过程与结果分析 本研究采用Bi-LSTM-CRF模型进行水稻病虫害命名实体识别,要识别出病害名称、虫害名称和危害症状3种不同的命名实体。语料中训练集和测试集按7︰3划分。主要的流程如下:
首先,利用CBOW模型,通过对语料进行无监督训练,对不同维度字向量进行对比,最终得到100维度时模型性能最好。通过预训练方式,得到水稻病虫害文本100维度的字向量特征,应用在水稻病虫害领域的命名实体识别。其次,字嵌入层的向量x将作为t时刻Bi-LSTM层的输入,通过正向LSTM输出特征序列和反向输出序列,获得隐藏层拼接的向量,通过tanh激活函数的加权求得最终的输出。最后,把Bi-LSTM的输出作为CRF层的输入,采用状态转换矩阵预测当前标签,通过利用Softmax函数,得到最终序列的条件概率。使用Viterbi算法[32]将得分最高的序列作为模型最终的标注结果。通过多次重复试验得到模型的参数,如表1所示。
表 1 Bi-LSTM-CRF模型参数设置Table 1 Parameter settings of Bi-LSTM-CRF model
测评常用P(准确率)、R(召回率) 和F1 值来评价试验结果。其中,P为模型正确识别水稻病虫害实体数与识别出水稻病虫害实体总数的比值,R为系统正确识别水稻病虫害实体数与数据集中存在的水稻病虫害实体总数的比值,F1值的计算公式为F1 = 2PR/(P+R)。通过试验得出3类实体识别的准确率、召回率、F1值,如表2所示。
表 2 命名实体试验结果Table 2 Named entity experimental results
1.3 水稻病虫害知识图谱存储
本研究运用当前流行的图数据库Neo4j[33]进行水稻病虫害领域知识的存储。根据模式层的防治方法 (Control methods)、发病阶段 (Period)、危害部位(Damage site)等11大类知识进行水稻病虫害数据分析,将获取的知识以三元组的形式进行表达,即相同类型实例放在一个表中,表的每列代表该类实体的具体值,每行存储该类实体的实例。运用机器学习算法提取病虫害名称实体、危害症状实体及它们之间的关系数据,并进行结构化处理,同时定义好对应的标签。在此基础上,再请该领域专家进行实体的补充和修正,由专家辅助建立关系。最终将全部内容建立对应的实体及三元组关系表,表3为部分三元组示例。通过搭建近义词映射表实现水稻病虫害领域异构数据源的实体对齐正确性,并在完成对齐后进行去重操作。水稻病虫害三元组数量较多,需要进行批量入库。先将实体表、三元组关系表进行整合,采用“LOAD”的方式,将转化后的CSV文件写入到Neo4j中构建知识图谱。
表 3 水稻病害实体关系部分三元组示例Table 3 Examples of triples in the entity relationship of rice diseases
中心节点表示病害类别标签下的水稻纹枯病实体;外侧节点表示水稻纹枯病的27个病斑颜色和病斑形状,Rel_CI表示病害类别和危害症状的关系,relciName和CF表示关系的属性值,如图5所示。
图 5 知识图谱可视化Fig.5 Knowledge graph visualization
水稻病虫害所有数据整合到图数据库后的具体信息,如表4、表5所示。
表 4 知识图谱实体类型及属性Table 4 Knowledge graph entity types and properties
表 5 知识图谱实体关系类型及属性Table 5 Knowledge graph entity relationship types and properties
2 水稻病虫害知识图谱推理
2.1 基于图挖掘算法的水稻病虫害信息检索
实际水稻病虫害检索应用时,通过图挖掘算法分析图谱中的知识数据,对其中已有的知识深层次分析后得到潜藏在数据内部的新知识[34],以实现用户不同的检索需求。其一,用户要获取实体节点间的离散距离,即探索出数据间最佳路径,提出基于最短路径的水稻病虫害检索算法;其二,用户想明确哪些实体隶属一类的问题,提出基于连通组件的水稻病虫害检索算法;其三,用户要找到与已知实体节点最为相似的其余节点,提出基于杰卡德相似度的水稻病虫害检索算法。系统会根据用户的输入自动匹配最佳算法,为用户高效检索出最佳答案,图6为实现数据检索算法的详细流程。
图 6 检索流程图Fig.6 Search flow chart
文中提出的系列水稻病虫害检索算法结合图谱的优势,不但能帮助用户更好地理解知识图谱结构,当有新的子图需要频繁更新时,也可以快速显示新节点信息。同时也提升了系统检索效率,对系统应用具有重要作用。
2.2 基于节气的水稻病虫害预警
节气能反应季节不同变化,常用作指导农业耕种。它具有很强的区域性,不同农作物、不同地域具备不同的气象信息。其中针对节气的时间概念是指节气前后的天数,即节气所处阳历月份的上半月或下半月。本研究主要针对吉林省长春市各县单季水稻的相关农事活动。节气作为水稻预警的重要影响因素,通过病虫害不同的发病阶段,得出不同发病阶段的月份时间范围,再根据文献[35]中节气和月份对应的时间段,利用月份映射出发病阶段和节气间的对应关系,发现该节气可能出现的病虫害,进而增加目标病虫害正确识别的概率,进一步实现预警。
2.3 基于确定性因子模型和知识图谱结合的水稻病虫害诊断
2.3.1 确定性因子模型 基于确定性因子模型的不确定推理是对不确定知识应用与处理的一种方法,它的典型代表是MYCIN专家系统。水稻病虫害诊断中,每个症状对于病害或虫害为真的程度,专家都赋予其CF值,其表示形式为:
其中A、B分别为前提条件和结论。
确定性因子的定义[36]如下:
在水稻病虫害诊断中,需要知道某种证据在某个结论中出现的概率,所以必须把确定性因子转化成概率[37]。由上面公式(7)得:
要根据P(B),即B的先验概率,才能得出最终概率。P(B)可以通过专家经验或者文献给出,还可直接视为无知,也就是P(B)=0.5。
2.3.2 基于确定性因子模型和知识图谱结合的知识推理方法 通过知识间关联关系,根据CF的定量特点及属性图模型的特性,把专家赋予的CF值作为REL_CI关系的特殊属性引入知识图谱,且病害实体与危害症状实体间只对应一个CF值。但经常会出现一种病害或虫害共同拥有多个症状的情况。对于症状的不确定性而言,当有多条规则支持结论时,那么结论的确定性因子计算公式为:
在利用知识图谱进行水稻病虫害诊断过程中,不会存在证据为假的情况,即 CF(B|A)<0不存在,当出现多个症状和病虫害有关联时,选择公式(9)进行并行CF值计算。在推理诊断过程中,当选择某个或某几个症状时,无法判断知识图谱中相互关联的该症状究竟是属于哪种病害或者虫害,采用CF和知识图谱结合的方法解决这个不确定性问题,该算法的实现流程如下:
输入: ListSymptom = {M1,M2,M3} 3 种症状;
输出:M1,M2,M3所有组合症状中,患病概率由高到低的前3个疾病;
步骤 1: 对 ListSymptom {M1,M2,M3}中症状进行组合,得到列表L;
步骤2: 对组合数据进行遍历,列表L索引值i=0;
步骤 3: whilei小于列表 L 的长度;
步骤4: 根据集合L[i]的症状与该症状对应的关系R,在数据库中查找是否存在相关病虫害的集合D;
步骤 5: ifD不为空 then;
步骤6: 在数据库中查找出对应病虫害的可信度 CFn;
步骤7: 由公式(8)算出发病的概率;
步骤8: 将症状、病虫害与概率记录到字典RecDict中;
步骤 9: 根据概率值对结果列表进行由高到低的排序;
步骤10:取出结果列表中前3组数据,写入结果字典ResDict中;
步骤 11: return ResDict。
2.3.3 水稻病虫害诊断 由于不需要向用户询问相关信息,只需要用户对所观察到的水稻病虫害症状做出尽量具体且多的选择。所以用户界面设计十分简单,但它要求用户能够对观察到的水稻病虫害的表现症状进行正确的描述。
使用基于CF和知识图谱结合的知识推理方法进行诊断,表6为1个诊断实例。
表 6 诊断实例表Table 6 Table of examples of diagnoses
用户对出现的症状进行选择,利用CF模型与知识图谱结合的算法中P(B)设为无知,即P(B)=0.5。具体计算步骤如下:
第1步:经过推理得出水稻纹枯病、细菌性条斑病和水稻白叶枯病的CF值分别为0.797 5、0.737 9和 0.851 1。
水稻纹枯病:CF(M1|H)=0.55+0.55−0.55×0.55=0.797 5;
细菌性条斑病:CF(M2|H1H2)=0.36+0.36−0.36×0.36=0.590 4,
CF(M2|H)=0.590 4+0.36−0.590 4×0.36≈0.737 9;
水稻白叶枯病:CF(M3|H1H2)=0.47+0.47−0.47×0.47=0.719 1,
CF(M3|H)=0.719 1+0.47−0.719 1×0.47≈0.851 1;
第2步:由于用户要判断出哪一种病害出现的概率更高,所以利用确定性因子模型,求出每种病害出现的概率。通过计算求得3种病的概率分别为 0.898 8、0.869 0 和 0.925 6。
水稻纹枯病:P(M1|H)=CF(M1|H)(1−P(B))+P(B)=0.797 5×(1−0.5)+0.5≈0.898 8;
细菌性条斑病:P(M2|H)=CF(M2|H)(1−P(B))+P(B)=0.737 9×(1−0.5)+0.5≈0.869 0;
白叶枯病:P(M3|H)=CF(M3|H)(1−P(B))+P(B)=0.851 1×(1−0.5)+0.5≈0.925 6。
病害出现的概率越大,说明水稻发生该病害的可能性越大,因此最可能发生的病害为水稻白叶枯病。
2.4 算法性能评估
算法的性能根据诊断结果的正确率(Accuracy)进行判断。利用诊断系统对长春市某县4—9月份8种常见病害进行实际测试,由水稻领域专家最终核实80例样本,并表现在图7的8×8混淆矩阵中。
图 7 8种常见病害的系统诊断性能评价结果Fig.7 Evaluation results of system diagnostic performance of eight common diseases
通过真正例 (True positive,TP)、假正例 (False positive,FP)、假负例 (False negative,FN)、真负例(True negative,TN)4个基础指标得到评估诊断正确率的计算公式:
由式(10)计算80例样本的正确率,并依据混淆矩阵进行验证:
综上,本研究提出的基于知识图谱和确定性因子模型结合的诊断方法的正确率为86.25%。
3 水稻病虫害知识图谱应用
3.1 水稻病虫害智能诊断整体架构
面对水稻病虫害海量知识冗余、分散、多源的特点,建立水稻病虫害范畴的知识图谱,用户不仅可以检索水稻病虫害的相关知识,而且可以通过症状诊断水稻所患病虫害,从而有效拓展用户的知识面,提升水稻生产水平与质量。本研究开发了包括80多种病虫害的智能诊断系统,其整体架构由水稻病虫害知识图谱和智能推理2大部分组成,如图8所示。本系统的PC端访问地址为:http://d236424e.nat3.z100.vip。
图 8 智能诊断系统整体架构Fig.8 Overall architecture of an intelligent diagnostic system
3.2 水稻病虫害知识图谱案例分析
为确保用户更深层次地了解水稻病虫害间的潜在关系,以便对其病虫害有更进一步的诊断和预测,开发了以ECharts可视化为基础,包含知识展示、检索、诊断及预警4个功能模块的智能诊断系统,如图9a所示。系统在吉林省某农村进行了应用。知识展示模块的目的是让用户对知识图谱有更深刻直观的理解,也为后续的推理提供有力的数据支撑。当用户选择查询推理时,通过查询的方式实现信息的检索,例如查询“腐烂”症状,可得到与腐烂有直接关联的烂秧病、纹枯病等病害信息。图9b以病害为例,用户选择“水浸状”、“卷曲”、“暗绿色”3个症状,不仅可以得到与其关联的所有病害实体节点,还可根据CF模型与知识图谱结合的算法,诊断出在3种症状发生的情况下,最可能出现的病害是水稻白叶枯病,并链接判断后的目标病害图片,为用户检查提供依据。预警模块根据节气对用户进行农事指导,通过建立病虫害与节气的关联关系,把节气作为实体节点引入知识图谱中,增加了图谱的完整性。例如5月下旬长春某地区,小满节气水稻可能会出现恶苗病、霜霉病、稻瘟病、胡麻斑病、纹枯病等病害,系统预警模块则展示对应病害图片,提高用户正确识别目标病害的概率。
图 9 系统界面图Fig.9 System interface figure
4 结论
本研究首先提出水稻病虫害知识图谱构建方法,解决了数据多样及孤岛化问题,面向特定的水稻病虫害领域知识图谱有助于充分发挥该领域数据的实用价值。随后,提出系列基于图的水稻病虫害检索算法,增加了系统查询的多样性。然后,又提出确定性因子模型和知识图谱结合的知识推理方法,实现定量和定性的结合,正确率达86.25%,增加了诊断的准确性和可解释性。最后,系统以ECharts为可视化展示工具,实现了水稻病虫害数据在特定场景下的应用,有利于用户挖掘隐藏在图谱中的实体及关系;通过引入节气实体,增加图谱的完整性,提升系统病虫害诊断的正确率。本研究实现了基于WEB的吉林省长春市各县水稻病虫害智能诊断系统,具有用户界面友好、操作方式简单、便捷、准确的优点,为植物病虫害智能诊断提供了一种高效的新途径。后期将扩大农作物应用区域,探究更多农作物病虫害特征,构建更加丰富的农作物病虫害知识图谱,并在实际应用中不断完善和补充现有方法,以期用户能在不同地区访问系统,得到符合该地区节气的不同识别结果,提高诊断准确率。