蔡玉舒,曹 揚,江 維,詹瑾瑜,李 響,楊 瑞
(1.電子科技大學 信息與軟件工程學院,四川 成都 610054;2.中電科大數(shù)據(jù)研究院有限公司,貴州 貴陽 550022;3.提升政府治理能力大數(shù)據(jù)應(yīng)用技術(shù)國家工程實驗室,貴州 貴陽 550022)
以“強通用性、強交互性、高集智性和高增值性”為特征的數(shù)字時代的來臨,正在激活文化和旅游資源,為文旅產(chǎn)業(yè)發(fā)展注入新活力。數(shù)字技術(shù)在文旅產(chǎn)業(yè)的應(yīng)用,正在賦能公共服務(wù)與行業(yè)監(jiān)管,形成新服務(wù)與新監(jiān)管,讓智能化管理成為可能。
利用文旅產(chǎn)業(yè)運行的各類數(shù)據(jù),行政管理部門更容易識別差別化個性化的公共服務(wù)需求,有助于提升對文旅產(chǎn)業(yè)的公共服務(wù)效率,同時也為管理部門的監(jiān)管提供了技術(shù)支撐[1]。分散于各大旅游網(wǎng)站的游客評論包含了豐富的具有情感傾向的觀點表達,可以為相關(guān)人員提供參考依據(jù)。
網(wǎng)站的游客評論數(shù)量龐大,可以借助自然語言處理技術(shù)進行信息挖掘。方面級情感分析(aspect-based sentiment analysis,ABSA)是細粒度意見挖掘的一種有效方法。ABSA旨在確定評論對特定方面(包括方面詞語和描述類別)的意見(包括意見詞語和情感極性)[2-4]。例如在評論“峨眉山金頂上的景色不錯,但這價格真心貴”中,“景色”是方面詞,描述的類別是風景,“不錯”是描述方面詞的意見詞,涉及的情感極性是正向(如圖1所示)。ABSA包含了許多子任務(wù),現(xiàn)有的研究大部分集中在給定方面詞的前提下確定對應(yīng)的情感極性(aspect-based sentiment classification,ABSC)[5-7],但實際應(yīng)用中問題會稍微復雜一些,主要體現(xiàn)在兩個方面:一是在實際情況中,由于標注成本比較高,事先給定的方面詞往往無法通過人工標注提供。之前的研究試圖借助自動化的方法,使用流水線的模式先抽取方面詞之后再進行情感分析,但會引入錯誤傳播的問題;二是對爬取的游客評論進行分析后發(fā)現(xiàn),中文的口語表達中有省略方面詞的現(xiàn)象,例如評論“方便快捷,及時到位”中包含了對網(wǎng)絡(luò)購票的積極評價,但并沒有明確給出方面詞。在文中的數(shù)據(jù)集中,只包含意見詞而方面詞缺失的情況約占總數(shù)的1/5。如果只對方面詞進行抽取和情感分析,將會遺漏掉有效評價信息。
圖1 旅游評論意見挖掘示例圖
研究者們提出了一些融合詞語抽取和分類的多任務(wù)方法,試圖解決第一個問題。早期的工作[8-9]嘗試驗證抽取和分類兩個任務(wù)之間的關(guān)系,并提出更為集成的解決方案,但這些方案的效果并沒有優(yōu)于流水線模型。Li[10]重新檢查了任務(wù),提出了基于兩層堆疊LSTM的序列標注模型,其中利用一種簡單的門機制來保持標簽之間的情感一致性。實驗結(jié)果證明了兩個子任務(wù)的相關(guān)性,但效果不足以投入到實際應(yīng)用中。此后序列標注的方式就成為了融合任務(wù)的基本解決思路。BERT提出之后,率先在ABSC領(lǐng)域取得了很好的效果。Li等人[11]隨后提出了基于BERT的序列標注模型,希望用端到端的序列標注方式解決抽取和分類的融合任務(wù),并為之后的基于BERT的融合任務(wù)研究提供基線。他們利用BERT作為嵌入層獲得句子表示,并在之上構(gòu)建了不同的簡單解碼網(wǎng)絡(luò)進行了對比實驗,結(jié)果證明了BERT的有效性。但該研究依然以抽取方面詞為基礎(chǔ),并沒有考慮在實際的中文評論中方面詞缺失的情況。同時,在ABSA序列標注的問題中,如何保持情感一致性也是解碼部分的一個挑戰(zhàn)。指針網(wǎng)絡(luò)最初的設(shè)計是簡化了attention機制,將輸出序列對應(yīng)到輸入序列,從而可以適應(yīng)輸入序列長度的變化[12]。后續(xù)應(yīng)用在機器閱讀理解任務(wù)(MRC)中的主要方式為設(shè)計兩個輸出長度為l的分類器分別預測開始位置和結(jié)束位置,其中l(wèi)表示句子的長度。對于ABSA任務(wù)來說,指針網(wǎng)絡(luò)這種直接預測詞語邊界的方法,可以解決之前融合任務(wù)中情感一致性的問題[10]。
在這樣的背景之下,文中選擇融合意見詞抽取(opinion words extraction)和描述類別分類兩個任務(wù)。通過抽取意見詞而不是方面詞來彌補方面詞缺失導致的有效評價信息遺漏的問題,通過類別分類來彌補方面詞缺失導致的描述目標不明確的問題,以形成完整的觀點表達,并應(yīng)用在實際的評論分析中。文中提出了一種基于BERT的端到端意見挖掘方法,對上述任務(wù)進行分析。首先使用預訓練的BERT作為嵌入層獲得編碼后的句子表示,再使用指針網(wǎng)絡(luò)預測句子中每個位置對應(yīng)的標簽。標簽對應(yīng)著是否處于意見詞范圍內(nèi),以及對應(yīng)描述的類別,將類別描述和意見詞拼接之后可以得到觀點表達二元組。此外,由于旅游領(lǐng)域沒有相關(guān)的數(shù)據(jù)集,爬取了攜程、同城和途牛三個網(wǎng)站關(guān)于峨眉山和青城山的評論,并參照semEval-2014[2]對評論進行了篩選和手工標注。該數(shù)據(jù)集除了應(yīng)用在本任務(wù)中,還可作為領(lǐng)域數(shù)據(jù)集參與ABSA其他子任務(wù)的研究。在構(gòu)造的數(shù)據(jù)集上,文中提出的方法的準確率可達到81.9%,相比現(xiàn)有的序列標注經(jīng)典方法,效果提升可達到2%。
文中提供一種基于BERT的端到端意見挖掘方法,解決意見詞抽取及分類的問題,系統(tǒng)的整體分析框架如圖2所示。
圖2 旅游評論序列標注模型
將輸入的評論句表示為一個長度為L的token序列x={x1,x2,…,xL}。首先使用BERT作為嵌入層對輸入token進行編碼處理,得到輸入token的上下文表示T={t1,t2,…,tL}∈RL×dimt,其中dimt是經(jīng)過transformer處理后得到的表示向量的維度。其次將上下文表示輸入到下游解碼部分,文中使用指針網(wǎng)絡(luò)構(gòu)建下游解碼網(wǎng)絡(luò),預測整個句子的標記序列y={y1,…,yt,…,yL}。其中yt的可能取值為{B,I,O}-{“景區(qū)”,“風景”,“票務(wù)”,“體驗”,“消費”,“服務(wù)”,“旅游團”}。其中,“-”之前的字母集中,B代表當前字處于意見詞的開頭,I代表了當前字在意見詞中,O代表了不為意見詞。“-”之后為描述類別的集合,是根據(jù)標注經(jīng)驗給定的7個預定義類別。
文中采取了端到端的方法對輸入的旅游評論文本進行處理。其中編碼的部分是將輸入的中文句token轉(zhuǎn)換為可計算的向量形式上下文表示,用以進行之后的計算。這里采用了預訓練的BERT模型來編碼輸入評論的上下文信息。BERT[13]是一個基于多層雙向Transformer的語言表示模型,相比于傳統(tǒng)的word2vec編碼了更多的上下文和句子信息,以此增強了表示的能力。首先在輸入的部分,每個單詞疊加了三部分的embedding,單詞embedding、句子embedding以及位置embedding。之后引入多層Transformer對token進行優(yōu)化,具體的計算方式如下:
Hl=Trans(Hl-1)
(1)
其中,H表示句子經(jīng)第l層transformer處理之后的表示結(jié)果,最后一層的表示計算結(jié)果將作為下游任務(wù)的輸入。
得到BERT層計算的句子表示之后,文中設(shè)計了指針網(wǎng)絡(luò)為下游任務(wù)解決方法。此外,文中將提出的方法與經(jīng)典序列標注任務(wù)所用解碼方式條件隨機場(CRF)進行對比,在此也做了簡述。
2.2.1 指針網(wǎng)絡(luò)
(1)開始結(jié)束位置預測。
由于文中的標注任務(wù)涉及到多分類的情況,所以選擇使用兩個n分類的分類器分別預測開始位置和結(jié)束位置,其中n表示類別的數(shù)量。
Pstart=softmax(WS·H)∈Rl×n
(2)
Pend=tanh(We·(H:WS·H))∈Rl×n
(3)
其中,WS為計算開始位置的參數(shù)矩陣,We為計算結(jié)束位置的參數(shù)矩陣,H為BERT層輸出的句子表示。
(2)位置匹配。
在一個句子X中可能存在多個意見詞,這就意味著可能有多個start和end標記,這就涉及到一個位置匹配的問題。因為意見詞抽取實際上不存在命名實體識別(NER)中的實體嵌套的情況,所以匹配開始結(jié)束位置時使用最近匹配的方式就可以完成。
(3)訓練和測試。
模型構(gòu)建的過程中,開始位置的預測結(jié)果參與了結(jié)束位置的預測,因而在最后加入了layer normalization以降低擬合的難度。兩階段的預測在訓練過程中會產(chǎn)生兩個loss,分別是預測開始位置時的Lstart和預測結(jié)束位置時的Lend。最小化的總體訓練目標函數(shù)如下:
(4)
其中,α,β∈[0,1],為控制loss貢獻的超參數(shù)。這兩個loss以端到端的方式聯(lián)合訓練。測試時依據(jù)分類和抽取是否均一致作為評價標準來計算準確度和召回率。
2.2.2 條件隨機場
條件隨機場是序列標注任務(wù)中常用的解碼器,經(jīng)常在NER等序列標注任務(wù)中結(jié)合神經(jīng)網(wǎng)絡(luò)使用[14-15]。文中在BERT層之上引入一層條件隨機場(CRF)完成序列標注的任務(wù)。
(1)CRF。
CRF通過引入之前步驟的標注結(jié)果進行標簽約束,同樣改善了之前的模型中無法保證分類一致性的問題。
(5)
其中,s表示計算的得分,對這個分數(shù)進行softmax得到標注序列的概率值;MA是隨機初始化的轉(zhuǎn)移矩陣,MP是從BERT得到的句子表示線性轉(zhuǎn)換而來的發(fā)射矩陣。
(2)訓練與測試。
訓練時計算CRF層的loss,并進行優(yōu)化即可。測試時同樣依據(jù)的是分類和抽取是否均一致作為評價標準,實現(xiàn)了對比<類別,開始位置,結(jié)束位置>三元組的計算方法,在計算F1-score時采用的是micro-f1。
本實驗的硬件環(huán)境:CPU為Intel i7 9700K,內(nèi)存為16G RDD4,顯卡為兩塊Nvidia RTX 2080ti,運行環(huán)境為Linux操作系統(tǒng)(Ubuntu 16.04.6)。軟件編程語言為python。
本實驗使用的預訓練模型是哈工大開源的中文預訓練BERT模型“Chinese-bert-wwm”,其中transformer的層數(shù)為L=12,隱藏層維度為768,學習率為2e-6,batch size為8。
3.2.1 數(shù)據(jù)采集
本實驗中使用的景區(qū)評論數(shù)據(jù)均來自旅游網(wǎng)站的公開評論。通過爬蟲采集來自三個旅游網(wǎng)站對于峨眉山和青城山景區(qū)的公開評論,均發(fā)表于2019年。同時對爬取的原始評論進行了去重和篩選的操作,去除了無效的評論(如從攜程網(wǎng)站爬取的評論中存在系統(tǒng)默認評論,“用戶未點評,系統(tǒng)默認好評”,以及毫無含義的評論),并將評論長度限制在200個字之內(nèi)。
3.2.2 數(shù)據(jù)標注方法
數(shù)據(jù)標注參考了英文數(shù)據(jù)集中SemEval-2014提供的標注方法,將標注分為方面詞、意見詞、情感分類以及類別四個維度。
關(guān)于方面詞以及意見詞的劃分,由兩位專業(yè)人員分別對所有的句子獨立進行標注,再討論并消除有分歧的地方??紤]到ABSA其他子任務(wù)的情況,標注方式為,以方面詞為單位標記<方面詞,意見詞,類別,情感>四元組,同時提供詞語(包含方面詞和意見詞)開始和結(jié)束位置標記。一個評論句中可能會有多組標記四元組。我們僅保留具有有效意見詞的四元組,方面詞缺失標記為“_”。
關(guān)于類別劃分,根據(jù)標注經(jīng)驗總結(jié)出7個預定義的類別,分別是:景區(qū)、風景、票務(wù)、體驗、消費、服務(wù)以及旅游團。其中“景區(qū)”這一類別包含了一些描述范圍模糊以及較難分類的情況,和SemEval-2014中的Others接近。
3.2.3 數(shù)據(jù)集分析
標注完成的數(shù)據(jù)集共有1 746條獨立的評論,共3 155個標記四元組。其中方面詞缺失的四元組約占20%。情感極性以及類別標記情況如表1所示。
表1 數(shù)據(jù)標記分析
在整個細粒度情感分析的任務(wù)中,文中所解決的問題只是其中一個子任務(wù)。構(gòu)造的標注數(shù)據(jù)集不僅可以用于當前任務(wù),也可以用于探索ABSA的其他子任務(wù),因而采取了更為完整的四元組標注方式,希望可以為之后的研究者提供中文語料。
3.3.1 意見挖掘模型中分類任務(wù)評估與分析
由于在旅游領(lǐng)域中類別較多,為了進一步了解模型在分類上的學習情況,文中對比了同一模型在不同類別上的表現(xiàn),結(jié)果如表2所示,可以看到同一模型在不同類別上的效果也存在差異。
表2 模型在不同類別上的表現(xiàn)
模型在“消費”和“票務(wù)”兩個類別上表現(xiàn)較好,得分較低的三個分類分別為“景區(qū)”、“旅游團”和“體驗”??傮w而言,標記數(shù)據(jù)數(shù)量越多,在模型上的效果越好?!胺?wù)”和“景區(qū)”兩個類別比較特殊,“服務(wù)”類別的標記數(shù)量最少,但得分較高,“景區(qū)”類別的標記數(shù)量最多,反而得分比較低。觀察了測試結(jié)果之后發(fā)現(xiàn),“服務(wù)”類別雖然數(shù)量較少,但意見詞和上下文語境相對比較集中。而“景區(qū)”的意見詞和上下文語境較為分散,包含了無法準確分類的部分意見組合,特征相對其他類別并不明顯,所以各項得分均處于低位。其中意見詞和上下文語境特殊性的作用在其他類別的測試結(jié)果中也有所體現(xiàn)。
比如最頻繁出現(xiàn)的意見詞“好”和“棒”,由于指定性不強,會存在被錯誤分類成數(shù)據(jù)量更大的上下文類別的情況。但“體驗”類別中“不虛此行”和“消費”類別中的“貴”這樣比較特殊的意見詞,抽取和分類的準確率都更高。
3.3.2 旅游評論意見挖掘模型評估與分析
本節(jié)將提出方法與現(xiàn)有方法相比較,使用準確率(precision)、召回率(recall)和F1-score指標評估模型性能。
如表3所示,在使用構(gòu)建的旅游數(shù)據(jù)集的情況下,文中提出的基于BERT和指針網(wǎng)絡(luò)的方法在測試集上準確率可達到81.9%,F(xiàn)1-score可達到79.6%。
表3 不同模型效果比較
設(shè)計了兩組對比實驗進行評估。首先將經(jīng)典序列標注模型BiLSTM結(jié)合CRF作為基線,由圖3可以看出,同樣以CRF作為解碼結(jié)構(gòu),即使在領(lǐng)域語料規(guī)模較小的情況下,使用BERT作為編碼模塊的效果依然要好于結(jié)構(gòu)相對簡單的BiLSTM。表現(xiàn)在最終的F1值上,以BERT為編碼模塊的模型得分高出將近0.3%,這證明了BERT作為編碼模塊相比word2vec與BiLSTM編碼可以生成更有效的句子表示。
圖3 旅游評論意見挖掘不同模型比較
在解碼方式的對比上,本實驗設(shè)計了序列標注任務(wù)中經(jīng)典的解碼方式CRF,與提出的指針網(wǎng)絡(luò)進行對比。從圖中可以看出,從實驗最終的的效果來看,指針網(wǎng)絡(luò)模型最終的F1得分要稍高于CRF,高出約1%。同時,在訓練的過程中,觀察最終不同類別各自的得分,CRF會出現(xiàn)由于訓練數(shù)據(jù)不夠充分,導致得分偏高的情況,而指針網(wǎng)絡(luò)相比而言則要更加穩(wěn)定。
由上述分析可知,文中提出的方法相比于經(jīng)典序列標注方法,在解碼上使用BERT生成了更為有效的句子表示。在編碼上,以指針網(wǎng)絡(luò)作為解碼網(wǎng)絡(luò)相比CRF,在準確率和F1-score上均有提升。
隨著旅游類互聯(lián)網(wǎng)產(chǎn)品的興起,網(wǎng)絡(luò)上產(chǎn)生了大量針對目的景點的主觀評論,通過對評論進行意見挖掘可為旅游監(jiān)管提供重要依據(jù)。在此背景下,文中結(jié)合方面級情感分析中意見詞抽取和類別分類兩個子任務(wù),提出了基于BERT的端到端評論意見挖掘模型,得到<意見詞,類別>二元組,以形成完整的觀點表達,并應(yīng)用于實際的評論分析中。和現(xiàn)有的序列標注模型相比,文中提出的模型具備更好的性能。此外,還構(gòu)建了中文旅游評論數(shù)據(jù)集,供此后相關(guān)任務(wù)的研究。
目前該研究還有可以改進的地方。比如,由于方面級情感分析領(lǐng)域數(shù)據(jù)標記成本較高的原因,標記數(shù)據(jù)的數(shù)量往往非常少,文中提出的數(shù)據(jù)集規(guī)模也并不大,在這種情況下模型受數(shù)據(jù)約束的影響比較大。在實驗中,BERT由于復雜度較高,在較小規(guī)模的領(lǐng)域數(shù)據(jù)集上,整體效果相比BiLSTM難以有很大的提升。利用已有的領(lǐng)域數(shù)據(jù)集進行知識遷移可能是一個比較有效的解決小數(shù)據(jù)量問題的思路。因此在未來的研究中,可考慮使用知識遷移的方法,解決方面級情感分析中領(lǐng)域數(shù)據(jù)缺少的問題。