于合龍,沈金夢(mèng),畢春光,梁 婕,陳慧靈
(1 吉林農(nóng)業(yè)大學(xué) 信息技術(shù)學(xué)院,吉林 長(zhǎng)春 130118;2 吉林農(nóng)業(yè)大學(xué) 智慧農(nóng)業(yè)研究院,吉林 長(zhǎng)春 130118;3 悉尼科技大學(xué) 工程與信息技術(shù)學(xué)院,悉尼 2007;4 溫州大學(xué) 計(jì)算機(jī)與人工智能學(xué)院,浙江 溫州 325035)
水稻作為中國(guó)主要的糧食作物之一,每年因病蟲(chóng)害造成的損失多達(dá)幾百萬(wàn)噸[1]。各種水稻病蟲(chóng)害發(fā)生快、易擴(kuò)散,且水稻受害植株常表現(xiàn)出相同的癥狀,讓農(nóng)民難以區(qū)分[2-3]。隨著信息技術(shù)、光譜技術(shù)[4]、遙感技術(shù)[5]等新方法不斷出現(xiàn),有的利用光譜的反射值或得到的圖像特點(diǎn)來(lái)關(guān)聯(lián)病蟲(chóng)害特征信息,構(gòu)建病蟲(chóng)害模型,最終實(shí)現(xiàn)病蟲(chóng)害識(shí)別;有的通過(guò)圖像技術(shù)、規(guī)則推理等方式進(jìn)行作物病蟲(chóng)害診斷[6-11],而在水稻領(lǐng)域常利用專(zhuān)家系統(tǒng)進(jìn)行病蟲(chóng)害診斷[12-15],它們大多從專(zhuān)家處獲得規(guī)則算法,再根據(jù)受害癥狀等因素進(jìn)行分類(lèi)并判斷。但上述研究并不能完全解決病蟲(chóng)害診斷中存在的問(wèn)題,主要原因有以下三點(diǎn):一是水稻數(shù)據(jù)種類(lèi)多樣,關(guān)系及屬性復(fù)雜,數(shù)據(jù)間深層次的關(guān)聯(lián)關(guān)系不易被挖掘,同時(shí),也缺少相關(guān)推理過(guò)程的顯示;二是傳統(tǒng)專(zhuān)家系統(tǒng)大都是定量識(shí)別,存在推理可解釋性弱的問(wèn)題;三是很少有專(zhuān)家系統(tǒng)把節(jié)氣與規(guī)則相結(jié)合進(jìn)行病蟲(chóng)害預(yù)警。知識(shí)圖譜以節(jié)點(diǎn)及邊的形式將不同類(lèi)型的實(shí)體、概念組合成巨大網(wǎng)絡(luò)[16],有利于以可視化形式展示知識(shí)的多種關(guān)系和結(jié)構(gòu),它為提高檢索的可推理性及檢索效率提供了機(jī)遇。隨著農(nóng)業(yè)信息化的普及,對(duì)農(nóng)業(yè)領(lǐng)域異構(gòu)數(shù)據(jù)的處理從原有的本體構(gòu)建再到語(yǔ)義網(wǎng),國(guó)內(nèi)外學(xué)者都進(jìn)行了探究[17-19]。此外,農(nóng)業(yè)領(lǐng)域知識(shí)圖譜也有成功的應(yīng)用案例[20-22],促進(jìn)了知識(shí)圖譜技術(shù)在農(nóng)業(yè)領(lǐng)域的發(fā)展,初步實(shí)現(xiàn)了數(shù)據(jù)信息的有效利用。但知識(shí)圖譜是網(wǎng)狀結(jié)構(gòu),在實(shí)現(xiàn)知識(shí)推理時(shí)主要是定性地解決問(wèn)題,且利用語(yǔ)義資源解決農(nóng)業(yè)知識(shí)的應(yīng)用相對(duì)不足,所以從大量繁瑣數(shù)據(jù)中提取有用的農(nóng)業(yè)知識(shí)、有效結(jié)合定量與定性,使推理更具可解釋性的研究意義重大。本文主要工作是根據(jù)水稻病蟲(chóng)害數(shù)據(jù),提出一種面向該領(lǐng)域的知識(shí)圖譜構(gòu)建方法,同時(shí)以圖譜數(shù)據(jù)為支撐,提出系列基于圖的水稻病蟲(chóng)害檢索算法;然后將專(zhuān)家置信度確定性因子(Certainty factor,CF)融合到知識(shí)圖譜中,解決圖譜難以定量的問(wèn)題,且增加圖譜的可解釋性,構(gòu)建基于CF和知識(shí)圖譜相結(jié)合的知識(shí)推理方法,并且通過(guò)自主開(kāi)發(fā)的智能診斷系統(tǒng),結(jié)合實(shí)際案例對(duì)文中方法進(jìn)行分析,實(shí)現(xiàn)水稻領(lǐng)域病蟲(chóng)害的智能檢索、預(yù)警及診斷。
水稻病蟲(chóng)害知識(shí)圖譜建模是建立水稻病蟲(chóng)害的數(shù)據(jù)模型,即采取特定形式表示領(lǐng)域知識(shí),并構(gòu)建包含概念、屬性及概念間關(guān)系的本體模型對(duì)水稻病蟲(chóng)害知識(shí)進(jìn)行描述[23]。建模途徑通常包括自頂向下和自底向上2種。本研究將采用2種途徑相結(jié)合的方式,通過(guò)構(gòu)建水稻病蟲(chóng)害領(lǐng)域本體模型[24],映射到知識(shí)圖譜的模式層,將從不同數(shù)據(jù)源中獲取到的實(shí)體、關(guān)系、屬性等知識(shí)進(jìn)行融合,形成水稻病蟲(chóng)害知識(shí)圖譜。
1.1.1 水稻病蟲(chóng)害本體建模 建模過(guò)程分為明確目標(biāo)領(lǐng)域本體及任務(wù)、模型復(fù)用、羅列本體中涉及到的領(lǐng)域元素、明確分類(lèi)體系、定義相關(guān)屬性與關(guān)系及定義約束條件6個(gè)主要步驟。在構(gòu)建相關(guān)本體層類(lèi)別概念過(guò)程中,利用網(wǎng)絡(luò)本體語(yǔ)言建立知識(shí)模型,根據(jù)國(guó)家農(nóng)業(yè)科學(xué)數(shù)據(jù)共享中心數(shù)據(jù)庫(kù)對(duì)病蟲(chóng)害進(jìn)行分類(lèi),結(jié)合水稻專(zhuān)家的指導(dǎo),得到本體層類(lèi)別以及概念之間的關(guān)系,如圖1所示。
圖 1 水稻病蟲(chóng)害本體構(gòu)建圖Fig.1 The ontogeny construction figure of rice diseases and pests
確定水稻病蟲(chóng)害領(lǐng)域類(lèi)的集合。實(shí)際的概念一般用類(lèi)形容,如發(fā)病階段、危害癥狀、節(jié)氣等稱(chēng)為類(lèi)。用三元組表示為(危害部位,rdfs:hasclass,Owl:thing)。
確定水稻病蟲(chóng)害領(lǐng)域內(nèi)概念的關(guān)系集合。本體概念間關(guān)系分為子類(lèi)間關(guān)系、實(shí)例及類(lèi)間關(guān)系和參照關(guān)系3種。其中subClassOf (病斑顏色,病害癥狀)表示病斑顏色是病害癥狀的子類(lèi);type(暗綠色,病斑顏色)表示暗綠色屬于病斑顏色類(lèi)。
確定水稻病蟲(chóng)害領(lǐng)域的屬性集合。本體概念中包括對(duì)象屬性及數(shù)據(jù)屬性2種。用三元組表示為(花足稈,紋枯病,Owl:dataProperty)。其中:花足稈是紋枯病的數(shù)據(jù)屬性,即花足稈是紋枯病的別名;水稻病蟲(chóng)害本體概念間存在約束關(guān)系的特殊屬性。三元組(病害類(lèi)別,病害癥狀,Owl:objectProperty)表示病害類(lèi)別和病害癥狀之間的關(guān)系。
確定水稻病蟲(chóng)害領(lǐng)域的實(shí)例集合。從語(yǔ)義角度分析實(shí)例代表對(duì)象,如每個(gè)具體病蟲(chóng)害都是病蟲(chóng)害類(lèi)的實(shí)例,用三元組(紋枯病,rdfs:type,Owl:individual)表示。
1.1.2 水稻病蟲(chóng)害知識(shí)表示 水稻病蟲(chóng)害知識(shí)圖譜的結(jié)構(gòu)關(guān)系分為2大類(lèi):一類(lèi)為概念層級(jí)關(guān)系(GMR)、另一類(lèi)為實(shí)體關(guān)系 (GER)[25]。概念層級(jí)關(guān)系圖GMR=<CMR,RMR>,其中CMR代表圖中出現(xiàn)的概念節(jié)點(diǎn),RMR則代表被多條邊連著的概念間的關(guān)系邊。實(shí)體關(guān)系圖 GER=<EER,RER>,其中EER代表圖中出現(xiàn)的實(shí)體節(jié)點(diǎn),RER代表被多條邊連著的實(shí)體間的關(guān)系邊。以水稻病害為例,展示知識(shí)圖譜模式層與數(shù)據(jù)層之間的相互對(duì)應(yīng)關(guān)系,如圖2所示。其中水稻病蟲(chóng)害領(lǐng)域知識(shí)中的各種概念、實(shí)體以及連接它們的關(guān)系由節(jié)點(diǎn)、邊分別表示,即防治方法、發(fā)病階段、節(jié)氣等概念節(jié)點(diǎn)和科學(xué)管水、苗期、立夏等實(shí)體節(jié)點(diǎn),可并稱(chēng)為節(jié)點(diǎn)集合;Has_Subclass(概念間)關(guān)系和REL_PH(蟲(chóng)害實(shí)體和危害方式)關(guān)系、REL_CI(病害實(shí)體與危害癥狀實(shí)體)關(guān)系等,并稱(chēng)為邊集合。
圖 2 知識(shí)圖譜概念層次圖及實(shí)體關(guān)系圖Fig.2 Conceptual hierarchy graph and entity relationship graph of knowledge graph
1.1.3 水稻病蟲(chóng)害本體與知識(shí)圖譜映射匹配機(jī)制 構(gòu)建水稻病蟲(chóng)害知識(shí)圖譜的首要工作是對(duì)該領(lǐng)域本體與知識(shí)圖譜間匹配機(jī)制的確認(rèn)。本體實(shí)質(zhì)是使用層次化抽象方法進(jìn)行關(guān)系和實(shí)體的表示[26]。本體概念層級(jí)結(jié)構(gòu)被當(dāng)成樹(shù),其概念、實(shí)例及關(guān)系通過(guò)樹(shù)形節(jié)點(diǎn)和樹(shù)間的連線來(lái)體現(xiàn)。而知識(shí)圖譜本質(zhì)被認(rèn)為是一張龐大的語(yǔ)義知識(shí)網(wǎng)絡(luò)[27],其概念層級(jí)關(guān)系圖被比作樹(shù),樹(shù)的節(jié)點(diǎn)表示其概念節(jié)點(diǎn),實(shí)體節(jié)點(diǎn)和實(shí)體間關(guān)系就是圖譜中實(shí)體關(guān)系圖中的節(jié)點(diǎn)及連線。因此,可根據(jù)樹(shù)與樹(shù)、樹(shù)與圖之間的映射表示本體和知識(shí)圖譜的本體映射匹配模式。
把水稻病蟲(chóng)害本體中防治方法、危害癥狀、節(jié)氣等概念當(dāng)作樹(shù)的節(jié)點(diǎn),而知識(shí)圖譜中,它們也對(duì)應(yīng)地成為知識(shí)圖譜概念層級(jí)中樹(shù)的相關(guān)節(jié)點(diǎn),同時(shí),紋枯病、水浸狀等實(shí)例作為知識(shí)圖譜中實(shí)體關(guān)系圖的節(jié)點(diǎn),具體如圖3所示。
圖 3 本體與知識(shí)圖譜映射圖Fig.3 The mapping picture from ontology to knowledge graph
1.2.1 水稻病蟲(chóng)害數(shù)據(jù)獲取與預(yù)處理 目前,水稻領(lǐng)域暫時(shí)沒(méi)有公開(kāi)數(shù)據(jù)庫(kù)可作為試驗(yàn)語(yǔ)料,本研究首先利用python爬取網(wǎng)絡(luò)上水稻病蟲(chóng)害文獻(xiàn)(包括南方農(nóng)業(yè)、農(nóng)家參謀、農(nóng)民致富之友、鄉(xiāng)村科技、植物醫(yī)生等)資料,獲取到576篇水稻相關(guān)文本,共4 140個(gè)語(yǔ)句。然后通過(guò)正則表達(dá)式、規(guī)范字符格式等一系列數(shù)據(jù)預(yù)處理操作,刪除非文本數(shù)據(jù),獲得規(guī)范化的水稻病蟲(chóng)害語(yǔ)料庫(kù)。
一般分詞都被當(dāng)作是命名實(shí)體識(shí)別的基礎(chǔ),但是分詞會(huì)產(chǎn)生各類(lèi)不同的錯(cuò)誤。例如,水稻病害實(shí)體“葉鞘腐敗病”分詞后為葉鞘/腐敗/病。由于錯(cuò)誤分詞的情況會(huì)導(dǎo)致實(shí)體的特征表示出錯(cuò),基于字符的實(shí)體識(shí)別可減少此類(lèi)問(wèn)題的出現(xiàn)。研究中利用字向量作為模型的最初輸入,使用預(yù)訓(xùn)練的方式,以字為單位切割,進(jìn)而得到實(shí)體的特征表示。
1.2.2 水稻病蟲(chóng)害知識(shí)抽取模型框架 本研究采用Bi-LSTM-CRF模型[28]進(jìn)行水稻病蟲(chóng)害實(shí)體的抽取,其框架包括3個(gè)部分,如圖4所示。
圖 4 Bi-LSTM-CRF模型Fig.4 Bi-LSTM-CRF model
表示層:水稻文本數(shù)據(jù)需進(jìn)行文本向量化,將相應(yīng)字符映射為一定維度的實(shí)數(shù)向量,才能被計(jì)算機(jī)處理。CBOW模型[29]是依據(jù)當(dāng)前字的前后各2個(gè)字預(yù)測(cè)當(dāng)前字出現(xiàn)的概率。例如水稻病害實(shí)體“菌核稈腐病”,通過(guò)“稈”字的前后“菌”“核”“腐”“病”4個(gè)字,來(lái)預(yù)測(cè)“稈”這個(gè)位置出現(xiàn)各個(gè)字的概率,其中給定的“稈”字出現(xiàn)的概率最大。
Bi-LSTM層:Bi-LSTM由LSTM演化而來(lái),LSTM是緩解循環(huán)神經(jīng)網(wǎng)絡(luò)在面對(duì)長(zhǎng)序列會(huì)出現(xiàn)梯度消失的問(wèn)題提出的[30]。LSTM是包括遺忘門(mén)、輸出門(mén)和輸入門(mén)的網(wǎng)絡(luò)模型,各門(mén)的結(jié)構(gòu)如下:
其中:ft、it、ot分別為遺忘門(mén)、輸入門(mén)、輸出門(mén);w代表權(quán)重矩陣;b代表偏置向量;σ代表sigmoid函數(shù);Ct代表當(dāng)前細(xì)胞的狀態(tài),?代表矩陣按位相乘。
單向LSTM網(wǎng)絡(luò)在進(jìn)行訓(xùn)練時(shí)只考慮到句子的時(shí)序信息而忽略了上下文之間的關(guān)系,因此,多句對(duì)話時(shí),往往不能取得很好的效果。例如:水稻病害實(shí)體“白葉枯病”,LSTM只能訪問(wèn)“葉”的前一個(gè)字“白”的特征而不能預(yù)測(cè)下一個(gè)字“枯”的出現(xiàn)。Bi-LSTM模型將前向的LSTM和后向的LSTM結(jié)合,可以充分利用序列的上下文信息,具有能夠捕獲前后信息特征的作用。
CRF層:CRF是一種序列建模算法[31],它綜合了隱馬爾可夫模型和最大熵模型的優(yōu)點(diǎn)。它由既定的觀察序列進(jìn)一步推測(cè)出對(duì)應(yīng)的狀態(tài)序列,可以利用相鄰前后的標(biāo)簽關(guān)系獲取當(dāng)前最優(yōu)的標(biāo)記。
1.2.3 水稻病蟲(chóng)害知識(shí)抽取過(guò)程與結(jié)果分析 本研究采用Bi-LSTM-CRF模型進(jìn)行水稻病蟲(chóng)害命名實(shí)體識(shí)別,要識(shí)別出病害名稱(chēng)、蟲(chóng)害名稱(chēng)和危害癥狀3種不同的命名實(shí)體。語(yǔ)料中訓(xùn)練集和測(cè)試集按7︰3劃分。主要的流程如下:
首先,利用CBOW模型,通過(guò)對(duì)語(yǔ)料進(jìn)行無(wú)監(jiān)督訓(xùn)練,對(duì)不同維度字向量進(jìn)行對(duì)比,最終得到100維度時(shí)模型性能最好。通過(guò)預(yù)訓(xùn)練方式,得到水稻病蟲(chóng)害文本100維度的字向量特征,應(yīng)用在水稻病蟲(chóng)害領(lǐng)域的命名實(shí)體識(shí)別。其次,字嵌入層的向量x將作為t時(shí)刻Bi-LSTM層的輸入,通過(guò)正向LSTM輸出特征序列和反向輸出序列,獲得隱藏層拼接的向量,通過(guò)tanh激活函數(shù)的加權(quán)求得最終的輸出。最后,把Bi-LSTM的輸出作為CRF層的輸入,采用狀態(tài)轉(zhuǎn)換矩陣預(yù)測(cè)當(dāng)前標(biāo)簽,通過(guò)利用Softmax函數(shù),得到最終序列的條件概率。使用Viterbi算法[32]將得分最高的序列作為模型最終的標(biāo)注結(jié)果。通過(guò)多次重復(fù)試驗(yàn)得到模型的參數(shù),如表1所示。
表 1 Bi-LSTM-CRF模型參數(shù)設(shè)置Table 1 Parameter settings of Bi-LSTM-CRF model
測(cè)評(píng)常用P(準(zhǔn)確率)、R(召回率) 和F1 值來(lái)評(píng)價(jià)試驗(yàn)結(jié)果。其中,P為模型正確識(shí)別水稻病蟲(chóng)害實(shí)體數(shù)與識(shí)別出水稻病蟲(chóng)害實(shí)體總數(shù)的比值,R為系統(tǒng)正確識(shí)別水稻病蟲(chóng)害實(shí)體數(shù)與數(shù)據(jù)集中存在的水稻病蟲(chóng)害實(shí)體總數(shù)的比值,F(xiàn)1值的計(jì)算公式為F1 = 2PR/(P+R)。通過(guò)試驗(yàn)得出3類(lèi)實(shí)體識(shí)別的準(zhǔn)確率、召回率、F1值,如表2所示。
表 2 命名實(shí)體試驗(yàn)結(jié)果Table 2 Named entity experimental results
本研究運(yùn)用當(dāng)前流行的圖數(shù)據(jù)庫(kù)Neo4j[33]進(jìn)行水稻病蟲(chóng)害領(lǐng)域知識(shí)的存儲(chǔ)。根據(jù)模式層的防治方法 (Control methods)、發(fā)病階段 (Period)、危害部位(Damage site)等11大類(lèi)知識(shí)進(jìn)行水稻病蟲(chóng)害數(shù)據(jù)分析,將獲取的知識(shí)以三元組的形式進(jìn)行表達(dá),即相同類(lèi)型實(shí)例放在一個(gè)表中,表的每列代表該類(lèi)實(shí)體的具體值,每行存儲(chǔ)該類(lèi)實(shí)體的實(shí)例。運(yùn)用機(jī)器學(xué)習(xí)算法提取病蟲(chóng)害名稱(chēng)實(shí)體、危害癥狀實(shí)體及它們之間的關(guān)系數(shù)據(jù),并進(jìn)行結(jié)構(gòu)化處理,同時(shí)定義好對(duì)應(yīng)的標(biāo)簽。在此基礎(chǔ)上,再請(qǐng)?jiān)擃I(lǐng)域?qū)<疫M(jìn)行實(shí)體的補(bǔ)充和修正,由專(zhuān)家輔助建立關(guān)系。最終將全部?jī)?nèi)容建立對(duì)應(yīng)的實(shí)體及三元組關(guān)系表,表3為部分三元組示例。通過(guò)搭建近義詞映射表實(shí)現(xiàn)水稻病蟲(chóng)害領(lǐng)域異構(gòu)數(shù)據(jù)源的實(shí)體對(duì)齊正確性,并在完成對(duì)齊后進(jìn)行去重操作。水稻病蟲(chóng)害三元組數(shù)量較多,需要進(jìn)行批量入庫(kù)。先將實(shí)體表、三元組關(guān)系表進(jìn)行整合,采用“LOAD”的方式,將轉(zhuǎn)化后的CSV文件寫(xiě)入到Neo4j中構(gòu)建知識(shí)圖譜。
表 3 水稻病害實(shí)體關(guān)系部分三元組示例Table 3 Examples of triples in the entity relationship of rice diseases
中心節(jié)點(diǎn)表示病害類(lèi)別標(biāo)簽下的水稻紋枯病實(shí)體;外側(cè)節(jié)點(diǎn)表示水稻紋枯病的27個(gè)病斑顏色和病斑形狀,Rel_CI表示病害類(lèi)別和危害癥狀的關(guān)系,relciName和CF表示關(guān)系的屬性值,如圖5所示。
圖 5 知識(shí)圖譜可視化Fig.5 Knowledge graph visualization
水稻病蟲(chóng)害所有數(shù)據(jù)整合到圖數(shù)據(jù)庫(kù)后的具體信息,如表4、表5所示。
表 4 知識(shí)圖譜實(shí)體類(lèi)型及屬性Table 4 Knowledge graph entity types and properties
表 5 知識(shí)圖譜實(shí)體關(guān)系類(lèi)型及屬性Table 5 Knowledge graph entity relationship types and properties
實(shí)際水稻病蟲(chóng)害檢索應(yīng)用時(shí),通過(guò)圖挖掘算法分析圖譜中的知識(shí)數(shù)據(jù),對(duì)其中已有的知識(shí)深層次分析后得到潛藏在數(shù)據(jù)內(nèi)部的新知識(shí)[34],以實(shí)現(xiàn)用戶(hù)不同的檢索需求。其一,用戶(hù)要獲取實(shí)體節(jié)點(diǎn)間的離散距離,即探索出數(shù)據(jù)間最佳路徑,提出基于最短路徑的水稻病蟲(chóng)害檢索算法;其二,用戶(hù)想明確哪些實(shí)體隸屬一類(lèi)的問(wèn)題,提出基于連通組件的水稻病蟲(chóng)害檢索算法;其三,用戶(hù)要找到與已知實(shí)體節(jié)點(diǎn)最為相似的其余節(jié)點(diǎn),提出基于杰卡德相似度的水稻病蟲(chóng)害檢索算法。系統(tǒng)會(huì)根據(jù)用戶(hù)的輸入自動(dòng)匹配最佳算法,為用戶(hù)高效檢索出最佳答案,圖6為實(shí)現(xiàn)數(shù)據(jù)檢索算法的詳細(xì)流程。
圖 6 檢索流程圖Fig.6 Search flow chart
文中提出的系列水稻病蟲(chóng)害檢索算法結(jié)合圖譜的優(yōu)勢(shì),不但能幫助用戶(hù)更好地理解知識(shí)圖譜結(jié)構(gòu),當(dāng)有新的子圖需要頻繁更新時(shí),也可以快速顯示新節(jié)點(diǎn)信息。同時(shí)也提升了系統(tǒng)檢索效率,對(duì)系統(tǒng)應(yīng)用具有重要作用。
節(jié)氣能反應(yīng)季節(jié)不同變化,常用作指導(dǎo)農(nóng)業(yè)耕種。它具有很強(qiáng)的區(qū)域性,不同農(nóng)作物、不同地域具備不同的氣象信息。其中針對(duì)節(jié)氣的時(shí)間概念是指節(jié)氣前后的天數(shù),即節(jié)氣所處陽(yáng)歷月份的上半月或下半月。本研究主要針對(duì)吉林省長(zhǎng)春市各縣單季水稻的相關(guān)農(nóng)事活動(dòng)。節(jié)氣作為水稻預(yù)警的重要影響因素,通過(guò)病蟲(chóng)害不同的發(fā)病階段,得出不同發(fā)病階段的月份時(shí)間范圍,再根據(jù)文獻(xiàn)[35]中節(jié)氣和月份對(duì)應(yīng)的時(shí)間段,利用月份映射出發(fā)病階段和節(jié)氣間的對(duì)應(yīng)關(guān)系,發(fā)現(xiàn)該節(jié)氣可能出現(xiàn)的病蟲(chóng)害,進(jìn)而增加目標(biāo)病蟲(chóng)害正確識(shí)別的概率,進(jìn)一步實(shí)現(xiàn)預(yù)警。
2.3.1 確定性因子模型 基于確定性因子模型的不確定推理是對(duì)不確定知識(shí)應(yīng)用與處理的一種方法,它的典型代表是MYCIN專(zhuān)家系統(tǒng)。水稻病蟲(chóng)害診斷中,每個(gè)癥狀對(duì)于病害或蟲(chóng)害為真的程度,專(zhuān)家都賦予其CF值,其表示形式為:
其中A、B分別為前提條件和結(jié)論。
確定性因子的定義[36]如下:
在水稻病蟲(chóng)害診斷中,需要知道某種證據(jù)在某個(gè)結(jié)論中出現(xiàn)的概率,所以必須把確定性因子轉(zhuǎn)化成概率[37]。由上面公式(7)得:
要根據(jù)P(B),即B的先驗(yàn)概率,才能得出最終概率。P(B)可以通過(guò)專(zhuān)家經(jīng)驗(yàn)或者文獻(xiàn)給出,還可直接視為無(wú)知,也就是P(B)=0.5。
2.3.2 基于確定性因子模型和知識(shí)圖譜結(jié)合的知識(shí)推理方法 通過(guò)知識(shí)間關(guān)聯(lián)關(guān)系,根據(jù)CF的定量特點(diǎn)及屬性圖模型的特性,把專(zhuān)家賦予的CF值作為REL_CI關(guān)系的特殊屬性引入知識(shí)圖譜,且病害實(shí)體與危害癥狀實(shí)體間只對(duì)應(yīng)一個(gè)CF值。但經(jīng)常會(huì)出現(xiàn)一種病害或蟲(chóng)害共同擁有多個(gè)癥狀的情況。對(duì)于癥狀的不確定性而言,當(dāng)有多條規(guī)則支持結(jié)論時(shí),那么結(jié)論的確定性因子計(jì)算公式為:
在利用知識(shí)圖譜進(jìn)行水稻病蟲(chóng)害診斷過(guò)程中,不會(huì)存在證據(jù)為假的情況,即 CF(B|A)<0不存在,當(dāng)出現(xiàn)多個(gè)癥狀和病蟲(chóng)害有關(guān)聯(lián)時(shí),選擇公式(9)進(jìn)行并行CF值計(jì)算。在推理診斷過(guò)程中,當(dāng)選擇某個(gè)或某幾個(gè)癥狀時(shí),無(wú)法判斷知識(shí)圖譜中相互關(guān)聯(lián)的該癥狀究竟是屬于哪種病害或者蟲(chóng)害,采用CF和知識(shí)圖譜結(jié)合的方法解決這個(gè)不確定性問(wèn)題,該算法的實(shí)現(xiàn)流程如下:
輸入: ListSymptom = {M1,M2,M3} 3 種癥狀;
輸出:M1,M2,M3所有組合癥狀中,患病概率由高到低的前3個(gè)疾病;
步驟 1: 對(duì) ListSymptom {M1,M2,M3}中癥狀進(jìn)行組合,得到列表L;
步驟2: 對(duì)組合數(shù)據(jù)進(jìn)行遍歷,列表L索引值i=0;
步驟 3: whilei小于列表 L 的長(zhǎng)度;
步驟4: 根據(jù)集合L[i]的癥狀與該癥狀對(duì)應(yīng)的關(guān)系R,在數(shù)據(jù)庫(kù)中查找是否存在相關(guān)病蟲(chóng)害的集合D;
步驟 5: ifD不為空 then;
步驟6: 在數(shù)據(jù)庫(kù)中查找出對(duì)應(yīng)病蟲(chóng)害的可信度 CFn;
步驟7: 由公式(8)算出發(fā)病的概率;
步驟8: 將癥狀、病蟲(chóng)害與概率記錄到字典RecDict中;
步驟 9: 根據(jù)概率值對(duì)結(jié)果列表進(jìn)行由高到低的排序;
步驟10:取出結(jié)果列表中前3組數(shù)據(jù),寫(xiě)入結(jié)果字典ResDict中;
步驟 11: return ResDict。
2.3.3 水稻病蟲(chóng)害診斷 由于不需要向用戶(hù)詢(xún)問(wèn)相關(guān)信息,只需要用戶(hù)對(duì)所觀察到的水稻病蟲(chóng)害癥狀做出盡量具體且多的選擇。所以用戶(hù)界面設(shè)計(jì)十分簡(jiǎn)單,但它要求用戶(hù)能夠?qū)τ^察到的水稻病蟲(chóng)害的表現(xiàn)癥狀進(jìn)行正確的描述。
使用基于CF和知識(shí)圖譜結(jié)合的知識(shí)推理方法進(jìn)行診斷,表6為1個(gè)診斷實(shí)例。
表 6 診斷實(shí)例表Table 6 Table of examples of diagnoses
用戶(hù)對(duì)出現(xiàn)的癥狀進(jìn)行選擇,利用CF模型與知識(shí)圖譜結(jié)合的算法中P(B)設(shè)為無(wú)知,即P(B)=0.5。具體計(jì)算步驟如下:
第1步:經(jīng)過(guò)推理得出水稻紋枯病、細(xì)菌性條斑病和水稻白葉枯病的CF值分別為0.797 5、0.737 9和 0.851 1。
水稻紋枯?。篊F(M1|H)=0.55+0.55?0.55×0.55=0.797 5;
細(xì)菌性條斑病: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步:由于用戶(hù)要判斷出哪一種病害出現(xiàn)的概率更高,所以利用確定性因子模型,求出每種病害出現(xiàn)的概率。通過(guò)計(jì)算求得3種病的概率分別為 0.898 8、0.869 0 和 0.925 6。
水稻紋枯?。篜(M1|H)=CF(M1|H)(1?P(B))+P(B)=0.797 5×(1?0.5)+0.5≈0.898 8;
細(xì)菌性條斑?。篜(M2|H)=CF(M2|H)(1?P(B))+P(B)=0.737 9×(1?0.5)+0.5≈0.869 0;
白葉枯?。篜(M3|H)=CF(M3|H)(1?P(B))+P(B)=0.851 1×(1?0.5)+0.5≈0.925 6。
病害出現(xiàn)的概率越大,說(shuō)明水稻發(fā)生該病害的可能性越大,因此最可能發(fā)生的病害為水稻白葉枯病。
算法的性能根據(jù)診斷結(jié)果的正確率(Accuracy)進(jìn)行判斷。利用診斷系統(tǒng)對(duì)長(zhǎng)春市某縣4—9月份8種常見(jiàn)病害進(jìn)行實(shí)際測(cè)試,由水稻領(lǐng)域?qū)<易罱K核實(shí)80例樣本,并表現(xiàn)在圖7的8×8混淆矩陣中。
圖 7 8種常見(jiàn)病害的系統(tǒng)診斷性能評(píng)價(jià)結(jié)果Fig.7 Evaluation results of system diagnostic performance of eight common diseases
通過(guò)真正例 (True positive,TP)、假正例 (False positive,F(xiàn)P)、假負(fù)例 (False negative,F(xiàn)N)、真負(fù)例(True negative,TN)4個(gè)基礎(chǔ)指標(biāo)得到評(píng)估診斷正確率的計(jì)算公式:
由式(10)計(jì)算80例樣本的正確率,并依據(jù)混淆矩陣進(jìn)行驗(yàn)證:
綜上,本研究提出的基于知識(shí)圖譜和確定性因子模型結(jié)合的診斷方法的正確率為86.25%。
面對(duì)水稻病蟲(chóng)害海量知識(shí)冗余、分散、多源的特點(diǎn),建立水稻病蟲(chóng)害范疇的知識(shí)圖譜,用戶(hù)不僅可以檢索水稻病蟲(chóng)害的相關(guān)知識(shí),而且可以通過(guò)癥狀診斷水稻所患病蟲(chóng)害,從而有效拓展用戶(hù)的知識(shí)面,提升水稻生產(chǎn)水平與質(zhì)量。本研究開(kāi)發(fā)了包括80多種病蟲(chóng)害的智能診斷系統(tǒng),其整體架構(gòu)由水稻病蟲(chóng)害知識(shí)圖譜和智能推理2大部分組成,如圖8所示。本系統(tǒng)的PC端訪問(wèn)地址為:http://d236424e.nat3.z100.vip。
圖 8 智能診斷系統(tǒng)整體架構(gòu)Fig.8 Overall architecture of an intelligent diagnostic system
為確保用戶(hù)更深層次地了解水稻病蟲(chóng)害間的潛在關(guān)系,以便對(duì)其病蟲(chóng)害有更進(jìn)一步的診斷和預(yù)測(cè),開(kāi)發(fā)了以ECharts可視化為基礎(chǔ),包含知識(shí)展示、檢索、診斷及預(yù)警4個(gè)功能模塊的智能診斷系統(tǒng),如圖9a所示。系統(tǒng)在吉林省某農(nóng)村進(jìn)行了應(yīng)用。知識(shí)展示模塊的目的是讓用戶(hù)對(duì)知識(shí)圖譜有更深刻直觀的理解,也為后續(xù)的推理提供有力的數(shù)據(jù)支撐。當(dāng)用戶(hù)選擇查詢(xún)推理時(shí),通過(guò)查詢(xún)的方式實(shí)現(xiàn)信息的檢索,例如查詢(xún)“腐爛”癥狀,可得到與腐爛有直接關(guān)聯(lián)的爛秧病、紋枯病等病害信息。圖9b以病害為例,用戶(hù)選擇“水浸狀”、“卷曲”、“暗綠色”3個(gè)癥狀,不僅可以得到與其關(guān)聯(lián)的所有病害實(shí)體節(jié)點(diǎn),還可根據(jù)CF模型與知識(shí)圖譜結(jié)合的算法,診斷出在3種癥狀發(fā)生的情況下,最可能出現(xiàn)的病害是水稻白葉枯病,并鏈接判斷后的目標(biāo)病害圖片,為用戶(hù)檢查提供依據(jù)。預(yù)警模塊根據(jù)節(jié)氣對(duì)用戶(hù)進(jìn)行農(nóng)事指導(dǎo),通過(guò)建立病蟲(chóng)害與節(jié)氣的關(guān)聯(lián)關(guān)系,把節(jié)氣作為實(shí)體節(jié)點(diǎn)引入知識(shí)圖譜中,增加了圖譜的完整性。例如5月下旬長(zhǎng)春某地區(qū),小滿(mǎn)節(jié)氣水稻可能會(huì)出現(xiàn)惡苗病、霜霉病、稻瘟病、胡麻斑病、紋枯病等病害,系統(tǒng)預(yù)警模塊則展示對(duì)應(yīng)病害圖片,提高用戶(hù)正確識(shí)別目標(biāo)病害的概率。
圖 9 系統(tǒng)界面圖Fig.9 System interface figure
本研究首先提出水稻病蟲(chóng)害知識(shí)圖譜構(gòu)建方法,解決了數(shù)據(jù)多樣及孤島化問(wèn)題,面向特定的水稻病蟲(chóng)害領(lǐng)域知識(shí)圖譜有助于充分發(fā)揮該領(lǐng)域數(shù)據(jù)的實(shí)用價(jià)值。隨后,提出系列基于圖的水稻病蟲(chóng)害檢索算法,增加了系統(tǒng)查詢(xún)的多樣性。然后,又提出確定性因子模型和知識(shí)圖譜結(jié)合的知識(shí)推理方法,實(shí)現(xiàn)定量和定性的結(jié)合,正確率達(dá)86.25%,增加了診斷的準(zhǔn)確性和可解釋性。最后,系統(tǒng)以ECharts為可視化展示工具,實(shí)現(xiàn)了水稻病蟲(chóng)害數(shù)據(jù)在特定場(chǎng)景下的應(yīng)用,有利于用戶(hù)挖掘隱藏在圖譜中的實(shí)體及關(guān)系;通過(guò)引入節(jié)氣實(shí)體,增加圖譜的完整性,提升系統(tǒng)病蟲(chóng)害診斷的正確率。本研究實(shí)現(xiàn)了基于WEB的吉林省長(zhǎng)春市各縣水稻病蟲(chóng)害智能診斷系統(tǒng),具有用戶(hù)界面友好、操作方式簡(jiǎn)單、便捷、準(zhǔn)確的優(yōu)點(diǎn),為植物病蟲(chóng)害智能診斷提供了一種高效的新途徑。后期將擴(kuò)大農(nóng)作物應(yīng)用區(qū)域,探究更多農(nóng)作物病蟲(chóng)害特征,構(gòu)建更加豐富的農(nóng)作物病蟲(chóng)害知識(shí)圖譜,并在實(shí)際應(yīng)用中不斷完善和補(bǔ)充現(xiàn)有方法,以期用戶(hù)能在不同地區(qū)訪問(wèn)系統(tǒng),得到符合該地區(qū)節(jié)氣的不同識(shí)別結(jié)果,提高診斷準(zhǔn)確率。