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