王 濤,劉立波
(寧夏大學(xué) 信息工程學(xué)院,寧夏 銀川 750021)
酒店在線評論文本客觀真實地反映了消費者入住體驗,是消費者對酒店服務(wù)的真實感知,其中包含大量評論觀點,及時有效獲取評論觀點對酒店經(jīng)營具有很高的價值。酒店評論文本觀點抽取是抽取酒店屬性詞與評價詞組合而成的短語。屬性詞通常為描述酒店的某一特征。評價詞是用來表達消費者的觀點態(tài)度,多數(shù)是形容詞,但也有少量具有情感傾向的名詞或動詞[1]。例如酒店評論中的一個評論句子:“服務(wù)專業(yè)熱情,房間設(shè)備干凈整潔完善,自助早餐品種眾多”。其中,“服務(wù)”、“房間設(shè)備”、“自助早餐品種”是屬性詞,“專業(yè)熱情”、“干凈整潔完善”、“眾多”是評價詞,它們分別被用來表達消費者對該酒店“服務(wù)”、“房間”、“自助早餐”滿意的態(tài)度。
目前,評論觀點抽取方法一般分為兩大類:一類是基于傳統(tǒng)自然語言處理技術(shù)的方法,這類方法將詞性、句法依存信息等作為表征句子的特征信息,從而制定觀點抽取規(guī)則抽取評論中觀點。例如,Hu 等[2]首次提出使用關(guān)聯(lián)規(guī)則實現(xiàn)觀點抽取,只能顯式地抽取評論文本中部分觀點;Li 等[3]使用依存關(guān)系從影評中抽取“評價對象-評價意見”單元對;Qiu 等[4]利用依存關(guān)系獲得屬性詞與評價詞之間的關(guān)系模板,從而根據(jù)屬性詞抽取評價詞,根據(jù)評價詞抽取屬性詞。以上基于規(guī)則的方法依賴于領(lǐng)域?qū)<抑贫ǖ囊?guī)則,規(guī)則多而復(fù)雜,人工構(gòu)造難,且遷移性差,無法抽取規(guī)則之外的屬性。另一類是近幾年流行起來的神經(jīng)網(wǎng)絡(luò)方法,這類方法利用神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)性質(zhì)對句子建模表征后抽取觀點。例如,Liu 等[5]首次將長短期記憶網(wǎng)絡(luò)應(yīng)用于觀點抽取任務(wù),相較于根據(jù)規(guī)則抽取觀點的方法,該方法取得了更優(yōu)的性能。2016 年,Toh 等[6]提出將雙向循環(huán)神經(jīng)網(wǎng)絡(luò)與CRF相結(jié)合的方法,在SemEval 屬性級情感分析評測任務(wù)中性能達到最優(yōu)。盡管如此,第二類方法需人工標(biāo)注數(shù)據(jù)訓(xùn)練模型,存在評論數(shù)據(jù)量大、標(biāo)注工作繁重等問題,且數(shù)據(jù)集質(zhì)量易受主觀標(biāo)注影響??傊@兩類方法前期都需人工處理數(shù)據(jù),耗費了大量的時間和精力。
針對上述問題,該系統(tǒng)基于Web 技術(shù),以酒店評論文本觀點抽取為研究對象,利用聚類的方法,采用Django 框架對系統(tǒng)功能模塊進行封裝,實現(xiàn)了酒店評論文本觀點的快速抽取。無論是對消費者選擇酒店的效率,還是酒店經(jīng)營者管理酒店的效率,都有很大程度上的提升。
該系統(tǒng)采用的酒店評論數(shù)據(jù)爬取自大眾點評門戶網(wǎng)站,去除用戶名、時間等網(wǎng)頁結(jié)構(gòu)元素后,評論語句數(shù)據(jù)量可達57 805 條,共55 家酒店評論文本,單個酒店評論數(shù)量最多有5 468 條,最少有5 條。為了保證聚類的效果,去除了評論條數(shù)少于10 的酒店。經(jīng)過上述處理后,評論語句文本數(shù)據(jù)總量共57 733 條,共46 家酒店評論數(shù)據(jù),單個酒店評論數(shù)量最多有5 468 條,最少有11 條,符合實驗要求。
該系統(tǒng)采用B/S 架構(gòu),共分導(dǎo)航層、后臺離線分析層、前端展示層和數(shù)據(jù)層4 層。導(dǎo)航層主要作用是為用戶提供清晰的導(dǎo)航,方便用戶操作;后臺離線分析層和前端展示層采用后臺離線分析-前端延遲查詢的方法,旨在消除后臺耗時分析操作對用戶體驗的影響。其中,后臺離線分析層由評論文本預(yù)處理、構(gòu)建句向量、降維和聚類、冗余觀點合并5 個模塊組成。數(shù)據(jù)層存儲由后臺離線分析得到的數(shù)據(jù),為前端展示延遲查詢提供數(shù)據(jù)支持,系統(tǒng)流程見圖1。
圖1 系統(tǒng)流程
數(shù)據(jù)預(yù)處理主要分為數(shù)據(jù)清洗及長句切分2 個部分。(1)數(shù)據(jù)清洗:去除評論語句中的網(wǎng)頁標(biāo)簽、表情等特殊字符、非中文字符(不包括標(biāo)點符號)、停用詞,旨在消除數(shù)據(jù)噪聲對實驗結(jié)果的影響[7—9]。(2)長句切分:由于一條評論語句中包含了消費者對酒店不同屬性的評價,如“服務(wù)專業(yè)熱情,房間設(shè)備干凈整潔完善,自助早餐品種眾多”,該評論語句中包含了消費者對酒店“服務(wù)”、“房間設(shè)備”、“自助早餐品種”等屬性的評價,為了完整地提取出評論語句中不同的觀點,按標(biāo)點符號將長句切分為短句,并記錄下由原始評論語句索引、短句在原評論語句中的位置索引及短句內(nèi)容組成的三元組,示例見表1。
表1 長句切分結(jié)果表
計算機無法直接對文本進行計算,需將文本轉(zhuǎn)化為向量表示才能計算文本中的信息。構(gòu)建句向量分為以下3 步:
(1)對于一個待抽取短句S={w1,w2,…,wn},初始化每個詞的分布式表示;
(2)采用word2vec 模型訓(xùn)練詞向量wi={wv1,wv2,…,wv300}(i=1,2,3,…,n)作為詞義的分布式表示;
(3)由于一個短句中包含多個詞語,因此可將各個短句中每一個詞向量求和取平均數(shù),如式(1)所示,構(gòu)建一維度為300 的短語句向量SV={ v1,v2,…,v300}。
式(1)中:SV 為短語句向量;wi為詞向量;n 為短語句中的單詞數(shù)。
為了提升酒店評論文本觀點的抽取速率,通過對中文評論文本觀點抽取方法的研究,采用降維和聚類的方法對觀點進行抽取。降維聚類流程見圖2。首先,采用t-SNE 算法(T 分布和隨機近鄰嵌入算法)將300 維短語句向量降至2 維,緩解了維度災(zāi)難導(dǎo)致觀點提取速度慢的問題;然后,采用DB-SCAN聚類算法(具有噪聲的基于密度的聚類算法)對2維短語句向量進行聚類。為了使聚類效果達到最佳,采用Calinski-Harabasz 系數(shù)作為評價指標(biāo),用網(wǎng)格搜索法設(shè)置DB-SCAN 聚類算法的參數(shù)值:樣本的鄰域距離閾值和樣本的距離閾值內(nèi)的鄰域中樣本個數(shù)閾值,作DBSCAN 聚類參數(shù)調(diào)整圖(圖3),取離散點個數(shù)少、Calinski-Harabasz 系數(shù)高位置所在的參數(shù)作為DBSCAN 聚類算法的參數(shù);接著,經(jīng)式(2)計算每一簇中一向量與其余向量的歐式距離之和di:
圖2 降維聚類流程圖
圖3 DBSCAN 聚類參數(shù)調(diào)整圖
式中,n 為每一簇中短句的數(shù)量;(xi,yi)為短語句向量,取距離之和最小者min(d1,d2,d3,…,dn) 作為中心句。最后,統(tǒng)計每一簇中心句所對應(yīng)類別的數(shù)量。
因為聚類得到的類別“長尾”現(xiàn)象嚴(yán)重,即觀點冗余度大,如“交通方便”與“交通便利”、“早餐豐盛”與“早餐豐富”、“服務(wù)很好”與“服務(wù)優(yōu)”等觀點相關(guān)度很大,所以需要對冗余的觀點進行合并處理。首先,計算觀點間的Pearson 相關(guān)系數(shù),然后設(shè)定Pearson 相關(guān)系數(shù)的閾值,將大于設(shè)定閾值的觀點合并,并選擇對應(yīng)評論語句數(shù)量較多的觀點作為冗余觀點的中心句,累加冗余觀點的數(shù)量,合并公式:
式中,Nview為觀點對應(yīng)的評論語句數(shù)量;Nviewi為除觀點view 外其他觀點viewi對應(yīng)的評論語句數(shù)量;P=Pearson(view,viewi)(view≠viewi)為觀點view 與其余觀點viewi的Pearson 相關(guān)系數(shù);th 為閾值;最后,將原始評論語句索引、短句在原評論語句中的位置索引、簇標(biāo)簽存入MySQL 數(shù)據(jù)庫,為觀點標(biāo)注和展示作準(zhǔn)備。
觀點標(biāo)注和展示即標(biāo)注出所有觀點在評論語句中出現(xiàn)的位置和展示觀點抽取的結(jié)果。為了能直觀展示觀點標(biāo)注和抽取結(jié)果,首先,采用HTML5 語言對前端界面進行設(shè)計,并使用AmazeUI 對界面進行美化;然后,前端采用延遲查詢的方法從MySQL數(shù)據(jù)庫中查找上傳評論文本對應(yīng)的觀點、觀點對應(yīng)評論數(shù)量、原始評論語句索引、短句位置索引、簇標(biāo)簽等屬性,將其組織成json 數(shù)據(jù),通過Django 框架中的request 對象將json 數(shù)據(jù)傳遞到前端,采用JavaScript 語言解析并展示前端界面。
該次測試是通過人工分析使用Pearson 相關(guān)系數(shù)合并冗余觀點后的結(jié)果,判斷經(jīng)冗余觀點合并處理后是否解決了觀點冗余度大的問題,部分冗余觀點合并結(jié)果見表2。中心句“服務(wù)很好”對應(yīng)的“服務(wù)熱情”、“服務(wù)好”等觀點都在語義上一致,因此冗余觀點合并效果良好。
表2 冗余觀點合并結(jié)果表
界面測試主要測試界面的2 個方面:①界面一致性,測試使用HTML 語言設(shè)計編寫并使用AmazeUI 美化的界面是否和預(yù)期的界面一致;②數(shù)據(jù)處理正確性,測試jsp 代碼是否能正確處理后臺傳遞到前端的數(shù)據(jù)。界面測試結(jié)果見圖4。界面設(shè)計能達到預(yù)期要求,且數(shù)據(jù)顯示正常。
圖4 界面測試結(jié)果圖
為了測試系統(tǒng)的負(fù)載承受能力,防止系統(tǒng)在處理大量數(shù)據(jù)時出現(xiàn)系統(tǒng)崩潰或“假死”現(xiàn)象,選取評論數(shù)量最多的酒店評論文本,共5 468 條酒店評論語句進行觀點抽取性能測試,測試系統(tǒng)運行時間、CPU占用率、內(nèi)存消耗。性能測試結(jié)果見表3,對5 468 條評論語句,該系統(tǒng)平均能在0.03 s 內(nèi)完成每條評論語句觀點的抽取,觀點抽取速度快,所耗資源少。相較于人工標(biāo)注尋找評論觀點的方式,效率明顯提升。
表3 性能測試結(jié)果表
本文設(shè)計的基于Web 的酒店評論文本觀點抽取系統(tǒng)采用聚類的方法,避免繁重的數(shù)據(jù)處理工作,實現(xiàn)了酒店評論文本觀點的快速抽取。實驗結(jié)果表明,對于5 468 條評論,該系統(tǒng)能在157.81 s 內(nèi)完成酒店評論觀點的抽取,相較于人工構(gòu)建抽取規(guī)則及標(biāo)注數(shù)據(jù)集訓(xùn)練模型的方式,效率顯著提升,滿足實際需求。
然而,該系統(tǒng)尚處于開發(fā)測試階段,仍存在一些不足:一是忽視了隱性冗余觀點的合并,“交通便利”與“靠近火車站”等在潛在語義上冗余的觀點也需要進行合并,以提升系統(tǒng)的可靠性;二是對評論數(shù)量較少的酒店,該系統(tǒng)只是做了簡單的去除操作,對系統(tǒng)泛化能力有一定的影響。今后工作將圍繞這兩個不足展開,提出良好的解決方法,打造更加完美的酒店評論文本觀點抽取系統(tǒng)。