王郝日欽 吳華瑞 馮 帥 劉志超 許童羽
(1.沈陽農業大學信息與電氣工程學院, 沈陽 110866; 2.內蒙古民族大學計算機科學與技術學院, 通遼 028043;3.國家農業信息化工程技術研究中心, 北京 100097; 4.北京農業信息技術研究中心, 北京 100097)
“中國農技推廣APP”是一個提供專家指導、農技問答的綜合性專業服務平臺,用戶每天在水稻問答模塊中提問千余條,目前主要利用人工篩選特征和淺層學習模型對水稻提問數據進行分類管理。由于水稻提問數據的高維性和稀疏性,其分類效果并不理想,如何使用自然語言處理[1]技術自動、快速地挖掘水稻問句的特征,并用于水稻問句分類,是當前需要解決的重要難題。問答系統一般包括用戶問句分類[2]、問句語義分析[3]和答案抽取[4]3部分。問句分類是問答系統的關鍵模塊,其分類準確性對問答系統至關重要,因此,對水稻問句進行自動分類是實現水稻智能問答系統[5]的關鍵,也是實現人工智能[6]的必然需求。
近年來,國內外研究人員使用機器學習[7-8]與深度學習[9-13]模型進行文本分類,并取得了良好的效果。卷積神經網絡在圖像分類領域取得了顯著的效果,研究人員將卷積神經網絡模型進行優化和改進,使用詞向量轉換工具將高維的文本數據轉換為低維稠密的詞向量,并輸入卷積神經網絡,提升了分類效果。文獻[14]提出用于文本分類的單層卷積神經網絡模型,將文本當作固定長度的圖像輸入到模型中,提高了文本分類效果,但并未考慮文本信息中的序列信息所帶來的影響。文獻[15]運用循環神經網絡模型(Recurrent neural network,RNN)針對文本中的序列信息提升了文本分類效果,但RNN無法解決長時依賴以及梯度消失問題。為此,研究人員對RNN模型進行了優化及改進,提出了長短期記憶網絡(LSTM)和門控循環單元神經網絡模型(GRU),并用來解決文本分類問題。文獻[16]提出Densenet網絡模型,在卷積層之間采用了密集的連接,緩解了梯度消失問題,加強了特征傳播,在文本分類任務上表現出良好的性能。在機器學習中,常用的文本分類方法有K-means算法[17]、樸素貝葉斯模型[18]和支持向量機模型[19]。在農業領域,由于缺少大規模可用的數據集,相關研究仍處于起步階段。現有研究[20-23]為深度學習在農業文本數據分類提供了參考及可行性依據。然而,農業文本分類大部分采用固定寬度的卷積核來提取文本特征,未考慮關鍵詞在農業文本分類中的重要性,在多類別水稻問答問句數據集上分類的驗證也鮮有涉及。
針對水稻問答問句稀疏性強、噪聲大、數據量大的特點,本文提出一種基于注意力機制的密集連接卷積模型文本分類方法。在CNN上下游卷積塊之間建立了一條稠密的捷徑,每個卷積塊采用不同寬度的卷積核來提取文本特征,引入農業詞典對文本數據進行分詞和詞向量轉換,然后輸入到建立的混合神經網絡模型中,從而使網絡可以自動提取水稻文本特征,并進行分類,針對一些重要參數進行優化和改進,以實現水稻問句的自動分類。
本文數據為從“中國農技推廣”APP問答社區中導出的水稻提問數據,使用Python中的正則表達式對所獲得的文本數據進行清洗和過濾,去除掉無用信息,對水稻提問數據進行人工標注,獲得水稻病蟲害、草害藥害、高產增產、儲存保鮮、栽培管理、其他共6個類別12 000條提問數據。水稻提問文本數據樣例如表1所示。

表1 水稻提問文本數據
首先對文本數據的常用標點符號進行去除,清洗和過濾無用信息。然后加載農業專用停用詞表,去除文本中的常用停用詞、中英文特殊字符等影響特征提取的噪聲。采用Python的JIEBA分詞工具包對文本數據進行分詞,由于農業文本數據具有較多的農業專用詞匯,為了提高分詞的準確度,選擇搜狗農業詞匯大全[24]作為分詞字典。預處理前后文本數據如表2所示。

表2 預處理前后文本數據
由于神經網絡不能識別自然語言文字,因此,本文采用 Word2vec[25]中SKIP-Gram[26]模型將分詞結果轉換為詞向量。模型訓練窗口設置為 5,詞向量維度設置為100,訓練并行數設置為2,迭代次數設置為25。Word2vec訓練得到每個詞的詞向量儲存到字典中,將水稻提問數據中的每個詞轉換成對應的詞向量,例如“稻瘟病”的詞向量如圖1所示。由于每個問句的長度不是完全一致,將提問數據長度設置為100,長度不足100的,在后面用0補齊,保證每一條提問數據向量長度一致,才能輸入到神經網絡中。文本預處理流程如圖2所示。
本文提出的基于注意力機制的密集連接卷積模型(Attention_DenseCNN),包括密集連接的卷積,注意力機制和Softmax分類層,模型結構如圖3所示。首先將水稻問題文本數據預處理向量化之后輸入到密集連接卷積網絡層進行特征自動提取,密集連接CNN包含多個卷積塊,每個卷積塊都包含卷積、批次標準化(Batch normalization)和激活函數ReLU,卷積塊流程如圖4所示。為了更進一步選取特征,將提取的特征輸入到注意力機制層進行權重重置及特征選擇,最后將提取的特征向量輸入到分類層。
1.4.1密集連接的CNN
針對水稻提問文本數據特征的稀疏性,通過卷積塊之間的密集連接加強文本特征的傳輸,通過特征的不斷重復學習,增強文本特征在各卷積塊之間的流動,使得模型能夠自動提取和學習文本特征。密集連接的CNN允許網絡的每一層直接連接到之前的所有層,以實現特征的重復使用,這種連接有助于提高水稻問句特征的整體利用率。同時將網絡的每一層設計的非常狹窄,即只學習很少的特征映射來減少冗余。本文采用密集連接的CNN來提取問句的高層語義特征。每一層連接到通道維度中的上一層,并作為下一層的輸入,每個層都會接收其前面所有層輸出作為其額外的輸入,傳統的卷積神經網絡模型都是采取固定的卷積核尺寸來提取特征,為了提取可變長度的文本特征,本文在每個卷積塊都采用不同寬度的卷積核提取特征,卷積塊包含卷積層、批量標準化和ReLU激活函數。卷積層主要提取水稻問句向量矩陣的特征。批量標準化可以防止梯度消失,提升學習收斂速度,縮短模型訓練時間。ReLU激活函數用來將輸入的數據做非線性映射。每個卷積塊可以形式化為
Xl=f(Wl,[X1,X2,…,Xl-1])(Wl∈R(l-1)k2w)
(1)
式中f——復合函數,包括卷積、Batch normalization和ReLU 3個步驟
l——卷積塊層數Xl——第l層特征
Wl——第l層的權重矩陣
k——卷積核個數w——窗口尺寸
比如已經得到X1和X2,分別進行卷積操作得到2個m×k的矩陣,然后進行相加得到X3。除了輸入,由于注意力機制的需要,所有特征圖的尺寸都設置成m×k。這種結構就可以使得上游卷積塊的詞或者短語可以被后續結構使用,得到大尺度的特征。
1.4.2注意力機制層
針對水稻提問文本數據長度較短,詞匯量較少,文本稀疏性等特點,本文使用注意機制來有效地利用通過密集連接卷積神經網絡得到的特征進行分類。在注意力機制層,利用注意力機制來強化關鍵詞特征在水稻提問數據中的權重,解決了文本特征稀疏性導致的關鍵詞權重較低的問題,注意力機制為每個特征向量分配不同的權重,以反映它們在問題中的作用。權重越大,語義越重要,并將影響整個問題的最終分類。該部分包含濾波器集合和尺度權重重置兩步操作。連接起來之后經過MLP得到各部分的權重αi。具體計算公式為
(2)
(3)
(4)
MLP——多層感知器函數
αi——用于輸入分類器的權重向量
1.4.3Softmax分類層
在輸出層,以注意力機制層的輸出作為輸入,并使用Softmax計算每種分類的概率,再將概率歸一化到(0,1),最后以最大概率輸出水稻提問文本數據對應的具體類別。
本文使用隨機梯度下降(SGD)對模型參數進行優化。隨機梯度下降算法是每次訓練一個樣本和類別標簽對參數進行更新,其更新公式為
(5)
式中J(φ)——目標函數
φ——參數η——學習速率
x(i)——樣本y(i)——類別標簽
本文使用交叉熵損失函數來評判當前訓練得到的概率分布與真實分布的差異性,如果該類別和樣本的類別相同就是1,否則是0,交叉熵損失函數公式為
(6)
式中M——類別數量c——類別
y——指示變量,取0或1
p——對于觀測樣本屬于類別c的預測概率
試驗軟件環境為Python 3.6.2和TensorFlow 1.13.1,服務器硬件環境為:顯卡NVIDIA Corporation Device 1e04 (rev a1),GPU:NVIDIA GeForce RTX 2080Ti。使用Keras神經網絡框架構建網絡。從建立的水稻問答語料庫中提取出水稻提問數據作為試驗數據,將水稻提問文本數據進行人工標注。分為病蟲害、草害藥害、高產增產、儲存保鮮、栽培管理、其他6個類別,共計12 000條提問數據,問題類別數據具體分布見表3。將12 000條提問數據隨機打亂順序后,按照9∶1的比例劃分為訓練集和測試集,訓練集共10 800條,測試集1 200條,訓練集用于模型訓練及調整神經網絡參數,測試集用來驗證模型效果及反饋時間。本文以精確率P、召回率R和F1值作為評價指標。

表3 水稻問題類別分布
通過Word2vec轉換的詞向量維度設置為100,問句最大長度設置為100,神經網絡的輸入就是(100×100)維的向量矩陣,模型訓練次數設置為50輪,每批次輸入64條,學習速率設置為0.01。
由1.4節可知,密集連接的卷積神經網絡擁有多個卷積塊,通過一組試驗來測試在不同數量卷積塊下模型的分類效果,設置卷積塊個數分別為3、4、5、6,精確率分別為94.3%、94.7%、95.0%、94.6%,可知當卷積塊個數為5時,模型分類效果最佳。
卷積模型在提取文本特征時,卷積核的長度與文本向量的維度相同為100,在不同卷積塊中采用不同的卷積核寬度來提取可變的文本特征。通過一組試驗來研究不同寬度的卷積核對問句分類精確率的影響。如表4所示,在5個卷積塊中,卷積核寬度分別為2、3、4、5、6時,模型的分類精確率最高。

表4 不同卷積核寬度下模型分類效果
通過一組試驗來研究卷積滑動窗的步長對Attention_DenseCNN模型影響。設置步幅分別為1、2、3、4。除了步幅,其他參數都保持不變。本文所提出的模型在卷積步幅分別為1、2、3、4時的問句分類精確率分別為95.0%、95.6%、94.2%、92.7%。在步幅增大過程中,Attention_DenseCNN對于數據集的分類精確率會在步幅為2時達到95.6%。相比于步幅為1時精確率提高了0.6個百分點,這是由于卷積滑動窗口在步幅為2時能更好地提取文本特征,表達文本信息。而在步幅為3和4時,精確率開始下降,分別為94.2%和92.7%。這是由于步幅過大,在提取特征時會丟失更多的語義信息。
首先使用密集連接卷積神經網絡(DenseCNN)、基于文本的卷積神經網絡(TextCNN)[15]、長短期記憶網絡(LSTM)[27]、門控循環單元網絡(BiGRU)[28]、基于注意力機制的長短期記憶網絡(Attention-LSTM)[29]5種神經網絡模型對水稻問句數據進行試驗。表5展示了不同深度學習模型在精確率、召回率和F1值的比較。從表5可以看出,在基本的對比試驗中,TextCNN與3個循環神經網絡的F1值相似,證明了卷積神經網絡在水稻問題分類中有很好的性能。DenseCNN獲得了最高的F1值和精確率,這是由于通過密集連接的卷積塊可以加強特征的傳遞和提取,減少特征損失,有利于最后的分類效果。基于注意力機制的LSTM相比于LSTM有更好的精確率、召回率和F1值,但略低于DenseCNN,這說明了注意力機制在訓練過程中通過權重重置,可以更好地表達特征信息。

表5 5種神經網絡模型效果對比
將注意力機制與上文提到的4種神經網絡模型相結合,得到Attention_DenseCNN模型、Attention-TextCNN模型[30]、Attention-LSTM模型[29]、Attention-BiGRU[31]模型,進行水稻問題分類試驗。表6展示了不同深度學習模型在精確率、召回率和F1值的比較。通過比較每種模型的F1值及精確率,可以發現在水稻問句文本數據集下,DenseCNN模型在訓練效果上優于TextCNN模型,這是由于在DenseCNN模型中是通過密集連接的5個卷積塊來提取特征。相比于傳統的卷積神經網絡模型在特征傳遞時只是將上一層的輸出作為本層的輸入,DenseCNN在傳遞特征時不僅接收上一層的輸出,還將接收之前所有層的輸出作為額外輸入,可以有效減少文本特征的丟失。通過密集連接的CNN,文本特征可以更好地傳遞和表達,最終提高文本分類效果。從表6可以看出,Attention_DenseCNN模型的精確率、召回率和F1值最高。其精確率為95.6%,召回率為94.3%,F1值為94.9%。F1值比Attention-TextCNN提高2.8個百分點。將加入注意力機制后的4種模型與未加入前的模型進行對比分析,可以發現,精確率分別提升了0.9、1.9、1、0.7個百分點,F1值分別提升了1、1.9、1.5、1.3個百分點。這說明注意力機制能使模型在訓練過程高度關注目標的特征信息,從而更好地識別特定目標的類別,驗證了注意力機制在問句分類任務中的有效性。

表6 不同模型下問句分類效果對比
圖5和圖6分別展示了8種神經網絡模型的F1值趨勢。Attention_DenseCNN的收斂時間明顯提前,并且每個模型在訓練過程中不會出現大的振蕩。另外,Attention_DenseCNN在前20個輪次大致可以收斂,在隨后的訓練中F1值保持最高。
表7展示了使用Attention_DenseCNN模型對水稻提問文本數據,在草害藥害、高產增產、病蟲害、儲存保鮮、栽培管理、其他共6個類別分類的精確率、召回率及F1值。Attention_DenseCNN模型分類平均精確率達到了95.6%,召回率達到了94.3%,F1值達到了94.9%,體現了良好的分類效果。本文提出模型在病蟲害類別中精確率和F1值明顯高于其他5個類別,達到了99.1%和99%,這是由于深度學習模型需要大量的數據支撐,病蟲害作為水稻種植過程中經常遇到的問題,其文本數據占到整體文本數據的1/3,因此分類精確率及F1值最高,而在儲存保鮮類別中精確率及F1值最低,說明數據量過小,會影響模型的分類效果。

表7 Attention_DenseCNN模型分類結果
表8展示了基于注意力機制的4種神經網絡模型在1 200條測試集上的響應時間和精確率,達到了對水稻問句快速分類的要求,Attention-TextCNN的響應時間最短,這是由于Attention-TextCNN模型結構簡單,訓練層數和模型參數較少。本文提出的Attention_DenseCNN模型在5 s可以完成對測試集1 200條水稻問句進行精準分類,精確率達到了最高(94.7%),在響應時間相差不大的情況下,本文提出的模型在精確率方面具有更好的效果。

表8 4種網絡模型的響應時間和精確率
(1)采用Word2vec和農業詞匯專業詞典對文本進行向量化,有效解決了水稻問句文本的稀疏性和高維性。使用基于注意力機制的密集連接卷積神經網絡構建水稻問答系統問句自動分類模型,可以快速、準確地實現水稻問句在6個類別上的自動分類,避免了淺層學習模型耗時、分類效果不佳的問題,模型精確率達到95.6%,F1值達到94.9%,與其他7類文本分類模型相比優勢明顯。
(2)使用注意力機制對文本關鍵詞特征進行權重重置,強化了關鍵詞在水稻問句中的作用,切實解決了水稻問句特征不足的問題,提出的Attention_DenseCNN相比DenseCNN,水稻問句文本分類精確率和F1值均提高了1.9個百分點。