趙鵬飛 趙春江,2 吳華瑞 王 維
(1.山西農業大學工學院, 太谷 030801; 2.國家農業信息化工程技術研究中心, 北京 100097;3.北京農業信息技術研究中心, 北京 100097)
隨著農業信息化技術的快速發展,農戶可通過農技服務平臺進行在線問答咨詢。面對海量的問題數據,快速而準確地定位關鍵詞、挖掘深層的語義關系是農業智能問答系統亟需解決的問題[1]。農業命名實體識別作為一種智能化信息抽取方法,其主要任務是從非結構化的問答數據中識別不同類型的實體,如農作物病蟲害、作物品種、農藥名稱等,這是構建智能問答系統的關鍵技術環節,是農業文本信息挖掘領域的熱點研究方向。
在農業領域,許多研究者利用機器學習進行實體識別研究。文獻[2]提出基于條件隨機場的識別方法,通過添加詞性、左右指界詞等模板特征,對農作物、病蟲害及農藥3類實體進行識別。文獻[3]采用BIO和BMES兩種實體標注方式,基于CRF模型對數據集中農作物、家禽、病蟲害等實體進行識別。文獻[4]將農業本體概念作為子特征加入CRF模型中,對涉農商品名稱進行抽取和類別標注。但是,傳統的基于機器學習的方法依賴手工設計的特征模板,在提高模型性能的同時也導致整個模型的魯棒性和泛化能力下降[5]。
農業實體構詞復雜、種類眾多,導致農業領域實體識別研究更具有挑戰性,主要體現在:由于缺乏規范的農業詞典,采用分詞工具對農業語料進行分詞出現分詞錯誤的現象,影響了模型性能;同一實體在文本中所處位置不同,以單句為處理單元的識別方法無法聚焦全文語境,存在實體標注不一致問題。
隨著深度學習算法的改進,網絡模型能夠自動學習到更深層次的特征信息,在很多領域實體識別任務取得了理想的效果[6-12]。
近年來,注意力機制在自然語言處理領域得到了廣泛的應用[13-15]。文獻[16]基于BiLSTM-CRF框架,通過添加注意力機制學習有效的字符特征向量。文獻[17]提出基于雙向注意機制的循環神經網絡(Recurrent neural network,RNN)模型,該模型能更好地獲取標簽之間的關系。文獻[18]提出了多注意力模型,在阿拉伯語實體識別任務中取得較好的結果。文獻[19]利用卷積神經網絡提取漢字分解后的特征信息,基于自注意力機制識別醫學電子病歷的相關實體。
上述基于深度學習的方法為農業領域開展命名實體識別研究提供了參考依據,但在農業文本向量化表示方面并未提出有效的方法來獲取字符之間豐富的語義特征,并且相關模型在農業領域數據集上沒有進行驗證,不足以說明農業領域命名實體識別的相關問題。
本文在農業領域命名實體識別任務中,基于深度學習方法,在BiLSTM-CRF網絡模型基礎上,有針對性地引入大量無標注農業語料,通過預訓練方式對農業實體字符分布式表示進行擴充,并引入文檔級注意力機制重點關注實體關鍵字信息,通過余弦距離相似度得分獲取文本中實體之間的相關系數,進一步對模型結構和訓練參數進行優化和改進,構建基于注意力機制的Att-BiLSTM-CRF混合網絡模型,以期實現農業文本命名實體的精準識別。
農業命名實體識別缺少公開的語料數據集,本文通過數據采集、數據預處理、數據標注3個步驟,建立農業領域實體識別語料庫。本文的語料數據主要通過爬蟲框架,抓取各大農業網站(中國農業信息網、中國農業知識網、中國作物種質資源信息網、國家農業科學數據中心等)關于農作物病蟲害和農作物品種的文本語料。其中,標注語料庫作為實驗數據集,包含4 604篇農業文本,共33 096個句子;未標注語料庫作為預訓練數據集,包含26 025條語料,共300萬個中文字符。
通過爬蟲抓取的語料數據,包含大量的網站標簽、鏈接、特殊字符等非文本的結構數據,不利于數據標注。通過Python正則表達式、字符格式規范化等操作,刪除非文本數據,獲取規范化的農業語料庫。
本文采用人工標注的方式進行語料庫的標注,語料庫包含實體共26 309個,其中,病害名稱4 129個,蟲害名稱4 275個、農藥名稱11 952個、農作物品種名稱5 953個,不同類型實體統計如表1所示。使用BIEO標記方案表示命名實體,B表示實體名稱的開始,I和E分別表示實體的內部和實體的結束標記,O表示語料中的非實體。語料庫注釋示例如圖1所示。為更好地識別實體所屬類別,將類別信息添加在實體標簽上,實體類型描述如下:病害名稱實體-Disease、蟲害名稱實體-Pest、農藥名稱實體-Pesticide、農作物品種名稱實體-Crop。其中,B-Disease和B-Crop分別表示病害和農作物品種的命名實體的開始。

表1 語料庫統計信息Tab.1 Corpus statistics
本文模型包含字嵌入層、BiLSTM層、Attention層和CRF層4部分,模型結構如圖2所示。
2.1.1預處理
在英文NER任務中,由于每個單詞被空格分隔,很多研究將詞向量與字符向量拼接作為模型輸入,提高模型的性能。與英文單詞不同,中文詞語之間沒有明顯的分隔標記,而且詞語具有較強的領域性。因此,為更好地處理中文實體識別任務,多數方法都將分詞作為語料處理的基本步驟。但是,現有分詞技術不能準確地進行切分,會產生各種各樣的錯誤[20]。
例如,病害實體“水稻細菌性褐條病”分詞結果為“水稻/細菌性/褐/條/病”,農作物品種實體“兩優培九”分詞結果為“兩/優/培九”。這些實體被錯誤地拆分,從而導致模型不能正確獲取實體的特征表示,基于字的實體識別可以有效地避免這類問題。
本文使用字向量作為模型初始輸入,采用預訓練方式,以字為單位進行切割,獲取特征表示,緩解分詞準確度對性能的影響。
2.1.2字向量表示
農業文本數據需進行文本向量化,將相應字符映射為一定維度的實數向量,才能被計算機處理。本文采用Word2vec的CBOW模型[21-22],在模型架構基礎上,針對字向量維度,進一步優化和驗證,通過對這些無標注的語料進行無監督訓練,得到相應的分布式表示,最終生成特定維度的字向量,構建字向量表。CBOW模型的框架如圖3所示,主要有輸入層、映射層和輸出層3層。
在CBOW模型中,目標字由上下文推測得到,已知當前字wm,利用周圍2n(n為窗口尺寸)個字wm-n、wm-n+1、…、wm+n-1、wm+n預測wm當前字出現的概率。以病害實體“小麥霜霉病”為例,通過字“霜”的上下文“小”、“麥”、“霉”、“病”4個字,來預測所有字出現的概率,其中目標字“霜”出現的概率最大。
在預訓練過程中,CBOW模型字級窗口設置為2,構建字向量表,每個字對應唯一的向量表示。本文驗證了不同維度字向量對模型性能造成的影響,維度設置為50、100、150和200,經過實驗對比發現,字向量維度設置為100時模型的性能最優。因此,通過預訓練方式,獲取農業文本100維度的字向量特征表示,適用于農業領域命名實體識別。
LSTM是一種特殊的循環網絡模型,克服了RNN模型在訓練過程存在的梯度爆炸問題[23]。農業實體的構詞方式復雜多樣,針對目標實體的識別,需要考慮實體不同位置的上下文信息,來獲取更深層次的特征表示。LSTM是單向的循環神經網絡,只能獲取目標詞過去的文本信息。例如,病害實體“玉米根腐病”,LSTM只能訪問“腐”的前一個字“根”的特征信息,不能預測下一個字“病”的出現。目標詞的上下文信息對實體識別具有不同程度的影響,為了準確識別出農業命名實體,構建了雙向LSTM(BiLSTM)網絡模型,進行正向和反向2個不同方向的文本表示,充分獲取目標詞過去和將來的特征信息。
LSTM網絡的主要結構可以形式化地表示為
it=σ(Wiht-1+Uixt+bi)
(1)
ft=σ(Wfht-1+Ufxt+bf)
(2)
(3)
(4)
ot=σ(Woht-1+Uoxt+bo)
(5)
ht=ot⊙tanh(ct)
(6)
式中σ——sigmod激活函數
tanh——雙曲正切激活函數
it、ft、ot、ct——在t時刻的輸入門、忘記門、輸出門、記憶細胞
Ui、Uf、Uc、Uo、Wi、Wf、Wo、Wc——不同控制門對應的權重矩陣
bi、bf、bo、bc——偏置向量
xt——t時刻的輸入向量
ht——t時刻的輸出結果
⊙——點乘運算符
字嵌入層的向量x,將作為t時刻BiLSTM層的輸入,通過正向LSTM輸出特征序列和反向輸出序列,得到隱藏層拼接的向量,經過tanh激活函數進行加權得到最終的輸出結果ht,將作為Attention層的輸入。
在命名實體識別任務中,由于中文構詞方式靈活多變,同一實體具有多種表述方式,實體在文本不同位置可能多次出現。以單句為訓練單元的識別模型,關注實體在該句的上下文表示,忽略全文的語境信息,容易造成同一文本實體標注不一致的問題。
例如,水稻稻瘟病的描述如下:水稻又見“【火燒瘟】”,早稻警惕【稻瘟病】流行,一定要早做預防。當前江西早稻,……禾苗都可以點火燒了,名符其實的“【火燒瘟】”。【水稻稻瘟病】又稱【稻熱病】、【火燒瘟】,癥狀表現為中央呈灰白色病斑,邊緣呈顯著褐色,且發病部位在潮濕的環境下會產生灰色的霉狀物。
文本中,水稻稻瘟病又稱火燒瘟,火燒瘟作為病害實體,在文本中不同句子的不同位置多次出現。以句子為處理單元的模型,在脫離上下文語境的情況下,對【火燒瘟】病害實體出現錯標或者漏標的現象。為解決實體標注不一致的問題,通常采用基于規則制定的方法,但是特定領域的規則制定較為復雜,需要較強的領域知識,不同的領域規則不具有通用性。
針對農業文本中實體命名方式多樣化、實體分布不均勻的特點,在注意力模型基本架構上進行擴展,引入文檔級全局信息,并增加余弦距離得分的相似性評估,對處于不同位置的同一實體重點關注。基于注意力的學習模型,能夠忽略文本中無關的信息,關注實體關鍵信息,模型以整篇文本作為訓練單元,考慮實體上下文的語境信息,緩解實體標注不一致問題。
本文用D=(S1,S2,…,Sd)表示文檔包含d個句子,每個句子S=(w1,w2,…,wm)包含m個字,文檔中包含字的總數是N。對于文檔中的實體,通過注意矩陣A處理BiLSTM層輸出的特征序列,來計算當前目標字與文檔中所有字之間的相關性,獲取目標字wi基于文檔層面的全局特征表示gi,計算公式為
(7)
其中
(8)
(9)
式中Ai,j——當前字wi與文檔中字wj注意力權重
hj——BiLSTM層輸出
score(wi,wj)——采用余弦距離判定的字wi與字wj相似性得分
Wa——訓練過程中學習到的參數
最后,目標字wi在文檔級注意力層的輸出為ci,通過tanh函數來獲取置信度ei,計算公式為
ci=tanh(Wg[gi,hi])
(10)
ei=tanh(Weci)
(11)
式中Wg、We——訓練時學習到的參數矩陣
在CRF層,采用狀態轉換矩陣來預測當前標簽,獲得全局最優的標記序列[24]。設定P為Attention層的輸出矩陣,維度為m×k,m表示輸入句子包含字的數量,k表示標簽集合的元素數。對于輸入文檔D,對應的輸出標簽序列y=(y1,y2,…,yn) 的概率為
(12)
式中X——輸入的文本序列
Ayi,yi+1——從標簽yi轉移到標簽yi+1的分數,Ayi,yi+1的值越大表示標簽i轉移到標簽j的可能性越大
Pi,yi——第i個字被預測為第yi個標簽的分數
然后,利用Softmax函數,得到序列y的條件概率。最后,使用Viterbi[25]算法將得分最高的序列y*作為模型最終的標注結果。
模型的參數配置如表2所示,參數通過反復實驗確定的,字向量維度設置為100。模型使用雙向的LSTM網絡,隱藏層維度設置為128。為減輕模型過擬合問題,引入Dropout機制[26],Dropout的值直接影響到模型性能,設置為0.5。選取ADAM[27]優化算法,學習率為0.002。模型訓練批處理參數為16,迭代次數設置為50。

表2 參數配置Tab.2 Parameter setting
與其他實體識別方法相似,采用準確率P、召回率R、F值作為實驗的評價指標[28]。
在不依賴人工設計特征的情況下,通過調整不同的模型參數,在1.3節構建的標注數據集上驗證模型的識別性能。語料庫中訓練集、測試集、驗證集按7∶2∶1的比例進行分配,數據集之間無重疊,因此測試數據集的實驗結果可作為實體識別效果的評價指標。
本文分別以詞向量和字向量作為Att-BiLSTM-CRF模型的初始輸入,驗證不同嵌入向量對模型性能的影響,對比結果如表3所示。將字向量作為模型的輸入,模型識別準確率P為93.48%,相較于詞向量作為模型輸入,準確率提升了2.96個百分點。分析結果得知,基于詞向量的輸入,實體被錯誤拆分,導致這些復雜的實體沒有被正確識別,例如,水稻品種“廣8優郁香”被錯誤地拆分為“廣/8/優郁/香/”。接著,驗證了不同字向量維度對模型性能的影響。字向量維度設置為50、100、150、200,模型準確率P分別為91.19%、93.48%、92.15%、91.83%;召回率R分別為89.5%、90.6%、90.08%、90.21%;F值分別為90.29%、92.01%、91.04%、91.00%。從實驗結果看出,適當增加字向量維度,可以獲取質量更好的字級分布式表示,字向量維度為100時,模型性能達到最高。隨著維度越來越大,訓練成本越來越高,模型性能很難得到提升,甚至下降。針對農業實體,字向量維度不是越大越好,在一定范圍內存在局部最優值。

表3 不同嵌入向量實驗結果對比Tab.3 Results of different embedding %
采用字向量維度100,并在BiLSTM-CRF模型框架上增加句子級和文檔級的注意層,并對模型性能進行了評估。結果如表4所示。句子級的方法,模型的準確率P為91.23%,召回率R為89.24%,F值為90.23%。分析結果發現,同一文本中,部分農藥實體“農抗120/Pesticide”,被錯誤標記為農作物品種實體“農抗120/Crop”。這種標記不一致的現象,是由于“農抗120”與大多數農作物品種實體構詞方式相似,都是“詞+數字”的方式,在識別過程中,雖然句子級注意力獲取了該實體在句中特征信息,但是并沒有考慮全文的語境,從而導致上述錯誤的判斷。

表4 不同Attention機制實驗結果對比
與基于句子級的方法相比,文檔級方法模型的準確率P、召回率R、F值分別提高了2.25、1.36、1.78個百分點。結果表明,文檔級方法通過獲取文檔中字之間的相關信息,通過余弦函數計算文檔中目標字與其他字的相似度,調整目標字的權重,在緩解上述討論的標記不一致問題的同時,有效地提高了模型性能。
為了驗證本文提出的基于Att-BiLSTM-CRF在農業語料上的識別性能,在不同的模型上進行對比實驗,模型包括:LSTM[29]、LSTM-CRF[30]、BiLSTM-CRF[31]以及本文提出的基于文檔級的Att-BiLSTM-CRF,實驗結果如表5所示。在準確率P、F值兩方面,對比了各模型針對4類實體的識別性能,結果如圖4所示。

表5 不同模型的實驗結果對比
由表5可知,LSTM模型通過隱藏層獲取過去的序列信息,結構比較單一,模型準確率為80.36%。LSTM-CRF模型相比于LSTM模型,通過添加CRF層,利用實體間相鄰的標簽動態規劃最優的序列標注,模型準確率為83.95%。為了獲得輸入序列豐富的上下文信息,基于BiLSTM-CRF模型框架,模型準確率為89.89%,與LSTM-CRF模型相比,提升了5.94個百分點。基于文檔級注意力的Att-BiLSTM-CRF模型,通過添加注意力層,獲取文本中實體間的相似系數,與其他3個模型相比,準確率P和F值最高,分別為93.48%和92.01%。
圖4展示了4種模型對于農藥、蟲害、農作物品種以及病害4類實體的識別率P和F值,4種模型對病害和農藥實體識別準確率較高,蟲害和農作物品種較低。LSTM模型結構單一,對于復雜的蟲害和農作物品種實體,模型不能獲取豐富的特征信息,識別率為65.92%和71.64%,F值為71.33%和72.48%。LSTM-CRF模型對蟲害實體識別率為73.18%,農作物品種實體識別率為76.59%,相較于LSTM模型分別提高了7.26、4.95個百分點。
分析得出,病害和農藥具有較規則的后綴組成詞,例如,病害的“病”、農藥的“乳油”等,這些明顯的字特征信息提高了這類實體識別的準確率。而蟲害和農作物的構詞比較復雜,例如“數字+詞”、“數字+字母”等方式,因此這類實體需要提升模型的復雜性,來獲取更豐富的特征信息。
BiLSTM-CRF模型對農藥和病害實體識別率相對較高,為94.35%、92.70%,對蟲害和農作物兩類實體識別率為83.66%、85.47%,相較于LSTM-CRF模型,分別提升了10.48、8.88個百分點。模型通過雙向LSTM隱藏層提取過去和未來的序列信息,對復雜、長度較大的實體識別率有較大提升。但是,模型依然存在實體標簽不一致的現象。
本文Att-BiLSTM-CRF模型對農藥實體識別率達到97.58%,蟲害實體識別率為91.15%,對于構詞更復雜的農作物品種實體識別率達到最高的87.26%,F值為84.92%。進一步驗證了添加文檔級的注意力機制,結合實體所在文本的語境信息,獲取實體關注度能夠提高農業實體的識別效果。
實驗結果表明,本文提出的Att-BiLSTM-CRF模型不使用任何字典或外部注解資源,在訓練過程中動態地獲取實體間的相似關系,能夠有效地識別農業復雜實體,F值達到92.01%。
為了驗證語料集的規模對模型性能的影響,本文新增了3個語料庫,包含實體數量分別為9 906、15 020、20 618,新增的語料庫同樣按照7∶2∶1的比例進行分配,數據集之間無重疊,實驗結果如下:LSTM模型由于結構比較單一,在4種規模語料庫準確率較低,分別為64.52%、72.85%、83.93%、85.11%。LSTM-CRF模型通過添加CRF層,獲取標簽轉移的最優概率,與LSTM相比,模型準確率分別提高了1.40、2.03、0.43、1.57個百分點。BiLSTM-CRF和Att-BiLSTM-CRF在語料集較小的情況下,模型達到較好的識別效果。隨著語料集規模的擴大,融入注意力機制的Att-BiLSTM-CRF模型,在4種規模語料庫識別準確率均達到最高,分別為85.11%、86.68%、90.29%、93.48%。
最后,本文通過中國農技推廣信息平臺,在農技問答板塊,抽取了相應的農戶問答文本數據,應用Att-BiLSTM-CRF模型對文本數據進行了實體識別,結果如表6所示。

表6 問答數據識別結果示例Tab.6 Examples of Q&A data recognition results
(1)針對農業領域命名實體識別中實體識別類別眾多、實體類型組成復雜,造成分詞不準確等問題,提出基于注意力機制的Att-BiLSTM-CRF神經網絡模型方法,提升了識別性能,F值為92.01%。
(2)通過預訓練的方法獲取農業實體字級的分布式表示,緩解分詞錯誤造成的性能影響。通過多種向量維度的實驗,證明基于字向量的識別方法適用于農業領域NER任務,字向量維度設置為100,模型準確率P達到93.48%,召回率為90.60%。
(3)基于文檔級的注意力機制獲取實體間的相似度,可確保農業實體標簽的一致性,避免錯標或者漏標的情況,提高了模型識別性能。