費凡,楊林楠
(云南農業大學大數據學院,昆明 650201)
隨著人工智能技術不斷涌入各個行業,農業領域的服務平臺及電商產業也在不斷升級。在每天呈幾何級數增長的農業文本數據中,高效且無誤地找出所需的實體信息以及解析出更復雜的語義知識都是在實現智慧農業道路上所必須面臨的挑戰。命名實體識別屬于自然語言處理領域中基礎的信息技術,可以看作是序列標注的一種特殊形式[1],在此主要解決的問題是從海量的非結構化農業文本數據中識別出專有的實體及其類型,常見的實體類型有農作物、病害、蟲害等。這為農技服務平臺問答系統的實現搭建了基礎,也為農業領域中的信息抽取和挖掘研究明確了方向[2]。
在命名實體識別的研究道路中,最初是采用規則和字典匹配的方法。例如Liu等[3]通過設計和調整最佳模板來識別數字和時間表達式。字典匹配方法是通過字典中內置的實體從目標序列中提取所有匹配的字符串。這些方法可能會在某些特定領域取得成功,但是都未能解決OOV(Out-of-vocabulary)問題[4]。另外,這兩種方法都嚴重依賴于耗時的手工特性。后來,統計機器學習的方法逐步興起,CRF結構[5]成為命名實體識別最常用的方法。Li等[6]和Malarkodi等[7]使用CRF結構在其自構建的注釋語料庫上識別農業命名實體,如作物、疾病和農藥等,通過選擇不同的特征組合得到合理的試驗結果。統計的機器學習方法雖然有效地提高了中文命名實體識別的精度,但是其仍然依賴于特征工程,導致工序十分耗時和繁瑣[8]。
基于深度學習的模型由于其不需要手工設計特征的端到端學習[9]而被廣泛應用于命名實體識別。其中,代表性的網絡模型就是雙向長短期記憶(Bidirectional Long Short-Term Memory,BiLSTM)神經網絡[10]。Huang等[11]提出了第一個用于識別命名實體的BiLSTM-CRF機制。此外,Espejo-Garcia等[12]首次提出了一種基于BiLSTM和Softmax的深度學習架構,用來開發一個端到端的序列標簽植物檢疫規則。研究表明,基于BiLSTM的模型擅長捕獲句子的局部上下文特征,但對于更長距離的全局上下文特征的提取能力微弱,在捕獲遠程依賴關系方面受到限制。因此,最近的研究使用了預訓練語言模型,如基于Transformer的雙向編碼器表示模型BERT[13,14],以此動態生成更長距離的上下文嵌入表示。試驗結果表明,BERT預訓練階段在大規模的語料庫和較高的硬件性能支持下,可以顯著提高許多自然語言處理任務的性能。近年來,深度學習與對抗訓練機制[15]相結合的方式在自然語言處理領域開始流行,它作為一種正則化方法成為文本研究的另一條道路。Miyato等[16]利用深度學習技術,首次提出在詞向量層添加擾動,進行半監督文本分類任務。Chen等[17]將對抗訓練應用到實體識別和關系抽取的聯合模型中,取得了跨語言、多數據集的優秀效果。Zhou等[18]則在詞嵌入層添加擾動,提升了低資源下命名實體識別模型的泛化能力。
由于農業領域的命名實體識別語料庫大多尚未公開[19,20],因此本研究利用Scrapy框架爬取了中國農業科學院版權下的中國作物種質資源網的關于農作物病蟲害的相關知識,經過正則表達式、字符格式規范化等操作去除了不必要的字符、網址等非文本數據。經統計,本研究爬取并清洗的文字共800余篇農業文本,5 600個句子。接下來就是標注標簽工作,由于是自己定義的標簽類別,所以需要人工手動標注,而實體的標注需要大量特定領域的知識,從而又增加了注釋的難度。另外,本研究通過查閱資料和咨詢專家的方法,選擇校驗農業領域的專有名稱實體,包括了農作物和疾病。基于現有研究本文進一步將疾病類別劃分為更細粒度的實體,分別為“病害”和“蟲害”。此外與農作物相關的一些實體,比如農藥和肥料以及病原也被考慮在內。采取BMES的實體標注方式,B代表實體名稱的開始位置,M代表實體名稱的中間位置,E代表實體名稱結束位置,S代表只有單個字的實體名稱,O代表文本中的非實體。后面緊跟的實體類別信息分別用以下英文來表示:CROP(農作物)、DISEASE(病害)、PEST(蟲害)、AC(農藥)、FERTILIZER(肥料)、MICROBE(病原)。部分語料庫標記示例如圖1所示。

圖1 語料庫標記示例
另外,針對數據集中存在的錯標現象,選取實體在數據集中標記最多的類別作為真實類別,將錯標實體進行矯正,針對存在的漏標現象對實體進行文本匹配,對漏標實體進行標記,以此達到降低數據噪聲、優化訓練的目的。為了更好地捕捉上下文信息以及預訓練語言模型的輸入序列長度限制問題,將長文本按照512個字符長度進行切分,同時為保證句子的完整性而不喪失上下文語義信息,以句號作為切分符,對長度為512的子句向前索引進行截斷,剩下句子加入到下一個序列中去。
經統計,最終得到的標記實體數目共16 048個,其中農作物名稱6 287個,病害名稱2 176個,蟲害名稱1 538個,農藥名稱3 514個,肥料名稱1 425個,病原名稱1 108個,為方便后續試驗,將所有類別數據按照7∶2∶1的比例劃分為訓練集、測試集以及驗證集,具體詳情如圖2所示。

圖2 農業語料庫實體類別的分布
本研究總體模型架構(BERT-Adv-BiGRUCRF)的處理流程是:首先以單個字符作為輸入單元,將BERT預訓練語言模型作為模型嵌入層,接著對每個嵌入向量進行擾動,將得到的對抗樣本radv和嵌入向量T一同輸入BiGRU網絡,最后連接CRF架構優化輸出序列,最終得到所需的實體及其類別標簽。整體模型架構如圖3所示。

圖3 總體模型框架
由Transformer組成的雙向編碼器表示的BERT,是一種用于預訓練的無監督和深度的語言表示模型。為了準確地表示與上下文相關的語義信息,需要調用模型的接口,以獲取語料庫中每個漢字的嵌入表示。BERT采用深層雙向Transformer編碼器作為模型的主要結構,它主要引入了自注意機制,并利用了卷積神經網絡的殘差機制使模型的訓練速度更快、表達能力更強。同時,摒棄了循環神經網絡(Recurrent Neural Network,RNN)的循環結構,BERT模型的整體結構如圖4所示。

圖4 BERT模型
En是單詞的編碼表示,Tn是經過訓練后的詞向量。該模型的工作原理是利用Transformer結構構造多層雙向編碼器網絡,一次性讀取整個文本序列,使每一層都可以集成上下文信息。模型的輸入采用嵌入加法方法,通過添加詞向量(Token Embedding)、句向量(Segment Embedding)和位置量(Position Embedding)這3個向量實現了預訓練和預測下一個句子的目的,組成結構如圖5所示。

圖5 BERT模型輸入
在中文農業語料的文本處理中,不同位置的字符或詞語具有不同的語義,Transformer表明標簽序列中嵌入的信息為其相對位置或絕對位置信息,計算公式如下。

式中,Ppos是單詞在文本中的位置,i表示維數,dmodel是編碼向量的維數。利用余弦函數對奇數位置進行編碼,偶數位置也用一個正弦函數進行編碼。
為了更好地捕捉詞級和句級信息,采用掩碼語言模型和下一句預測(Next Sentence Prediction,NSP)2個任務對BERT預訓練語言模型進行聯合訓練。掩碼語言模型類似于完形填空,隨機屏蔽掉語料庫中15%的單詞,用[mask]形式來標記,接著要求BERT模型正確預測被屏蔽的單詞。訓練中采用的具體策略是,對于這15%的單詞,其中只有80%的單詞被[mask]替換,10%的單詞被隨機替換為其他單詞,剩余10%維持不變。NSP任務是通過訓練模型來理解句子之間的關系,即判斷下一個句子是否是前一個句子的下一個句子。具體方法是從文本語料庫中隨機選擇50%的正確句子對,并從文本語料庫中隨機選擇剩下50%的句子對來判斷句子對的正確性。掩碼語言模型的詞匯處理和下一句預測的句子處理是聯合訓練的,確保每個單詞的向量都能代表全局信息,使模型表達語義更加準確充分,能夠描述字符級、詞級、句子級甚至句子之間的關系,從而提高整體模型的泛化能力。
門控循環單元(GRU)[21]是長短期記憶神經網絡(LSTM)的一種變體,LSTM網絡包括遺忘門、輸入門和輸出門。在傳統遞歸神經網路(RNN)訓練過程中,常常出現梯度消失或爆炸問題,LSTM僅在一定程度上解決了梯度消失問題,并且計算耗時。GRU結構包括了更新門和重置門,它是將LSTM中的遺忘門和輸入門合并為更新門。因此,GRU不僅具有LSTM的優勢,而且簡化了其網絡結構,可以有效地進行特征提取,其網絡結構如圖6所示。

圖6 GRU結構單元
xt
在GRU網絡結構中,更新門為z,重置門為r,更新門zt是計算需要將多少前一隱藏層的序列信息傳輸到當前隱藏狀態。假設zt取值[0,1],則當值接近于1時表明需要傳遞,而當值接近于0時表明需要忽略信息。重置門rt的計算公式與更新門原理相似,但權重矩陣不同,zt和rt的計算公式見(3)和(4)。首先,在t時刻輸入的序列數據xt,之前時刻隱藏層的狀態ht-1,以及相應的權重分別被相乘,并添加到σ函數中。在zt和rt計算完成后,可以計算出在t時刻需要記憶的內容。其次,利用重置門確定t-1處序列信息的隱藏狀態,在時刻t需要被忽略的信息,輸入rt、ht和xt,并使用tanh函數計算候選隱藏狀態。最后,將當前單位保留的序列信息轉移到下一單位,即是在t時刻zt和??的乘積,??表示隱藏單元ht需要保留的序列信息,(1-zt)和ht的乘積則表示需要多少信息,詳細計算公式如下所示。

式中,xt表示t時刻序列信息的輸入,?t-1表示前一隱藏層的狀態,?t表示t時刻的隱藏狀態,w為權重矩陣,wz為更新門權重矩陣,wr為重置門權重矩陣;σ為sigmoid非線性變換函數,tanh為激活函數,??為候選隱藏狀態。
從GRU單元的工作原理來看,它可以丟棄一些無用的信息并且模型的結構簡單,從而降低了計算的復雜度。然而,簡單的GRU并不能充分利用文本的上下文信息。因此,本研究設計添加后向GRU來學習后向語義,GRU前向和后向神經網絡一起提取序列信息的關鍵特征,即BiGRU網絡模型,如圖7所示。

圖7 BiGRU網絡結構

命名實體識別問題可以看作是一個序列標記問題,BiGRU層輸出隱藏狀態上下文特征向量h,表示為h={h1,h2,…,hn},這個向量只考慮了數據中的上下文信息,而不考慮標簽之間的依賴關系。CRF是一種基于EM模型和HMM模型提出的序列標記算法,通過考慮標簽序列的全局信息,可以解決標簽偏差問題,并更好地預測標簽。命名實體識別的CRF模型是使用輸入句子中的單詞序列作為觀察序列,標注過程是根據已知的單詞序列推斷出最有可能的標簽序列。
因此,本研究添加了1個CRF層來對全局最優序列進行標記,并將隱藏狀態h={h1,h2,…,hn}轉換為最優標簽序列y={y1,y2,…,yn}。CRF的計算原理:首先對于指定的文本輸入序列x={x1,x2,…,xn},計算每個位置的得分,如公式(10)所示。其次,通過Softmax函數計算歸一化序列y的概率,如公式(11)所示。最后,使用維特比算法計算得分最高的標簽序列,如公式(12)所示。

式中,Ayt-1,yt代表轉移矩陣,表示從標簽yt-1到標簽yt的轉移概率,Wt,yt代表發射矩陣,表示從詞xt得到標簽yt的發射概率,T為序列長度,score(H,y)表示輸入取值為H的條件下,輸出標簽序列取值為y的得分函數。y′∈Y(?)為所有可能標簽序列表示歸一化后得到的關于輸出序列y的概率分布。y*表示解碼后得到的最大分數的輸出序列。
對抗訓練就是在原始輸入樣本中添加一些擾動,雖然變化不大,但是很容易造成分類錯誤,然后訓練網絡來適應這些變化,使得對擾動樣本更具魯棒性,以此提高模型的泛化能力。對抗訓練的數學原理可以概括為如下公式。

它可以看成由2個部分組成,分別是內部損失函數的最大化以及外部經驗風險的最小化。前者目的是尋找最壞情況下的擾動,其中radv表示在輸入樣本中添加的擾動,Ω表示擾動的范圍空間,L表示損失函數,θ表示模型參數,x表示輸入樣本,y表示樣本的標簽。后者目的是基于對抗方式的基礎上,尋找損失最小的模型參數,使得模型具有一定的魯棒性,其中,D表示輸入樣本的空間分布。
關于設計合適的擾動,Miyato等[22]提出了FGSM和FGM算法,思路都是讓擾動的方向沿著損失增大的方向,也即梯度提升的方向。它們的區別在于采用歸一化方法不同,FGSM是通過Sgn函數對梯度采取max歸一化:

其中,?為常數,通常設為0.25。?x(L(x,y;θ))表示損失函數L對于輸入x的梯度,Sgn為符號函數,即如果梯度上的某個維度的值為正,則為1,如果為負,則為0。FGM則是采取L2歸一化:

式中,g為梯度,||g||2表示梯度的L2范數,即用L2范數做了1個scale,從公式(15)來看,L2歸一化更加保留了梯度的方向,而max歸一化不一定和原始梯度的方向相同。當然它們都有1個共同的前提,就是損失函數L必須是線性或至少是局部線性的,以此保證梯度提升的方向是最優的方向。
選用FGM對抗訓練算法,在模型訓練過程中,直接對由BERT模型得到的每個嵌入向量組成的參數矩陣進行擾動,并且是將1個batch數據當成整體,統一進行歸一化計算,因為本來范數的計算也只是起到scale的作用,所以這樣做影響很大,還能實現更加高效的調用。
模型的參數配置都經過了反復的試驗證明。采用ADAM優化算法,模型訓練的批處理參數為24,迭代次數設定為8,學習率為2e-5,還引入了dropout機制以減輕模型的過擬合問題,dropout的值對模型的性能有直觀的影響,設定為0.5。模型訓練最大序列長度為128,評估最大序列長度為512。此外,試驗的運行環境配置如表1所示。

表1 試驗環境配置
在不依靠人工設計特征的情況下,通過不斷地調整模型參數,在自構建的農業注釋語料庫上測試模型的識別效果。語料庫中的訓練集、測試集、驗證集的劃分比例合理,三者之間無重疊部分,因此,將測試集的輸出結果作為實體識別效果的評價指標是恰當的。農業領域中的實體抽取和類別標注的試驗結果常采用以下3個評價指標,分別是準確率、召回率和F值。其中,準確率是指正確識別命名實體的識別率,召回率是指測試集中正確識別命名實體的識別率,F值是以上兩者的調和平均值,這是模型的綜合評價指標。
為了表明本研究提出的BERT-Adv-BiGRUCRF模型在農業領域命名實體識別的表現效果,在其他模型上進行對比和消融試驗,其他模型包括IDCNN-CRF、BiLSTM-CRF、BiGRU-CRF、BERTSoftmax、BERT-CRF、BERT-BiLSTM-CRF、BERTBiGRU-CRF、ERNIE-BiGRU-CRF和RoBERTa-WWM-BiGRU-CRF,其對比識別結果如表2所示。

表2 不同模型試驗結果對比(單位:%)
由表2可知,IDCNN-CRF、BiLSTM-CRF和BiGRU-CRF模型通過隱藏層獲取了豐富的上下文的序列信息,通過添加CRF層,動態規劃實體間相鄰的標簽獲取最優的序列標注,模型識別F值分別達到83.81%、85.37%和86.40%。但由于它是基于詞向量的輸入,會出現實體被錯誤拆分的情況,導致有些復雜的實體不會被正確識別。例如:水稻品種鄂汕雜1號會被錯誤拆分成鄂汕/雜/1號。另外分析結果發現,同一文本中,部分農藥實體“順天星1號”會被錯誤標記為農作物名稱,出現這種標記不一致的現象,是由于“順天星1號”與許多農作物名稱構詞方式相同,都是詞語加上數字的形式,在識別過程中,雖然這些模型獲得了上下文的局部特征信息,但是并沒有考慮到更長距離以及全局的語境,從而導致整體識別效果不夠理想。
基于BERT模型的輸入是基于字向量且完整保存了全局的語義信息,它很好地解決了不同語境下同一詞語的不同語義以及指代問題,與前3個模型相比,準確率、召回率和F值均得到明顯提升,BERT-BiLSTM-CRF和BERT-BiGRU-CRF準 確 率分別達到91.15%和91.42%,召回率分別為91.68%和91.82%;F值 分 別 為91.41%和91.62%,其 中BERT-BiGRU-CRF模型相比較BERT-BiLSTMCRF稍優一點。在BERT-BiGRU-CRF模型基礎上,依次去掉上下文編碼層BiGRU和輸出層CRF,以此進行消融試驗,得到的BERT-CRF和BERT-Softmax模型識別的F值分別降低了0.90和2.71個百分點。這表明了BiGRU網絡是提高編碼質量的有效方法,以及CRF層對于中文命名實體識別至關重要。
在BERT-BiGRU-CRF模型的試驗結果基礎上,進一步將預訓練語言模型換成ERNIE和Ro-BERTa-WWM,以此進行其他預訓練語言模型的效果評估,結果顯示F值分別下降0.88和0.70個百分點,這表明BERT模型對于本研究自構建農業數據集的識別效果最優,其他改進預訓練語言模型在農業命名實體識別上可能不一定會奏效。
最后,加入對抗訓練后的BERT-BiGRU-CRF模型的準確率提升了1.33個百分點,召回率下降了0.29個百分點,F值提升了0.87個百分點。這表明本研究添加的對抗訓練算法確實可以在一定程度上提高識別結果。為了驗證對抗訓練機制的通用性,選用中文領域的命名實體識別數據集Resume NER進行試驗,該數據集是根據新浪財經網(https://finance.sina.com.cn/)關于上市公司的高級經理人的簡歷摘要數據進行篩選過濾和人工標注生成的。它包含1 027份簡歷摘要,實體標注分為人名、國籍、籍貫、種族、專業、學位、機構、職稱8個類別,試驗結果如表3所示,它成功驗證了對抗訓練機制對于提升模型泛化性和魯棒性的作用。

表3 不同模型試驗結果對比(單位:%)
如圖8所示,利用本研究模型對于農作物、病害、蟲害、農藥、肥料以及病原六類實體的識別結果F值,可以看出模型對農作物和蟲害的識別結果F值普遍較高,其余類別則相對降低一些。分析其原因,農作物的實體數目眾多,所以訓練程度較為充分,而且一些培育品種名稱常常是詞語加數字的組成方式,例如豫粳6號、桂引901,這些明顯的特征信息在一定程度上提高了農作物實體識別的準確率。大部分蟲害名稱也具有較為規則的后綴組成詞,例如葉蟬、薊馬等,因此識別準確率也比較高。而對于一些病害名稱,它們往往存在實體嵌套情況,例如水稻倒伏等,模型還不能獲取相關特征信息來有效解決此類問題。肥料名稱大多構詞比較單一,比如氮肥、鉀肥等,但是卻存在大量的一詞多義現象,比如氮、磷、硫酸銨、過磷酸鈣等,它們在某些地方只是化學名詞,并不代表肥料的意思,模型不能有效地區分干擾信息。病原名稱構詞復雜、冗長且邊界模糊,而且大部分存在實體嵌套情況,如茶擬盤多毛孢、水稻條紋葉枯病毒等,模型很難得到較好的語義和邊界信息,所以識別效果普遍較差。對于上述提及的問題,可以通過提升模型整體的復雜度方法,以此獲取更豐富的額外特征信息,或者構建相關的領域詞典等方法以期達到更高的識別效果。

圖8 農業實體試驗結果F值對比
總體來說,本研究提出的BERT-Adv-BiGRUCRF模型對農作物、病害、蟲害、農藥、肥料以及病原六類農業實體的識別結果F值分別達到了95.30%、84.00%、94.68%、84.96 %、86.67%、86.27%,表明模型在不使用任何字典或外部注解資源的情況下,在自構建的農業標注語料庫上對于命名實體識別任務的有效性和合理性。
針對農業領域標注語料庫稀缺有限的問題,首先自構建了一個農業領域的注釋語料庫,其中包含了6類實體和16 048個樣本。此外,對于農業領域中文命名實體識別任務,提出了引入BERT預訓練語言模型的識別方法,提升了模型的識別效果。最后,對輸入樣本進行對抗訓練,以此提高模型整體的泛化性和魯棒性,一定程度上提升了命名實體識別效果。總體模型架構BERT-Adv-BiGRU-CRF在自構建的農業注釋語料庫中對6類農業實體都達到了良好的識別效果。今后的工作將集中在以下3個方面:一是將自構建的農業注釋語料庫進一步擴充以及對于存在的噪音誤差進行修正或增強,對類別數目少的樣本進行平衡處理,以此達到模型的更好識別效果。二是引入更加豐富的特征信息,比如radical-level特征[23]和工業詞典等,提升對于構詞復雜冗長和邊界模糊實體的識別效果。三是嘗試一些模型壓縮方法,比如知識蒸餾、剪枝等以此來減少訓練時間和算力,降低模型空間復雜度,以此達到工業級的需求和應用。