吳 迪,姜麗婷,王路路,吐爾根·依布拉音,艾山·吾買爾,早克熱·卡德爾 .新疆大學 軟件學院,烏魯木齊 830046
2.新疆大學 信息科學與工程學院,烏魯木齊 830046
隨著人們生活水平的日益提高,越來越多的人在節(jié)假日選擇外出游玩的方式來釋放日常工作學習的壓力。然而由于對周圍環(huán)境的不熟悉,外出旅行的人們在非居住地游玩的過程中會面臨各式各樣的問題,與此同時當地政府也難以充分利用旅游業(yè)的巨大潛力以提高就業(yè)率和經濟發(fā)展水平[1]。若依賴人工解決上述困難則需消耗巨大的財力、物力,而且不能及時解決游客在游玩時面臨的個性化問題。如今迅猛發(fā)展的人工智能技術使得為游客提供自動化、個性化的服務成為了可能,若開發(fā)旅游的自動問答系統(tǒng)能有效解決上述問題。問句分類作為自動問答系統(tǒng)的第一步,其精度直接制約著問答系統(tǒng)的效果[2]。旅游問句文本長度有限且其表達方式口語化現象比較普遍,使得機器難以準確理解其意圖完成分類。針對上述難點,本文首先通過雙向門控循環(huán)單元(bidirectional gated recurrent unit,Bi-GRU)[3]對問句語義信息進行學習,緩解其因長度有限而造成的語義匱乏問題,而后應用卷積神經網絡(convolutional neural network,CNN)的卷積層(convolution layer)[4]學習其局部依賴,通過不同大小的卷積核(filter-size)對不同詞組的語義信息進行卷積,后用多頭注意力機制(Multi-Head-Attention)[5]對卷積后的語義信息分配權重,從不同的語義空間減少歧義詞組對結果的負面影響。最后利用Softmax輸出預測概率最大的類別作為結果。通過上述方式提高問句語義信息及關鍵特征的利用率,完成旅游領問句分類。本文做出如下貢獻:(1)構建了一個旅游問句的數據集,為以后繼續(xù)研究提供了基礎。(2)本文提出了一種旅游問句的分類模型,在表述不規(guī)范且長度較短的旅游問句分類任務中取得的較高的精度,優(yōu)于現有的主流機器學習模型和深度學習模型。
問句分類是一個經典的自然語言處理任務。很多學者對此進行研究并提出了諸多解決辦法。以往的分類包括兩大類方法:傳統(tǒng)的機器學習和深度學習。
傳統(tǒng)的問句分類方法多基于機器學習的方法,如:支持向量機(support vector machine,SVM)[6]、樸素貝葉斯(Naive Bayesian model,NBM)[7]和K最近鄰(K-nearest neighbor,KNN)[8]等。也有學者對傳統(tǒng)的機器學習方法進行改進以完成問句分類,如:Bae等[9]提出了一種基于詞權重加權和相關反饋的自動擴展詞生成技術組合的方法應用到問句分類中,在多個語種中取得了優(yōu)于TFIDF的成果。
得益于神經網絡強大的非線性擬合能力,目前許多學者采用深度學習的方法。楊志明等[10]應用字詞向量結合的文本表示方法通過CNN完成問句分類,有效地規(guī)避了現有分詞方法可能造成的分詞不準確的問題,但沒有考慮問句的時序信息。Xia等[11]在長短時記憶網絡(long short term memory,LSTM)隱藏狀態(tài)中應用注意力機制(attention mechanism)分配權重完成問句分類,加深了模型對局部重要信息的理解,但該文僅考慮了文本單個方向的語義,沒有采用雙向的神經網絡結構對問句依賴進行捕捉。姚苗等[12]通過堆疊雙向長短時記憶網絡(stack bidirectional long short term memory,Stack-LSTM)獲取文本語義依賴關系,結合自注意力機制(self-attention mechanism)加深模型對局部重要信息的學習,提高了分類的準確率。Liu等[13]利用注意力機制對Bi-GRU獲得的語義信息進行權重分配,再通過CNN完成其局部語義信息的學習,取得了很好的問句分類效果。但上述方法都僅使用注意力機制對文本的加強模型對文本重要信息的理解,沒有從不同語義空間學習文本局部語義信息。Banerjee等[14]結合了多種深度模型,采用投票等融合方法,完成問句分類,其效果雖然相比與單一分類器,提高約4%,但投票結果的準確率依賴于不同模型本身對問句數據集的擬合程度及模型間的獨立程度,其解釋能力較差。也有學者在深度學習的基礎上引入了機器學習的方法,如:梁志劍等[15]用TF-IDF對Bi-GRU提取到的特征進行權重賦值完成分類。Mohammed等[16]結合了改進TF-IDF和word2vec方法對問題進行分類取得了很好的效果,但相比于注意力機制,TF-IDF僅能根據詞頻選取較為重要的語義信息,有很大的局限性。Somnath等[17]在深度學習的模型中加入了特征工程,在數據集MSIR16上將問句分類的結果提高了近4%,但特征工程的引入很大程度上降低了模型的泛化能力。
問句分類任務定義:給定一個旅游問句T將其進行向量化表示為(w1,w2,…,wn)作為模型輸入,問句分類就是對該短文本進行語義理解,判定其所屬類別,從而達到分類的目的。
以“新疆八日游哪里有有什么好的路線景點規(guī)劃?”這一問句為例,該問句預處理、分詞結果為“新疆八日游哪里有有什么好的路線景點規(guī)劃”,應歸屬到“地點”類別,但是該問句的表述并不完全按照語法規(guī)范,且文本長度較短。針對旅游問句特殊性,本文首先通過兩層Bi-GRU獲取的語義信息和詞向量拼接的方式來捕獲問句長距離語義依賴,優(yōu)化文本向量化表示,緩解問句文本長度短而造成的數據稀疏的問題。然后使用CNN的卷積層通過不同的卷積核大小對得到的語義信息進行不同詞組的卷積,加強模型對局部信息的認知,對“新疆”和“八日游”進行卷積,對“好”“的”和“路線”進行卷積,通過Multi-Head-Attention對卷積后的語義信息進行篩選,放大正確卷積對文本語義理解的作用,減少錯誤卷積的負面影響,如“有”“有”和“什么”的卷積等。通過上述方式有效緩解了文本表述不規(guī)范的問題,并增強了模型的可解釋性。最后通過Softmax完成問句分類。
以下簡稱BGCMA模型,其結構圖如圖1所示。
圖1 BGCMA模型Fig.1 BGCMA model
自然語言處理的第一項任務就是提取文本的語義特征,進而完成后續(xù)的下游任務。早期學者多采用One-hot向量進行詞表示,這種表示方法的結果導致詞與詞之間沒有聯系也容易產生維數災難。Google于2013年提出并開源了Word2Vec,相比于One-hot向量它更加高效,能有效體現詞語之間的聯系。Word2Vec的基本思想是將不同詞語a、b進行,判定組合(a,b)是否符合自然語言的語法規(guī)則。它有兩種訓練方式:CBOW(根據附近詞來預測中心詞)、Skip-gram(根據中心詞來預測附近詞)[18]。
循環(huán)神經網絡(recurrent neural network,RNN)[19]被很多學者證明適用于文本處理的深度學習任務中,但面對長文本時,靠后序列的梯度很難反向傳播到靠前的語義信息。門循環(huán)單元網絡(gated recurrent neural networks,GRU)作為RNN的變體,使用了重置門、更新門來決定如何舍棄、更新信息,成功解決了長期依賴的問題。相比于另一種解決該問題的長短時記憶網絡(long short-term memory,LSTM)[20],GRU的參數量更少、易于計算。其單元在t時刻更新過程如圖2所示,公式如式(1)~(4)所示:
圖2 GRU模型Fig.2 GRU model
其中,r t為重置門,z t為更新門,x t為t時刻的輸入數據,σ為激活函數,b r、b z、b h為偏置,W r、U r、W z、U z、W h、U h為權重矩陣,⊙表示點乘運算,h t為t時刻GRU的輸出。
本文利用Bi-GRU對問句的語義信息進行初步的理解,Bi-GRU是前向h tl和后向h tr融合的GRU,它得到的語義信息更加充分、準確。通過該結構捕獲上下文隱含語義關系,公式如所示(5)、(6)所示:
Bi-GRU當前的隱層狀態(tài)由上述前向h tl、后向h tr和詞向量W三部分共同決定。本文將Bi-GRU獲取的語義信息和詞向量進行拼接,如公式(7)所示:
本文采用兩層Bi-GRU,以突出深層次隱含強依賴關系的捕獲,通過詞向量和Bi-GRU獲取的語義信息拼接的方式,獲取詞匯本身和上下文的依賴關系以得到更豐富的文本表示向量,有效緩解了問句因長度較短而造成的語義稀疏的問題。
卷積神經網絡CNN最初被用于解決圖像處理的問題,后被應用到自然語言處理中,現已成為最流行的深度學習模型之一。它由卷積層(convolution layer)、池化層(pooling layer)和全連接層(fully connected layer)組成。其中卷積層的作用是提取局部文本語義信息,這樣的操作會產生巨大的計算量,為了防止過擬合,進一步降低網絡參數過擬合程度,對卷積后的信息采取池化操作,一般有兩種方式,平均池化(mean pooling)和最大池化(max pooling),前者計算列向量的平均值而后者直接取出列向量的最大值。但是這兩種池化操作都存在不同程度的信息丟失現象,且會丟失文本的位置信息。所以本文擯棄池化層,僅使用卷積操作提取問句局部關系依賴。
獲得Bi-GRU層提取的全局語義信息后,本文使用CNN的卷積操作捕捉局部語義信息相關性,采用k=2、k=3和k=4作為不同大小的卷積核對問句語義信息的局部特征進行感知,即用k維大小的卷積核在問句的語義信息上滑動提取特征。公式如(8)、(9)所示:
其中,b表示偏置,W k表示不同卷積核所對應的權值矩陣,i為第i個特征值,k為卷積操作中卷積核的大小,f為激活函數,y i表示卷積后的輸出結果,操作⊕為向量拼接操作,Y為得到的最終特征。
自Mnih等[21]用RNN和Attention機制對圖像進行分類,Attention機制被廣泛應用于圖像、自然語言處理的任務中。其本質是通過Query和Key計算對應Value的權重系數,之后進行加權求和。Multi-Head-Attention是將Query、Key、Value首先進過一個線性變換,然后輸入到放縮點積Attention,該操作進行h次(即多頭),而且每次Q、K、V進行線性變換的參數W是不一樣的,及參數間互不共享。最后將多次計算的結果進行拼接和線性變換得到最終結果,相比于單頭的注意力機制,多頭的計算方式能夠從不同的語義表示子空間里學到更多有價值的信息,該結構如圖3所示。
圖3 多頭注意力機制模型Fig.3 Multi-Head-Attention model
將上述獲得的語義信息由Multi-Head-Attention對語義信息進行處理,而非簡單的最大池化或者平均池化運算。公式如(10)、(11)所示:
其中,Q、K、V分別表示Y經過線性變換后的得到的Query、Key、Value,d k為輸入維度,操作⊕為向量拼接操作,W o為拼接后做線性變換需要的矩陣,h為模型的頭數。
基于CNN和Multi-Head-Attention結合的方法優(yōu)勢有三點,第一,有效避免了信息的流失;第二,通過不同filter相鄰詞卷積弱化了口語的表達方式對結果的不良影響;第三;通過Multi-Head-Attention機制完成對各個語義信息的權重分配,可以更加準確的問句實際要表達的意圖。
自通過上述對文本的語義信息表示及處理操作后,利用Softmax分類器進行問句分類。將輸入值轉換成概率值。模型在最后輸出概率最大的類別。公式如式(12)所示:
其中,i為分類的標記,本文實驗用到了6個標記類別,所以i∈{1,2,3,4,5,6},D為輸入問句,θ表示模型訓練學習到的參數,模型最后輸出p(k i|D,θ)概率值最大的類別。
3.1.1 實驗環(huán)境說明
為驗證方法可行性,本文設計了以下實驗。硬件配置:GPU為RTX-2080Ti,CPU為i7-9700。軟件環(huán)境:操作系統(tǒng)為Ubuntu18.04,編程語言為Python3.6,框架為
PyTorch1.1.0。
3.1.2 數據集
由于沒有公開的旅游問句數據集,本文在攜程、去哪兒等各大旅游網站爬取問句并對其進行了篩選、清洗、標注等預處理操作,共計9 536條。人工標注了六個類別,分別是:時間(1 970條)、描述(2 383條)、地點(1 732條)、具體金額(1 714條)、人物事跡(201條)、綜合(1 536條)。具體示例見表1。
表1 數據集示例Table 1 Examples of data sets
按照7∶2∶1切分數據為訓練集(6 656條)、驗證集(1 920條)、測試集(960條)。數據集類別及分布如表2所示。
表2 數據集分布Table 2 Distribution of data set
3.1.3 對比模型介紹
為了驗證BGCMA模型在旅游問句任務中的性能,本文選取了若干主流的文本分類模型進行對比實驗。
(1)NBM:以貝葉斯原理為基礎,用概率統(tǒng)計的方法完成問句的分類任務。
(2)SVM:本文在該任務中分類效果最好的Linear作為核函數。
(3)KNN:通過聚類的方式完成問句分類任務。
(4)CNN:CNN模型通過卷積、池化、全連接對問句進行分類。
(5)GRU:通過單向的GRU網絡捕捉旅游問句語義依賴,進行問句分類。
(6)Bi-GRU:由前向GRU和后向GRU組合而成,雙向的GRU可以更好地捕捉其語義信息。
(7)Bi-GRU+CNN:在Bi-GRU后面接CNN,在捕獲全句的語義依賴的基礎上通過CNN加強對局部信息的理解。
(8)Bi-GRU+Attention:在Bi-GRU的基礎上增加Attention機制,對Bi-GRU學習到的語義信息進行權重分配,完成問句分類。
(9)Transformer:通過以Multi-Head-Attention為基礎的Encoder部分,對語義信息進行學習完成分類任務。
3.1.4 評價標準
在本文的實驗中,采用三個精度評價指標來評估模型,分別是精準率(Pre)、召回率(Rec)、F1值(F1-score),計算公式如(13)~(15)所示:
其中TP、FP、FN、TN的含義如表3所示。
表3 混淆矩陣Table 3 Confusion matrix
為進一步驗證模型的時間效率,本文引入了時間指標用于評估不同模型在同一任務下的訓練時間和測試時間,單位為s。
在旅游問句數據集上,將本文提出的BGCMA模型與NBM、SVM、KNN、CNN、GRU、Bi-GRU、Bi-GRUCNN、Bi-GRU-Attention、Transformer多種機器學習和深度學習模型進行對比實驗,實驗結果如表4所示。
表4 實驗結果對比Table 4 Comparison of experimental results
由表4可知,在旅游問句分類的任務上,NBM、SVM和KNN這一類機器學習的算法精度要明顯低于深度學習模型,但是這類模型的訓練時間相對較短。其中,NBM的訓練時間和測試時間均為最短,這是因為該模型的核心思想是條件概率的計算,它假設所有特征的出現相互獨立互不影響,每一特征同等重要,但在實際語義表達中并非如此,所以該模型只取得了82.26%的F1值。KNN的計算量較大,是時間消耗最長的機器學習模型,然而本文實驗的數據集較小,導致了該模型在旅游問句的分類任務上的精度表現最差,僅取得了78.50%的F1值。相比于KNN,SVM對小樣本數據集的適應性較好,在三種機器學習模型中,該模型的精度最高,在Pre、Rec和F1-score三個指標中分別取得了84.60%、84.68%和84.15%的性能。
由表4可知,在旅游問句分類的任務上,深度學習模型的精度要明顯高于機器學習。CNN和GRU模型相比,GRU取得了90.07%的F1值,比CNN模型高0.35個百分點,這是由于GRU模型考慮了問句的時序信息,而CNN模型對文本的時序信息不夠敏感所導致的,但CNN不需要像GRU一樣逐詞地完成運算,其訓練時間為所有深度學習模型中最短。GRU和Bi-GRU模型相比,Bi-GRU模型在問句分類任務的性能優(yōu)于GRU模型,原因在于Bi-GRU模型在GRU模型的基礎上增加了一個反向的GRU,前后向信息融合,更好地獲取了問句上下文的語義信息,但是Bi-GRU需要完成前向和后向兩次運算,需要的時間較GRU長。Bi-GRU+CNN模型和Bi-GRU+Attention模型性能均比Bi-GRU模型好,這是因為Bi-GRU+CNN模型在Bi-GRU模型基礎上增加了CNN,利用了CNN局部卷積思想,加強了局部語義信息的理解和學習,而Bi-GRU+Attention模型在Bi-GRU模型基礎上增加了Attention機制,對獲取的語義信息賦予權重,能夠有效甄別更重要的信息。由于在實驗中設置了早停,所以Bi-GRU+Attention的收斂速度較快,完成訓練的時間較快。而以多頭注意力機制為基礎的Transformer,利用位置信息編碼,有效考慮了問句的時序性特征,通過不同子語義空間的Attention機制,在Pre、Rec和F1-score三項指標中取得了91.14%、91.04%和90.97%的結果,多頭注意力機制的效果較Bi-GRU+Attention的單頭注意力機制的性能更好,但是Transformer的時間復雜度為O(n2),訓練時間和測試時間均比較長。但Bi-GRU+CNN的在旅游問句數據集的表現稍優(yōu)于Bi-GRU+Attention和Transformer,這是因為旅游問句數據集的長度較短,無用的信息相對較少,所以采用CNN進行局部特征的學習要強于Attention機制。
BGCMA模型首先通過兩層Bi-GRU學習問句的上下文信息,捕獲其長距離語義依賴,和預先訓練好的詞向量拼接充分學習問句語義信息,緩解旅游問句語義稀疏的難點。然后通過CNN的卷積層對不同詞組進行卷積,學習其局部關系依賴,最后利用Multi-Head-Attention替代傳統(tǒng)的池化層對卷積后的結果進行進一步的學習和感知,通過注意力的方式篩選正確的正確詞組的卷積,提高了分類精度。BGCMA結合了Bi-GRU、CNN、Multi-Head-Attention的優(yōu)點,在Pre、Rec、F1-score三個指標中分別取得了92.14%、92.19%和92.11%的結果,在精度指標中全面優(yōu)于現有主流的深度學習模型和機器學習模型。但為了解決模型對不規(guī)則表達的問句的學習,該模型的訓練時間為最長,但是其測試時間較SVM和KNN短,能夠為自動問答系統(tǒng)的后續(xù)工作提供高效的支持。
模型實驗參數取值如表5所示。為評估BGCMA模型中關鍵因素的貢獻,本文進行了消融實驗。
表5 實驗參數設置Table 5 Experimental parameter settings
3.3.1 Learning-rate對實驗性能的影響
學習率(Learning-rate)的作用是控制模型的學習進度,會影響模型的最終實驗效果。在旅游問句分類任務中,Learning-rate分別選取0.01、0.003、0.001、0.000 3、0.000 1進行實驗,結果見表6。
表6 學習率對模型性能的影響Table 6 Effect of learning-rate on model performance
由表6可知,Learning-rate的取值為0.001時,模型的結果最優(yōu)。但當學習率增大到0.01時,模型的性能在Pre、Rec、F1-score分別下降了23.76、24.17、25.66個百分點,這是因為學習率過大,在訓練過程中跨過最優(yōu)值,長時間無法收斂,模型無法取得最好的訓練效果。當學習率降低至0.000 1時,模型的性能在Pre、Rec、F1-score分別下降了1.83、1.98、1.86個百分點,這是因為學習率過小,模型容易陷入局部最優(yōu)點。
3.3.2 Bi-GRU的層數對實驗性能的影響
神經網絡的層數與模型的復雜度直接相關,會影響模型與實驗數據的擬合程度。對Bi-GRU的層數取1層、2層、3層進行實驗,結果見表7。
表7 層數對模型性能的影響Table 7 Effect of number of layers on model performance
由表7可知,Bi-GRU的層數取2時,模型取得了最好的效果。當層數增加至3層時,Pre、Rec、F1-score分別下降了1.14、1.67、2.13個百分點,這是因為層數過大使得模型在測試集上的泛化能力下降,出現了過擬合的現象。而層數取1層時,Pre、Rec、F1-score分別下降了2.48、2.61、3.87個百分點,這是因為層數過小適合模型出現了欠擬合的現象,模型無法很好的擬合數據集。
3.3.3 Filter-size對實驗性能的影響
CNN卷積核大小的選取,會影響到文本詞語表征的提取,進而影響模型與實驗數據的擬合程度。對CNN的filter-size取(2,3,5)、(2,3,4)、(3,4,5)進行實驗,結果見表8。
表8 卷積核對模型性能的影響Table 8 Effect of filter-size on model performance
由表8可知,CNN的卷積核?。?,3,4)時,模型的性能最好。當卷積核大小取(2,3,5)或者(3,4,5)模型的性能在Pre、Rec、F1-score的值上都有不同程度的下降。這是因為卷積核選取的偏大時,模型會引入過多的噪聲,從而導致模型性能有所下降。
3.3.4 Number-heads取值對實驗性能的影響
多頭注意力機制可以在不同的空間對語義信息進行理解,其Number-heads會影響注意力的效果進而影響模型的最終結果。對多頭注意力Number-heads取4、8、12進行實驗,結果見表9。
表9 頭數對模型性能的影響Table 9 Effect of number-heads on model performance
由表9可知,Multi-Head-Attention的頭數取8的時候,模型性能最好。當頭數增加到12時,Pre、Rec、F1-score分別下降了2.04、2.09、2.06個百分點,這是因為頭數過大會導致模型的結構更加復雜,過多的注意力會引入噪聲使得模型性能下降。而當頭數減少到4時,Pre、Rec、F1-score分別下降了1.43、1.57、1.47個百分點,這是因為頭數過小會導致模型無法捕捉到多方面的信息。
針對旅游問句的文本長短較短和口語化的特點,本文提出了BGCMA模型,實驗結果表明,該模型在旅游問句任務中取得了較高的精度,優(yōu)于主流的機器學習和深度學習模型,驗證了其優(yōu)越性,為解決旅游問句分類提供了參考。在未來的工作中,將繼續(xù)擴展數據集,考慮引入知識庫,在保持高精度的同時降低模型的訓練耗時,期望取得更快更好的問句分類效果。