















摘" 要:在傳統的農業生產過程中,由于很多農業生產者缺少豐富專業的農業知識與技術,容易導致農作物在發生病蟲害時得不到正確預防與治療處理,給農業生產者帶來巨大的經濟損失。可以利用信息技術將病蟲害防治知識數字化,使用智能應答技術對農業生產者提供及時的專業知識服務,從而顯著提高農業生產者獲取病蟲害防治信息的效率和準確性,降低病蟲害的威脅,增加農作物的產量。該文通過調查研究農業種植過程中出現的病蟲害問題以及農業生產者獲取信息幫助的困境,提出應用語音識別、自然語言處理等智能化信息處理技術,對農業種植常見病蟲害診斷與防治方法等知識進行數字化、智能化處理,實現一個基于農作物病蟲害知識圖譜的智能應答系統。該系統的實現可幫助農業生產者快速準確地獲取農業病蟲害的相關知識,使得農作物得到及時精準的處理,降低病蟲害帶來的損失。
關鍵詞:農業;病蟲害;智能應答系統;知識圖譜;信息技術;語音識別
中圖分類號:TP18" " " " 文獻標志碼:A" " " " " 文章編號:2096-9902(2023)14-0021-07
Abstract: In the traditional process of agricultural production, due to the lack of rich professional agricultural knowledge and technology of many agricultural producers, it is easy to lead to the failure of correct prevention and treatment of crops in the occurrence of diseases and pests, which brings huge economic losses to agricultural producers. We can use information technology to digitize pest control knowledge, and use intelligent response technology to provide timely professional knowledge services to agricultural producers, so as to significantly improve the efficiency and accuracy of agricultural producers in obtaining pest control information, reduce the threat of diseases and pests and increase the yield of crops. By investigating and studying the problems of diseases and pests in the process of agricultural planting and the plight of agricultural producers in obtaining information, this paper puts forward the application of smart information processing technologies such as speech recognition and natural language processing. The knowledge of diagnosis and control methods of common diseases and pests in agricultural planting is digitalized and intelligently processed, and an intelligent response system based on crop pest knowledge graph is realized. The implementation of the system can help agricultural producers to obtain the relevant knowledge of agricultural diseases and pests quickly and accurately, so that crops can be processed timely and accurately, and the losses caused by diseases and pests can be reduced.
Keywords: agriculture; diseases and pests; intelligent response system; knowledge graph; information technology; speech recognition
中國用世界9%的土地養活了世界近20%的人口,我國農業生產總值占GDP的比重約為12%,由此可見農業在我國國民經濟和世界農業生產中的重要性。農業是我國國民經濟的基礎,是安天下、穩民心的戰略產業。而我國農業中比重最大的是種植業,種植業和國民經濟、糧食和糧食計劃及社會保障息息相關。農業發展是確保國家糧食安全的關鍵保障,現代化農業發展必須要積極推動農業數字化和智能化建設,將現代通信技術、物聯網、大數據和人工智能有效應用于農業生產各環節,為實現傳統農業向智慧農業轉型提供有力數據保障和技術支撐[1]。然而,農業生產中遇到的問題卻很多。近幾年,我國內地經常受到病蟲害的威脅,由于農業自身的弱質性,造成其抗擊外界沖擊的能力非常弱,所以病蟲害會對農作物造成非常嚴重的影響[2]。
在國家大力扶持下,2017年農村網絡用戶達到了2億多,網絡和“三農”融合初步顯現出成果[3]。在國內,雖然已經建立了若干農業信息數據庫,但是只有一些大型的農作物種植基地才會使用這些數據庫。對于普通農業生產者,還無法利用到專業的農業信息系統。同時我們還發現很多的農業生產者在應對農作物的重大病蟲害的過程中,缺乏有效的科學措施,導致農作物減產甚至嚴重影響到產量,對生產者造成嚴重的經濟損失。研究智能化農業病蟲害信息應答技術,可以降低農業生產者獲取農業知識的成本,幫助他們有效地解決農作物病蟲害問題,降低因病蟲害問題而造成的損失。
1" 項目概述
1.1" 主要開發技術
本系統根據各類開發模式與技術的特點[4-9],選取了以下前端和后端開發技術作為本系統的實現技術。
前端:LayUI、jQuery。
后端:Spring Boot、WebSocket、Tomcat。
1.2" 開發環境
后端操作系統:Windows系統。
前端操作系統:Android系統。
編譯器:IntelliJ IDEA、Android Studio。
數據庫:Neo4j、MySQL。
2" 需求分析
2.1" 功能性需求
1)智能應答功能。在用戶提問相對應的問題后,應當快速回復對應的答案,且要足夠詳細。
2)語音識別功能。將用戶講述不超過60 s的語音轉譯成文字,如圖1所示。
2.2" 非功能性需求
1)可靠性。充分考慮到Web App應用運行的諸多異常問題(如數據異常等),并進行處理。
2)易用性。在考慮用戶使用習慣的基礎上,保持界面簡潔美觀、添加人性化提示,保持系統的易用性。
3" 總體設計
3.1" 系統設計
本系統采用模塊化的方式進行設計與開發,這樣可以降低各個模塊之間的耦合程度,而各個模塊之間都是獨立的,當一個模塊開發完成就可以單獨測試模塊的性能以及是否存在問題。系統主要分為三層:交互層、服務層、數據層。交互層主要用來與用戶進行交互,包括安卓APP、PC網頁等;服務層進行語音到文字的處理,自然語言的處理,最后根據用戶的問題進行答案的搜索;數據庫主要是使用Neo4j與MYSQL。如圖2所示。
3.2" 數據庫設計
MySQL是一個經典的關系型數據庫。本系統的數據庫設計見表1—表5。
為了方便數據的處理,首先我們把數據存儲到MySQL數據庫中,然后將數據導出為csv格式,然后導入到Neo4j數據庫中,MySQL數據見表6。
使用Navicat軟件,將數據導出為CSV格式。通過Neo4j的桌面連接程序,連接上數據庫,然后進行數據的導入,導入代碼如圖3所示。
節點數據與關系導入完成后,Neo4j提供的桌面程序可以直觀的看到數據在數據庫中的形式,如圖4所示。
數據導入完成,我們就可以進行數據的查詢了,為了顯示Neo4j數據庫查詢語言Cypher的方便簡潔,下面我們示例使用Cypher查詢語言查詢小麥一共有哪些病蟲害,代碼如圖5所示。
小麥病蟲害查詢結果如圖6所示。
3.3" 系統前端設計
由于整個項目使用了前后端分離的方式進行開發,前端要專注于頁面的開發,后端需要專注于服務接口的實現,不需要前端代碼與后端代碼混合,簡化了開發的流程,降低了代碼的復雜度。前端頁面需要HTML、CSS、JS代碼進行編寫,通過瀏覽器異步調用服務端的接口實現數據的訪問。
3.3.1" 異步請求
本系統的網頁為HTML網頁單頁,為了防止調用新的接口的時候瀏覽器會進行頁面的跳轉,而且作為前后端分離,所以我們使用異步請求的方式進行接口的調用,一般使用JavaScript中的Ajax,而這個過程一般有5個步驟。第一步,創建異步請求對象,所有的異步請求都會在這個對象上面進行操作。第二步,設置請求方式與請求連接,請求方式一共有7種,比如常見的POST、GET等,請求連接是后臺服務器給出的接口地址。第三步設置請求頭,將攜帶一些數據發給服務器,常見的請求頭有Content-Type,表示上傳的數據類型。第四步,設置請求體,也是這個請求的正文內容,同時,類型也是Content-Type標識的,可以是JSON,表單。第五步是發出請求,然后對返回的數據進行處理。
3.3.2" 安卓App實現
App使用Android Studio開發工具進行開發,支持的安卓版本為6.0以上。創建項目以后,需要聲明互聯網權限、錄音權限、讀寫外置存儲的權限。在App運行時,還需要動態地進行錄音權限的申請,只有用戶同意后,我們才可以使用手機的錄音功能。為了方便開發,加快代碼進度,安卓App使用了web View技術,相當于內置瀏覽器,同時使用了HTML5相關的特性,可以使用錄音功能。為了加快訪問速度,節省加載靜態資源的時間,我們選擇把HTML、JS、CSS等文件集成到App中,把所有需要的文件全都放在assets文件夾中,實現本地加載,不需要訪問服務端的資源。App主界面如圖7所示。
3.3.3" 語音轉文字實現
經過一些資料搜集及調查,并且經過試用,選擇了使用訊飛公司的流式語音轉寫API。語音轉寫服務可以實時把語音轉換成文字,并且提供了多個平臺及多種編程語言的接入方式。我們選擇了使用WebSocket的方式進行接入,因為使用這種接入方式直接可以在瀏覽器使用,并且不需要訪問我們的后臺,它是直接接入訊飛后臺進行語音轉寫,可以減輕我們的服務器壓力。
通過接口密鑰基于hmac-sha256計算簽名,向服務器端發送WebSocket協議握手請求。握手成功后,客戶端通過WebSocket連接同時上傳和接收數據。數據上傳完畢,客戶端需要上傳一次數據結束標識。接收到服務器端的結果全部返回標識后斷開WebSocket連接。
在握手階段,請求方需要對請求進行簽名,服務端通過簽名來校驗請求的合法性。如果握手成功,會返回HTTP 101狀態碼,表示協議升級成功;如果握手失敗,則根據不同錯誤類型返回不同HTTP Code狀態碼,同時攜帶錯誤描述信息。握手成功后客戶端和服務端會建立WebSocket連接,客戶端通過WebSocket連接可以同時上傳和接收數據。當服務端有識別結果時,會通過WebSocket連接推送識別結果到客戶端。發送數據時,如果間隔時間太短,可能會導致引擎識別有誤。建議每次發送音頻間隔40 ms,每次發送音頻字節數為一幀音頻大小的整數倍。具體交互如圖8所示。
3.4" 系統后端設計
3.4.1" Web后端搭建
本系統后端使用Springboot框架進行搭建,項目最終可以打包成jar文件格式,不需要部署各種web容器,因為jar內置了一個tomcat容器,直接運行jar文件即可,時項目部署起來簡單方便。項目分為三層架構:Controller層、Service層、Dao層。Controller負責處理用戶的請求,對請求進行參數校驗以及權限控制等;service層負責具體的業務處理,比如農作物與病蟲害的詞典處理,問題的中文分詞處理,基于貝葉斯分類器的問題模板概率匹配,Dao層是數據持久層,負責最終的數據查詢,用戶提出的問題最終會轉化成Cypher語句,然后在Neo4j數據庫中查找數據并返回。
3.4.2" HanLP分詞器
分詞器,是將用戶輸入的一段文本,分析成符合邏輯的一種工具。本系統使用的時國內自主開發的中文分詞器:HanLP,它不僅可以進行分詞,還可以進行詞性標注。分詞示例如圖9所示。
把數據庫中所有的農作物與病蟲害的名稱導出,然后一行一個名稱,寫入到一個txt文件中,在系統啟動的時候,把這些自定義的詞典加載到分詞器中,這樣分詞器可以使用自定義詞典,可以準確識別各種農作物與病蟲害,并且可以標注詞性,如果識別出的是自定義詞典中的關鍵詞,那么還可以進行自定義的詞性標注。經過自定義詞性標注之后,那么不論是小麥,還是水稻,所有的農作物最終都可以用nc(農作物名稱)來代替,所有的病蟲害都可以用nb(病蟲害)來代替。而這就是把原始問題句子進行抽象化處理,如圖10所示。
3.4.3" 樸素貝葉斯分類器
貝葉斯分類算法是統計學的一種分類方法,它是一類利用概率統計知識進行分類的算法。在許多場合,樸素貝葉斯(Na?觙ve Bayes,NB)分類算法可以與決策樹和神經網絡分類算法相媲美,該算法能運用到大型數據庫中,而且方法簡單、分類準確率高、速度快。本系統使用樸素貝葉斯分類器來實現對用戶提出的問題的預測,匹配到我們系統的一個模板。
系統一共實現了8類問題的精確查詢,分別是0——查詢全部農作物;1——查詢全部的病蟲害;2——查詢全部的癥狀;3——查詢某農作物的病蟲害;4——查詢某病蟲害的詳細信息;5——查詢某個病蟲害的危害;6——查詢某個病蟲害的治療方法;7——根據癥狀查詢病蟲害。
為了使用貝葉斯分類器進行問題模板的匹配,并且可以通過對問題的訓練增大正確匹配的概率,更好地訓練分類器,提高識別的概率,首先要必須有很多種提問的語句,這里示例查詢全部農作物的訓練語句:“系統支持哪些nz(農作物)?”“全部的nz?”“系統內所有的nz?”“系統可以查詢哪些nz?”“系統一共可以查詢哪些nz?”“系統一共有哪些nz?”等。在使用的時候,由用戶提問,分類器對問題進行模板匹配,拿到具體的模板編號。我們會選取概率最大的作為識別結果,同時,如果概率小于50%,系統就會認為用戶提問出錯,識別結果如圖11所示。
3.4.4" Cypher語言查詢
當分類器匹配具體的模板之后,關鍵的部分已經完成了。下一步是將句子的還原,把關鍵詞的詞性轉換為具體的名詞,某種農作物或者病蟲害。這個時候不僅知道用戶的問題,更知道了用戶給的條件參數,然后執行對應的Cypher語句進行數據的查詢,以用戶給的參數作為條件,最終返回結果。
4" 系統實現
農業信息智能應答系統如圖12、13所示。
5" 結束語
本系統基于Web架構,提供了多個終端供用戶使用,實現了基于農業病蟲害知識圖譜的智能問答系統。系統使用SpringBoot框架進行開發,讓開發流程簡單快速,把主要精力集中于具體的業務流程,同時,系統開發完成后部署方便。系統使用了Neo4j數據庫存儲農業知識,使用樸素貝葉斯分類器對用戶提出的問題進行概率預測分類,通過訓練即可支持更多的問題,并且可以很方便地進行數據庫的擴充以便支持更多的農作物。用戶使用本系統可以直觀地獲取到想要的信息,降低了獲取信息的成本,同時也可以免受其他雜亂信息的干擾。
參考文獻:
[1] 田小東,崔興佳,韋運玲,等.數字化和人工智能助推智慧農業發展路徑研究[J].通信與信息技術,2022(S1):9-11.
[2] 趙慶,余梅,肖小虹.中國農業創新發展模式研究綜述[J].科研管理,2020(41)293:258-265.
[3] 韓淑霞.智慧農業促進農村經濟發展的對策研究[J].智慧農業導刊,2022,2(24):5-7.
[4] 任曉鴿,任甜甜,陳曉紅,等.基于B/S架構的在線開放課程系統設計與實現[J].信息系統工程,2020(314):171-172.
[5] 劉杰,孫浩,郭東旭,等.基于Spring MVC及MyBatis框架的在線教育平臺的設計與實現[J].沈陽師范大學學報(自然科學版),2019,37(127):78-84.
[6] 牟舜禹.基于Spring框架的客服系統的設計與實現[C].北京:北京交通大學,2019.
[7] 劉雙.Spring框架中IOC的實現[J].電子技術與軟件工程,2018:143,247.
[8] 張亮,李正衛,蔣燁.基于AOP實現沖突動態檢測的實驗室預約系統設計[J].計算機測量與控制,2020(28):259,190-195.
[9] 劉志洋.ajax技術在web程序開發中的運用探討[J].輕紡工業與技術,2020,49(215):173-174.
基金項目:中央引導地方科技發展專項(2019ZYYD043);湖北省國際科技合作項目(2019AHB059);襄陽市科技項目(無編號)
第一作者簡介:朱成毅(2000-),男,碩士研究生。研究方向為人工智能,智慧農業。
*通信作者:杭波(1978-),男,博士,教授。研究方向為多媒體信息處理,智慧農業。