麻之潤,費 凡,黎 芬,董慧潔,彭 琳
(1.云南農業大學大數據學院,昆明 650000;2.綠色農產品大數據智能信息處理工程研究中心,昆明 650000)
隨著信息技術的發展,互聯網沉淀了大量的文本數據。在農業領域如農業氣象、農資商品等,這些文本多以短文本的形式出現。如何對這類文本信息進行有效分類,既方便網絡維護運營者的管理以及發掘其信息價值,又能夠讓大眾方便快捷地選擇自己感興趣的內容,這是文本分類方向研究的熱點問題。
文本分類任務是自然語言處理領域的一項基礎且十分重要的工作,是當前該領域的研究熱點之一。該任務主要指根據已經定義好的類別標簽對現有的一段文本進行標注。分類的文本又分為長文本和短文本;和長文本相比,短文本的時效性更強,具有明顯的數據稀疏性,同時也存在著高噪聲、高度依賴上下文語境等問題[1],這是現階段短文本分類面臨的難點問題。
1960—2010 年,研究人員主要基于統計模型來研究文本的分類,如樸素貝葉斯(NB)模型、K 近鄰(KNN)方法、支持向量機(SVM)方法等。Maron[2]研究了一種根據文檔內容自動分類的方法;李靜梅等[3]在假設特征獨立性的基礎上,就樸素貝葉斯的原理和應用等問題進行討論,并通過期望值最大法提高了其分類精度。余芳[4]基于web 文本的特征利用樸素貝葉斯算法實現了一個文本分類系統,并獲得了很好的分類效果。Cover 等[5]提出了一種最近鄰決策規則用于文本分類。龐劍鋒[6]提出了一個能夠有效將文本分類算法和反饋方法相結合的方法,并建立了可行的系統。湛燕[7]基于K-近鄰、K-均值算法,提出了一種學習權值算法可以間接的優化聚類結果。Joachims[8]討論了如何使用支持向量機運用在文本分類任務中。2009 年,TF-IDF 通過TF 詞頻和IDF 逆文本頻率指數來評估單詞或者片段短語對一個完整語料庫的影響程度,如果一個陌生詞語在某篇隨機的文章中出現的頻率很高,但是在這個完整語料庫中出現的頻率較低,則其TF-IDF 值較高,即重要程度較高[9]。Mikolov 等[10]提出了新穎的word2vec 模型,用于從龐大數據集中計算單詞的連續矢量表示。Pennington 等[11]提出了一個新的全局對數線性回歸模型,在多項任務方面優于相關模型。
隨后文本分類進入從機器學習到深度學習的快速發展道路。Kim[12]提出了一種用于文本分析的CNN——TextCNN。Iyyer 等[13]提出了一個簡單的深度神經網絡DAN,與同類模型相比僅需花費少量培訓時間就能夠獲得同等的成績。Tai 等[14]提出了一種LSTM 對樹型網絡拓撲的概括Tree-LSTM,在一些任務上強于LSTM。Grave 等[15]探討了一種簡單有效的文本分類方法FastText,并獲得了良好的效果。2017 年,Vaswani 等[16]提出了幾乎僅靠注意力來完成任務的Transformer 模型,同時提出了可伸縮點積注意力。上述方法雖然在文本特征提取能力方面有了提升,但仍需要大量的文本數據作為支撐。
本研究中的“少樣本”是指維度小、數量小的樣本[17],短文本指不超過200 個字符的文本[18]。對于文本分類任務,目前常見的方法都需要基于大規模的人工標注數據集。對于農業領域的文本,大規模標注數據成本很高,而且需要與原來的數據一起進行重新訓練。在圖像領域借助少量樣本對新樣本進行分類的技術發展比較成熟,文本領域目前沒有廣泛應用的成熟技術[19]。Vinyals 等[20]定義了一個少樣本數據集miniImageNet,一共有100 個類別,每個類別有600 個樣本,用于少樣本的研究。Han 等[19]在EMNLP 2018 中提出了一個少樣本的關系數據集,包含64 種關系用于訓練,16 種關系用于驗證和20 種關系用于測試,每種關系包含700 個樣本。本文基于此展開研究,提出的方法可以借助少量的樣本對農業領域的文本進行分類。
少 樣 本 學 習(Few sample learning,Few-shot learning,FSL),也稱小樣本學習(One sample learn?ing)[21]或單樣本學習(One-shot learning),可以追溯到21 世紀初[22]。這里few-shot 有計量的意思,指少樣本學習,機器學習模型在學習了相當類別的數據后,只需要少量的樣本就能夠快速學習,對應的有單樣本學習,可看作樣本量為一情況下的一種少樣本學習。少樣本學習按照使用方法可分為3 種。①模型微調法。數據集分布相似的前提下,在目標小數據集上對源數據集訓練好的分類模型進行個別層參數微調,該方法因數據集分布不同易產生過擬合的結果。②數據增強法。利用輔助信息增強樣本特征,如添加標簽數據進行樣本數據擴增、添加多樣特征進行樣本特征空間增強,便于模型提取特征,該方法因增加數據信息易引入噪聲數據。③遷移學習法。在一定關聯下,利用學會的知識和特征遷移到新知識的學習。本文主要從遷移學習模型方面著手展開少樣本學習研究。
預訓練的思想究其本源是模型的全部參數不是以往的隨機初始化,而是通過特定任務(例如語言的模型)進行一些預訓練。試驗表明,在大型的完整語料庫中進行預訓練(PTMs)能夠習得通用語言的表示,而這對之后的NLP 具體任務很有幫助,避免了從最初開始訓練新模型。
預訓練模型自提出后便得到飛速發展,先后出現了ELMo[23]、ULMFiT[24]、BERT[25]、XLNet[26]等先進的預訓練語言模型。其中Devlin 等[25]引入了一種稱為BERT 的表示語言模型,它用Transformer 雙向編碼器表示,目的是聯合調節(jointly conditioning)所有層的左右和上下文,進而預訓練其深度雙向的表示,以此證明雙向的預訓練對語言的表示非常重要,同時也證明了預訓練表示的便捷性,減少了眾多復雜的特定任務設計等需求。Transformer 結構模型拋棄了傳統的CNN 和RNN,整個網絡結構是由Atten?tion 機制完全組成。更準確地說,Transformer 僅由self-Attention 和Feed Forward Neural Network 組 成。本 質 上,Transformer 是 一 個Encoder-Decoder 的 結構,其左側是編碼器,目的是使語料經過輸入后能夠生成相應的特征向量;右側是解碼器,其輸入有兩部分構成,一部分是左側編碼器的輸出結果,另一部分是已經預測的結果,目的是獲得最終的條件概率。其具體結構如圖1 所示。

圖1 BERT 中應用的Transformer 網絡
其中,Attention(Q,K,V):Attention( )
Q,K,V=softmax,Feed Forward Neural Network 的全連接層第二層線性的激活函數為FFN( )
Z=max(0,ZW1+b1)W2+b2
BERT 模型針對的是英文或字的word 粒度的完形填空學習層面,并沒有考慮運用訓練數據中的詞法、語法結構以及語義的相關信息,并以此來建模學習。相對而言,百度的ERNIE 模型先是對詞和實體等語義單元進行掩碼操作,能夠讓模型了解完整語義的表示;ERNIE 用訓練數據中的詞法、語法的結構以及語義中的相關信息來統一建模,在語義表示方面較大地提高了其通用表示的能力。BERT 模型和ERNIE 模型的遮掩策略區別如圖2 所示。

圖2 BERT 和ERNIE 之間不同的遮掩策略
本試驗數據從淘金地-農業網的農業問答板塊問答分類頁面爬取,遵循國家法律與該網站的爬蟲協議——robots.txt,并保證該數據僅用于此次文本分類研究,不外傳與分享,不用于商業用途。首先分析了該網站的可視化結構與前端代碼,知悉其數據傳輸方式為get 方式;再查看代碼,找到其頁面所需要的問答信息的具體標簽,判斷該標簽是否能準確地定位到這個問題,判斷該標簽的惟一準確性;然后判斷不同問題頁面實現翻頁的方式方法;最后嘗試爬取單獨頁面并將信息寫入csv 文件中,成功后調試代碼,逐步實現爬取所有問題頁面的相關信息并逐行寫入csv 中。利用Scrapy 框架、Urllib、Requests等庫,運用python 編程語言,從html頁面的特定標簽中爬取問答分類頁面所有問句對,存入csv 文件中。該問句對分為養殖技術、糧油種植、蔬菜種植、瓜果種植、藥材種植五大類,又可分為問題集和滿意答案集。
數據清洗是整個數據分析過程中極其重要且不可或缺的一個環節,是對獲取數據進行再一次審查與校對核驗的過程,主要為了舍去多余重復的信息,改正現存的錯誤問題,直至可以獲得一致的數據。常見的數據清洗步驟分為預處理階段的數據導入與查看、缺失數據清洗、格式內容清洗、邏輯錯誤清洗、不相關數據清洗和驗證關聯性等。本研究共爬取了10 000 多條數據對,經過分析發現有部分殘缺值并刪除,部分重復值經過對比后刪除,部分數據帶有特殊格式和符號經正則表達式刪除。通過上述環節對殘缺數據、錯誤數據、重復數據進行審查與刪除,后經人工隨機校對,保留了12 433 條問句對。對該數據集進行分析處理,然后分組,S0 組為5 大類全量數據集,S1 組為5 大類等比縮小數據集,S2、S3、S4 為繼續等比例縮減后的5 大類數據集。
隨機從短文本問題集中選取其中的70% 數據作為訓練集,20% 數據作為測試集,10% 數據作為驗證集,數據集統計如表1 所示。部分問題集訓練語料見表2。

表1 數據集統計 (單位:條)

表2 部分問題集訓練語料
首先將預處理好的數據集輸入基于BERT 和ERNIE 預訓練模型進行文本表示,具體過程為:將輸入數據轉換成嵌入向量X,根據嵌入向量得到q,k,v3 個向量,分別為每個向量計算score(score=q×k),用score 歸一化操作(),達到穩定的梯度,對score 施加以softmax 激活函數。再分別取出本數據集的表示向量,該向量攜帶了大量的背景信息,具有豐富的表達能力。最后將這些向量輸入全連接層,經過一系列的權重調整,得到分類結果。分類模型結構如圖3 所示。同時,將處理好的數據集在決策樹模型上做對比試驗。

圖3 分類模型結構
1)試驗硬件。CPU 為Intel Xeon E5-2678 v3,內存容量為128G,內核為48 核,顯卡為GeForce RTX 3090,顯存容量為24 GB,操作系統為Ubuntu 18.04.5 LTS,Python 版本為3.8,PyTorch 深度學習框架,框架版本1.7.1,Cuda 版本為11.0。
2)參數設置。BERT:batch_size=128,pad_size=32,learning_rate=5e-5,hidden_size=768,num_epochs=6;ERNIE:batch_size=128,pad_size=32,learn?ing_rate=5e-5,hidden_size=768,num_epochs=6。
本研究從試驗評價指標的準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1值來對決策樹模型基于BERT 模型和ERNIE 模型的農業短文本分類算法的分類結果展開分析。
準確率(Accuracy)指分類器分類正確的樣本與總樣本之比。

精確率(Precision)也稱為查準率,指分類正確的正例個數與分類為正例的實例個數之比。

召回率(Recall)也稱為查全率,代表分類正確的個數與實際正例的個數之比。

F-Measure 為精確率和召回率的綜合評價指標。
當β=1 時,


式中,TP代表正例的樣本預測依然為正例,FP代表負例的樣本預測為正例,FN代表正例的樣本預測為負例,FP代表負例的樣本預測依然為負例。
對比試驗結果見表3。由表3 可以看出,小樣本數據集中,隨著數據量的變少,不論是傳統模型還是預訓練模型,準確率、精確率和召回率均存在下降趨勢;而基于ERNIE 預訓練模型的準確率、F1值處于較高水平,遠高于同數據的決策樹模型。因此,本研究提出的基于BERT 模型和ERNIE 模型的農業短文本分類算法能夠在數據量不足的情況下,便捷、有效地識別出文本所屬的農業領域類別。

表3 對比試驗結果 (單位:%)
本研究在處理農業領域短文本分類任務時,面對該領域經過標注的文本數據稀缺的現狀,以及對大量無標簽數據進行標注又耗費人力物力的問題,構建了適用于農業短文本分類的小樣本數據集,并根據數據量的大小分成不同的組別;然后構建了基于BERT 和ERNIE 預訓練模型的農業短文本分類算法,并與基于決策樹模型的農業短文本分類算法進行對比分析。結果表明,構建的農業短文本分類算法能夠在數據量不足的情況下依然獲得較高的分類效果。下一步還將在農業領域文本數據集的基礎上繼續完善模型和開發應用系統。