許 鑫,岳金釗,趙錦鵬,王亞坤,馬新明,錢學霖
1(河南農業大學 信息與管理科學學院,鄭州 450002)
2(河南糧食作物協同創新中心,鄭州 450002)
3(河南農業大學 農學院,鄭州 450002)
信息化已成為農業現代化的重要組成部分[1],生產數據結構復雜且類型多樣,數據可視化技術可以實現復雜的數據直觀化、量化和簡化,能大力的推動農業信息化的發展[2].
知識圖譜作為大數據可視化和人工智能的重要組成部分被廣泛應用[3].Google 將知識圖譜應用在搜索引擎上[4],百度和搜狗相繼推出了“知心”和“知立方”[5],蘇寧易購發布金融企業知識圖譜系統.蔣秉川等[6]利用地理知識圖譜結合交互式可視化分析COVID-19 疫情態勢;車金立等[7]構建了軍事裝備知識圖譜,實現了軍事裝備領域的知識問答;李曉雪等[8]利用領域知識圖譜技術進行了農作物病蟲害分析和分類;張善文等[9]提出了一種基于知識圖譜與Bi-LSTM 結合的小麥條銹病預測方法;華東師范大學[10]利用深度學習和自然語言處理構建了農業知識圖譜;葉帥[11]將知識圖譜引入到煤礦領域.知識圖譜在各個領域都有應用,但在農業領域的應用和技術體系尚待研究[12].
目前的農業數據分散化、種類多、連貫性差,挖掘有價值的信息是未來研究的重點[13].知識圖譜技術可以將離散的、不集中的信息與可視語義網絡關聯[14],便于通過圖的形式直觀地掌握和分析關系錯綜復雜的領域知識,實現精確查詢[12].
本研究以小麥生產知識為研究對象,獲取網絡中現存的凌亂復雜的知識,探索農業領域知識圖譜的構建方法,設計小麥品種圖譜實體和關系,通過知識圖譜直觀、清晰地展示錯綜復雜的品種知識,以期為小麥生產知識的精準推薦,農業知識圖譜的構建提供技術方案依據.
知識圖譜可分為通用知識圖譜和行業知識圖譜[15].通用知識圖譜都是常識性的知識,面向全領域,覆蓋面較廣,但深度不足,主要應用于互聯網的搜索、推薦等業務場景,如:FreeBase[16]、DBpedia[17].行業知識圖譜覆蓋特定領域的知識,知識的深度相比通用知識圖譜較深,行業知識圖譜需要收集特定領域的數據,結合業務流程在領域專家的指導下來構建知識圖譜模式之后構建數據層[18].本研究結合互動百科通用知識圖譜和小麥生產行業知識圖譜,通過獲取小麥品種等生產數據,經過清洗、整理、知識抽取等步驟,構建小麥生產領域知識圖譜,如圖1所示.

圖1 圖譜構建流程圖
(1) 數據獲取、存儲與處理:數據獲取之后需要對數據進行清洗、預處理,提高數據的利用率,增強知識圖譜的準確性.本研究選取行業垂直網站、在線百科、開放知識庫等多個源頭獲取數據,提升知識圖譜的豐富性和有效性.對于不同源頭的不同類型數據,進行分別存儲.結構化數據存儲在MySQL 數據庫中,非結構化數據存儲在MongoDB 數據庫中.獲取到的數據往往會存在殘缺、錯誤、重復等問題,需要對數據進行計量單位統一、處理缺失值等處理.
(2) 知識獲取:針對不同類型數據采用不同的知識獲取方式,對于結構化數據,各項之間存在明確的對應關系,可以直接構建三元組;而半結構化數據,存在一定的結構,需要進一步提取,將半結構化數據轉化為結構化數據.非結構化數據,利用自然語言處理(Natural Language Processing,NLP)技術對文本進行分段、分句、分詞、去除停用詞等處理,進而進行命名實體識別和關系抽取.
(3) 知識融合:不同來源數據會導致整體數據格式復雜,出現實體屬性名稱不一致,數據類型沖突等情況.所以需要把將要抽取的知識和知識圖譜現有的知識做融合處理,以消除矛盾和歧義.選取實體的屬性作為特征,構建特征向量,利用相似度計算,將新的實體與知識圖譜中現有的實體進行鏈接[19].
(4) 知識存儲與更新:在傳統的關系型數據庫存儲中,存儲大量關系復雜的數據之后,難以直觀的描述實體與實體之間的關系,每次查詢都需要聯結大量表,造成查詢效率低.而基于屬性圖形模型的Neo4j 數據庫不僅能夠直觀的反應實體之間的關系,還能夠大大地提高查詢效率[18].利用Cypher 圖數據庫查詢語言來解決知識更新問題,易于理解,方便用戶對不合理的圖數據進行更新操作.
(5) 小麥領域知識圖譜的構建與應用.將收集和整理好的數據,結合小麥領域知識的特點,構建知識圖譜.利用Neo4j 來負責小麥知識圖譜的存儲,將構造好的三元組——“實體-關系-實體”,利用Cypher 語言存儲到數據庫中.從用戶自然語句中提取實體和屬性,將實體和屬性注入到Cypher 查詢模板中,實現在小麥知識圖譜中進行查詢,在此基礎上,研究開發小麥知識圖譜查詢系統,實現了品種推薦、實體查詢、關系查詢、可視化查詢等功能.
數據來源主要包括3 個部分:從小麥行業垂直網站上得到小麥品種數據、在線百科獲取百科數據、開放知識庫獲取領域實體及實體之間的關系數據.
品種數據作為小麥生產行業知識主要針對于某一特定領域的專業性網站或數據庫,內容集中,專一,內容數據多偏半結構化數據,但在數據一致性和完整性方面與通用的知識庫相比更加完善,通常需要先分析數據結構,獲取數據后按照其結構解析[15];利用互動百科[20]中的微百科(category system)和詞條信息模塊構建本體;目前已有很多開放知識庫,如德國馬普研究所開發的Yago[21]、復旦大學開發的CN-DBPedia[22]、多語言并存的DBpedia[17]等.也有垂直領域的知識庫,如浙江大學維護的新冠開放知識圖譜、清華大學的影視雙語知識圖譜[23].本研究利用Wikidata[24]完善本地知識庫中節點關系,以便構造“實體-關系-實體”三元組.
獲取到的數據往往會存在殘缺、錯誤、重復等問題.需要對數據進行清洗,剔除無用數據.數據清洗融合主要包含數據中含有干擾字符、字段冗余、非結構化文本處理、計量單位不統一等,按照不同的類型進行單獨的處理與轉換.
知識圖譜的表示和存儲是將學術實體以及實體之間的關系按照一定的數據描述模型,進行存儲的過程[25].知識圖譜中的知識表示方法是以本體為核心,以RDF的三元組模式為基礎框架,但更多的體現實體、類別、屬性、關系等多顆粒度多層次的語義關系.
知識圖譜的表示和存儲方法使用較廣泛的有RDF存儲、圖數據庫存儲、關系型數據庫存儲3 種.國內的一些學者已將其成功的用于醫學領域知識圖譜的存儲中[26,27].但由于RDF 存儲模型設計上不夠靈活,且查詢時間復雜度高,所以不適合作為知識圖譜的表示工具.Neo4j是一個圖數據庫,屬于非關系型數據庫,它具有高性能、嵌入式、輕量級的優勢.Neo4j 以邊、節點或屬性的形式存儲,而不是以表的形式存儲,對于處理具有復雜關系的海量的知識數據來說是一個利器[28].Fatima 等[29]在社交網絡場景下,比較了Neo4j 圖數據庫和MySQL 數據庫的表現力.Neo4j 數據庫的關系模型可以表達面向網絡的數據,與關系數據庫相比,Neo4j 可以在存儲數據時連接數據,使其能夠更快地遍歷關聯數據,從而存儲數以萬計的節點和關系,且隨著圖譜數據量的不斷增大,關聯查詢的效率遠高于關系型數據庫,因此利用Neo4j 實現知識圖譜表示和存儲是較便捷、高效的方法.
知識圖譜是一種對于事實的結構化表征,主要由實體、關系、語義3 部分組成.當數據量大,結構和來源復雜時,用知識圖譜將結構復雜、碎片化數據關聯的方式來表示知識會更加清晰準確.目前,通用知識圖譜構建主要包含數據獲取與處理、知識抽取、知識融合和圖譜應用4 個階段[30],如圖2所示.

圖2 知識圖譜處理流程
數據是知識圖譜的基礎,從不同結構數據源獲取到的領域相關知識做預處理,對不同來源不同類型的數據進行清洗和入庫處理,目前有很多相關工具,如清華大學開發的THULAC[31].
知識抽取是從預處理后的數據中自動創建實體和實體關系的技術[32],是知識組織和信息融合的跨學科技術,根據數據結構的不同分為結構化、非結構化和半結構化的知識抽取.對于結構化數據,有明確的對應關系,可以直接構建.而半結構化數據是指存在一定結構但還需要加工整理的數據,抽取時可采用構建包裝器的方式.非結構化數據處理起來較麻煩,所使用的方法有基于模板、基于監督學習等[19].
經過知識抽取后,根據表1設計小麥的實體類型和關系模型,從而構建“實體-關系-實體”三元組,實體設計如表2所示,關系設計如表3所示.

表1 實體、關系模型

表2 小麥知識圖譜實體設計

表3 小麥知識圖譜關系設計
基于實體和關系的設計,將數據取出,通過Cypher語句存入Neo4j 數據庫中,實體和關系都能擁有特定的標簽,有利于節點和關系的分類,也方便后期查詢系統進行查詢.
在獲得新知識之后,需要對其進行整合,以消除矛盾和歧義,采用余弦相似度的方式表示兩個實體對象的相似程度,相似度介于?1和1 之間,其中?1 表示兩個對象完全不同,1 表示完全相似.例如,比較兩個小麥品種時,選取小麥的重要特性(產量、特征特性、抗性等)作為特征值,接著將特征向量化,最后帶入式(1)進行計算.

經過知識融合的處理,形成較為標準知識圖譜,在知識圖譜的基礎上開發語義搜索、可視化管理等應用.
知識圖譜數據類型多樣化,為了提高效率,針對不同數據進行合理存儲設計,數據的存儲架構如圖3所示.

圖3 數據庫物理架構
在數據獲取階段,品種數據存儲在MySQL 結構化數據庫中,而Wikidata 數據和百度百科詞條數據存儲在MongoDB 非結構化數據庫中.
在數據清洗階段,處理品種數據中存在的字段冗余等問題后,品種數據含有的屬性個數不一致,選取MongoDB 來存儲處理后的數據,以減少冗余數據,提升空間利用率.處理后的Wikidata 數據和百度百科詞條數據仍然存儲在MongoDB 中,對處理后的實體、關系和屬性數據存儲在Neo4j 數據庫中.
選取“種業商務網”[33]來獲取關于小麥品種的數據,用BJSON 的格式存儲在MongoDB 數據庫.MongoDB數據庫采用,便于保存不同的屬性數據,共獲取1852條品種數據,品種類型豐富,包括冬性小麥、半冬性小麥、春性小麥、弱春性小麥、弱冬性小麥等多種.品種的信息包括審定編號、選育單位、品種來源、特征特性、抗性鑒定、品質分析、產量結果等多個維度.
將“農業”的微百科作為種子網站,爬取所有的微百科,然后獲取微百科中的所有詞條,共獲取735 個微百科,詞條數102 349 個,通過知識抽取出實體和實體與實體之間的關系,最終構建的知識圖譜共有實體258 484 個,關系 328 933 個,采用圖數據庫Neo4j 來存儲實體和關系,小麥知識圖譜的局部結構,如圖4所示,相同顏色的“圓”屬于同一種實體類型,不同“圓”代表不同的實體,“圓”之間的箭頭代表實體與實體之間的關系.“圓-箭頭-圓”對應 “實體-關系-實體”三元組,例如:“徐農029–品種來源-淮麥20”表示“淮麥20”是“徐農029”的品種來源.并且,每種實體類型都有一個中心節點,用來描述該類實體,例如圖中的“半冬性小麥”所指向的實體類型都是“半冬性小麥”.

圖4 小麥品種知識圖譜
由于Neo4j 數據庫高查詢性能以及查詢語言可定制化,不僅可以查詢實體與實體之間的關系,還可以實現品種的精確查詢,以返回快速、精準、結構化的知識.品種知識的查詢基于Neo4j 圖數據庫的可定制化Cypher 查詢語言,將實體和屬性注入到Cypher 查詢模板中查詢出相應的節點數據,然后將數據封裝利用D3.js 可視化框架將數據可視化,從而實現圖譜中結點和有向關系的直觀展示,如圖5所示,可以實現品種數據的實時可視化展示分析.

圖5 知識圖譜檢索
本研究基于爬蟲技術,利用Neo4j、NLP 以及圖譜構建技術,經過數據收集與整理,知識獲取,知識融合,知識存儲等步驟,解決現存的知識重復、知識間的關聯不夠明確等問題.建立了標準的小麥品種知識圖譜體系,在此基礎上,使用Neo4j 圖數據庫存儲小麥知識圖譜,建立了小麥品種知識圖譜查詢系統,提供品種知識的關系查詢、實體查詢、品種推薦等功能,實現了品種知識的精準查詢與可視化分析.
基于Neo4j 圖數據庫的定制化Cypher 查詢,利用D3.j 進行數據可視化,為農業知識的精確查詢和可視化提供了新的途徑,同時也為知識圖譜技術在農業生產的應用與落地提供了技術參考.在未來的研究工作中,要不斷的充實建立的知識圖譜體系與系統,實現知識的及時更新與充實.此外,利用NLP 技術,結合知識問答系統,實現農業知識的智能問答推薦也是一個很有價值的應用方向.