楊 明
(復(fù)旦大學(xué)軟件學(xué)院 上海 200000)
如今大量消費(fèi)者在網(wǎng)絡(luò)上購買酒店服務(wù),用戶產(chǎn)生的評論非常多。當(dāng)別的用戶消費(fèi)時通常會參考這些評論,同時商家也關(guān)心如何利用這些評論[1]來改進(jìn)服務(wù)質(zhì)量。因為各種各樣的利益,虛假評論在這個過程當(dāng)中大量產(chǎn)生,使得消費(fèi)者難以獲得真實準(zhǔn)確的信息[2]。為了創(chuàng)造一個健康的電子商務(wù)環(huán)境,我們需要識別虛假評論。
虛假評論識別是一個新的研究領(lǐng)域,目前有很多方法。很早的時候有一些非機(jī)器學(xué)習(xí)的辦法,后來隨著機(jī)器學(xué)習(xí)方法的發(fā)展,許多基于機(jī)器學(xué)習(xí)的方法被提了出來,這些方法大多數(shù)使用特征工程,比如使用評論文本和評論提供者的特征[3]。這類任務(wù)需要完成大量的數(shù)據(jù)標(biāo)注,通常因為工作量太大而造成了標(biāo)注數(shù)據(jù)集缺失[4]。近期的研究開始轉(zhuǎn)向基于深度學(xué)習(xí)的方法[5-6],這些方法在相關(guān)任務(wù)上取得了較好的效果。
本文針對傳統(tǒng)酒店領(lǐng)域的評論還存在數(shù)據(jù)稀少、不利于深度學(xué)習(xí)的問題,提出一種無監(jiān)督的數(shù)據(jù)增強(qiáng)方法。增強(qiáng)后的數(shù)據(jù)進(jìn)入卷積神經(jīng)網(wǎng)絡(luò)對比原始的小樣本數(shù)據(jù)集取得了較好的結(jié)果。
虛假評論識別主要方法包括基于文本解析的方法和基于機(jī)器學(xué)習(xí)的方法。基于文本解析的方法主要包括兩種類型:一種是基于語料的方法,這種方法有較好的領(lǐng)域針對性,比如對不同的情感詞在不同領(lǐng)域賦予不同的含義和情感[7];另一種是基于字典的方法,文獻(xiàn)[8]表明基于字典的方法在論文中的數(shù)據(jù)集上獲得了78%的準(zhǔn)確率,這種方法常因為找不到針對特定領(lǐng)域的意見詞而受到限制?;跈C(jī)器學(xué)習(xí)的方法主要包括有監(jiān)督學(xué)習(xí)的辦法和無監(jiān)督學(xué)習(xí)的辦法。有監(jiān)督學(xué)習(xí)方法主要包括決策樹[9]、基于規(guī)則的方法、貝葉斯網(wǎng)絡(luò)[10]、SVM[11]等,它們各自在一些任務(wù)上表現(xiàn)良好。無監(jiān)督學(xué)習(xí)的方法主要有二次聚類、k-means聚集等方法[12-13]。有的研究將文本解析與評論者的特點(diǎn)結(jié)合起來,例如將文本與評論者特點(diǎn)結(jié)合起來,使用內(nèi)容相似性、評論平均長度、重復(fù)評級行為[4]、相關(guān)知識[14]和情感極性等來增強(qiáng)辨別真?zhèn)蔚男Ч鸞15]。隨著深度學(xué)習(xí)的興起,一些新的基于深度學(xué)習(xí)的方法被提出來,例如,聯(lián)合行業(yè)知識方法[6]、利用詞向量的深度學(xué)習(xí)模型[5]和對抗神經(jīng)網(wǎng)絡(luò)[16]等。最近意見挖掘的工作有研究針對文本當(dāng)中特定實體(稱為aspect)進(jìn)行情感識別。文獻(xiàn)[17]指出在“Yesterday, I bought a new smartphone.The quality of the display is very good, but the battery lasts too little.”當(dāng)中能識別出兩個aspect 即display與battery,它們分別對應(yīng)的情感是非常好和一般。卷積神經(jīng)網(wǎng)絡(luò)也在文本分類任務(wù)中表現(xiàn)出色。文獻(xiàn)[18]設(shè)計了一種非常深的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)能夠在字符級別上面運(yùn)行,在文本分類任務(wù)上表現(xiàn)出色。
本文提出一種結(jié)合數(shù)據(jù)增強(qiáng)、無監(jiān)督學(xué)習(xí)aspect級別情感和文本卷積神經(jīng)網(wǎng)絡(luò)的方法,稱為H-text-cnn。該方法首先對單條評論進(jìn)行EDA增強(qiáng),然后用無監(jiān)督aspect級別情感識別方法獲得單條評論中的情感數(shù)據(jù),最后將這些數(shù)據(jù)處理過后帶入到卷積神經(jīng)網(wǎng)絡(luò)中得到虛假評論識別的結(jié)果。實驗結(jié)果表明本文方法在實驗的數(shù)據(jù)集上比傳統(tǒng)方法獲得了很好的提升。本文方法的架構(gòu)如圖1所示。
圖1 H-textcnn
EDA(Easy Data Augumentation)由學(xué)者Wei等[19]提出,主要過程是對原來的文本進(jìn)行一些如替換、插入、隨機(jī)交換等方式的操作,使得原來一條文本變成幾條經(jīng)過上述方式修改過后的文本。作者稱當(dāng)對數(shù)據(jù)集的文本進(jìn)行EDA后,對應(yīng)的分類實驗效果得到了提升。本文將它用于酒店領(lǐng)域評論的增強(qiáng),每一條評論獲得10條增強(qiáng)評論,增強(qiáng)數(shù)據(jù)對應(yīng)的分類標(biāo)簽不改變。文獻(xiàn)[19]方法的處理過程如下:
(1) 同義詞替換,從單條評論中選擇幾個不是停用詞的詞語進(jìn)行同義詞替換。
(2) 隨機(jī)插入,在單條評論任意位置插入不是停用詞的詞語的同義詞n次。
(3) 隨機(jī)交換,隨機(jī)交換單條評論中任何詞語的位置n次。
(4) 隨機(jī)刪除,以概率p隨機(jī)移除單條評論中的每個詞。
經(jīng)上述EDA增強(qiáng)處理,原來的數(shù)據(jù)集被增強(qiáng)為一個很大的數(shù)據(jù)集。實驗參數(shù)的設(shè)置請參考實驗部分。下面是原評價經(jīng)過EDA增強(qiáng)處理過后的例子:
原評價:Excellent staff and customer service,very clean and spotless elegant and luxurious with a beautiful ocean view. The bed is very comfortable and relaxing. I give it a five star.
EDA: excellent staff and customer service very clean and spotless light elegant and luxurious with a beautiful ocean view lighting the bed is very comfortable and leading relaxing I give it a five star
文獻(xiàn)[4]表明極端的情感傾向和虛假評論有顯著的相關(guān)性。文獻(xiàn)[15]在虛假評論識別過程中加入情感識別的步驟,提高了對餐廳虛假評論識別的準(zhǔn)確率。文獻(xiàn)[17]表明細(xì)粒度的感情對整體感情傾向的識別非常重要,因為用戶可能對評論主體的一個方面的情感是積極的,但是對另一個方面的情感是消極的。李彬等[20]在酒店服務(wù)質(zhì)量管理中指出,酒店六大維度點(diǎn)評內(nèi)容分別是餐飲、價格、位置、服務(wù)、設(shè)施和衛(wèi)生。為了方便本文模型識別,本文選取了前四項作為本文的aspects。
當(dāng)完成EDA數(shù)據(jù)增強(qiáng)后,本文利用前人提出的依存句法無監(jiān)督aspect情感分析[17]和結(jié)合領(lǐng)域知識[20]的情感分析[6]方法,進(jìn)行融合提出一種針對酒店評論結(jié)合領(lǐng)域知識的依存句法無監(jiān)督學(xué)習(xí)aspect情感的方法。本文使用以下兩條規(guī)則:
(1) 當(dāng)評論中依存關(guān)系是amod(形容詞修飾),當(dāng)評論是涉及到酒店消費(fèi)領(lǐng)域的aspect,當(dāng)支配者是可能的aspect,被支配者是情感詞。這個時候該關(guān)系可能描述了用戶對酒店屬性的某一方面的情感。如good service表達(dá)了針對服務(wù)aspect積極的情感。
(2) 當(dāng)句子中的依存關(guān)系是nsubj(名詞性主語)且當(dāng)支配者是情感傾向的詞語同時被支配者是酒店消費(fèi)領(lǐng)域有關(guān)酒店屬性的aspect時,該關(guān)系可能描述了用戶對酒店某一方面的情感。如enjoy the service表達(dá)了針對服務(wù)aspect積極的情感。
本文增加了一些新的術(shù)語,以便算法的描述和實現(xiàn):
定義1每一個aspect能被識別出的情感為E0=0、E1=1、E2=-1。分別對應(yīng)情感當(dāng)中的中立(neutral)、積極(positive)和消極(negative)情緒。
定義2酒店消費(fèi)領(lǐng)域四個方面的集合aspects={Service,Location,Price,Food}。
獲取到每條評論中所有的依存關(guān)系后,如其中一條依存關(guān)系如下:
favorite(JJ) ← amod - hotel(NN)
然后計算單條評論每一個依存關(guān)系中aspect的詞和定義2中aspect的情感詞語的相似度,每一個情感詞和定義1中的相似度,來獲得定義2中每個aspect在定義1中的情感。在學(xué)習(xí)到單條評論后,使用加權(quán)的辦法來計算,每一條評論對應(yīng)定義2中aspect在定義1中的情感。計算過程如下:
(1) 當(dāng)從每條評論當(dāng)中學(xué)習(xí)到針對定義2中aspects中一個aspect的情感時,當(dāng)積極情感的數(shù)量多于消極情感的時候,該aspect定義為積極情感。
(2) 當(dāng)從每條評論中學(xué)習(xí)到的消極情感的數(shù)量多于積極情感的時候,該aspect定義為消極情感。確定針對某一aspect的積極或消極情感計算式表示為:
(1)
式中:k是在一條評論中針對某aspecti積極情感個數(shù);j是在一條評論中針對aspecti消極情感個數(shù);P代表積極情感;N代表消極情感;E為最終該aspect的情感;f-1表示對所得到的積極情感和消極情感的個數(shù)進(jìn)行統(tǒng)計,取最多積極或消極的情感個數(shù)的情感作為本條評論的aspect的情感。
(3) 當(dāng)該評論中沒有學(xué)習(xí)到針對定義2中積極情感和消極情感時,該aspect定義為中立情感。
本文分別從酒店的定義2中四個方面對情感進(jìn)行了無監(jiān)督學(xué)習(xí),四個aspect相關(guān)的部分詞語如表1所示。
表1 四個aspect相關(guān)的部分詞語舉例
從評論當(dāng)中可以學(xué)習(xí)到不同aspect的情感。例如,從下面這條評論中學(xué)習(xí)得到的定義2中的aspect情感中的Location為neutral、Service為neutral、Price為neutral、Food為positive。
How should I start? Well, after staying at the Ambassador East Hotel, I realized it was my favorite hotel ever. The rooms are amazing. The food is great. The Pump room bar is awesome. I love this hotel. If your ever in Chicago, the Ambassador East Hotel is the place to go.
本節(jié)將上面擴(kuò)充好的數(shù)據(jù)集轉(zhuǎn)化為向量集合,同時將學(xué)習(xí)到的aspect級別情感的數(shù)據(jù)與之進(jìn)行拼接。本文采用Keras提供的Embedding(嵌入)層庫函數(shù)學(xué)到數(shù)據(jù)集中每個詞語的詞向量。這里文檔數(shù)量由數(shù)據(jù)增強(qiáng)后的文檔數(shù)量K_au決定,其類標(biāo)簽由原來對應(yīng)的評論文本決定。為此,先對預(yù)處理過后的評論使用one-hot編碼,然后將每一個文本向量進(jìn)行填充至最大長度max_len,該最大長度由數(shù)據(jù)集中最長的評論決定。然后再使用無監(jiān)督方式獲得的情感對該向量v_emo進(jìn)行拼接得到包含aspect級別情感的向量,最后輸入到Keras的嵌入層。接下來使用一個三層的卷積層,每個卷積層后面加了一個池化層。最后分別加了一個規(guī)范化層和兩個Dense(全連接)層。整個神經(jīng)網(wǎng)絡(luò)以及各部分的參數(shù)設(shè)置如圖2所示,實驗具體的參數(shù)參考實驗設(shè)置部分。
圖2 卷積神經(jīng)網(wǎng)絡(luò)模型
本文使用芝加哥地區(qū)的酒店評論的數(shù)據(jù)集,該數(shù)據(jù)集由康奈爾大學(xué)提供[16]。這個數(shù)據(jù)集分成兩部分,一部分是由積極情感表述的數(shù)據(jù)構(gòu)成,另一部分是由消極情緒組成。每一部分包含800條數(shù)據(jù)。每一部分由400條虛假評論和400條真實評論構(gòu)成。其中,真實評論來源于旅游點(diǎn)評網(wǎng)站;虛假評論來自于亞馬遜的眾包平臺。要求該平臺每一個人只能撰寫一條虛假評論。在真實評論的收集過程中,針對不同的酒店該數(shù)據(jù)集對負(fù)面評論僅允許一星或兩星的評論。這些評論的平均字?jǐn)?shù)為116個詞左右。
對酒店評論進(jìn)行了一系列的預(yù)處理,將數(shù)據(jù)集進(jìn)行生成向量的一系列操作。數(shù)據(jù)預(yù)處理分為兩個部分:對每一條評論中的停用詞語進(jìn)行抽??;獲取到數(shù)據(jù)集中所有的tokens。對每一條評論進(jìn)行詞語性質(zhì)分析提取形容詞和副詞。另外,使用spacy對酒店知識域中的相關(guān)方面的主語和賓語進(jìn)行提取。獲取到每條評論的one-hot向量。90%的數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集,剩下部分作為測試集合。采用本文提出的架構(gòu)對數(shù)據(jù)集進(jìn)行增強(qiáng)。每次實驗當(dāng)中測試集包含了整個單次實驗中增強(qiáng)前的數(shù)據(jù)集。
本文實驗使用了Google Colab作為基礎(chǔ)的實驗環(huán)境,在預(yù)處理階段,使用Python對兩個數(shù)據(jù)集進(jìn)行了切分。在數(shù)據(jù)增強(qiáng)階段使用了EDA文本增強(qiáng)技術(shù)。EDA數(shù)據(jù)集增強(qiáng)的參數(shù)num_ag為10,修改比列α為默認(rèn)參數(shù)0.05。在無監(jiān)督aspect級別情感學(xué)習(xí)時,使用spacy自然語言解析工具。卷積神經(jīng)網(wǎng)絡(luò)模型的參數(shù)如下:模型的Embedding層是890維的向量,輸出是890×20,在卷積模型部分使用了Keras來構(gòu)建本文的卷積層,具體的參數(shù)參考圖2。在訓(xùn)練過程中epoch為5,batchsize為5。每次訓(xùn)練集均被混洗。在模型的驗證階段使用和對比論文中相同的驗證方式[5]:重復(fù)分層交叉驗證(Rpeated Stratifiled KFold)。其中:重復(fù)次數(shù)為10;劃分參數(shù)為10。該方式能有效地防止過擬合。本文在每次的實驗過程中,使用n-1折的增強(qiáng)數(shù)據(jù)來進(jìn)行訓(xùn)練;使用1折的數(shù)據(jù)進(jìn)行測試。總共進(jìn)行了100次實驗。
本文以100次實驗當(dāng)中1次實驗中對應(yīng)1折當(dāng)中的評論為例,說明完成虛假評論識別的過程。首先數(shù)據(jù)被分為10折,其中9折經(jīng)過H-textcnn進(jìn)行增強(qiáng)和aspect級別的情感識別過后,將對應(yīng)的數(shù)據(jù)經(jīng)過實驗設(shè)置中的方法轉(zhuǎn)化為訓(xùn)練集。在訓(xùn)練集上訓(xùn)練本文設(shè)計的卷積神經(jīng)網(wǎng)絡(luò),最后使用1折中的評論經(jīng)過上述同樣過程后轉(zhuǎn)為向量輸入到訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)后得到分類結(jié)果。如在第21次實驗過程中,其中10條評論被用作測試集。本文選擇如下評論為例:
We just got back from a trip to Chicago for my 30th birthday and we could not have been more impressed by this hotel! Service was excellent, especially the maid service. Our room was so clean and fresh towels brought in daily. The front desk staff was some of the most professional and friendly staff I have ever dealt with while travling. The location is excellent as it is within walking distance of the best restaurants and stores. I highly recommend Affinia for a the perfect family vacation.
此條評論經(jīng)過預(yù)處理過后成為一個one-hot向量,使用無監(jiān)督aspect學(xué)習(xí)到的依存句法關(guān)系有excellent(JJ)←amod—service(NN), friendly(JJ)←amod—staff(NN),best(JJ)←amod—restaurants(NNS)等。進(jìn)行相似度比對和算法處理過后得到定義2中的aspects的情感分別為{positive,positive,neutral,positive},然后將其轉(zhuǎn)為向量與上面的one-hot向量進(jìn)行拼接。將該向量傳入到卷積神經(jīng)網(wǎng)絡(luò)得到分類結(jié)果為該評論為偽造的評論,該結(jié)果與數(shù)據(jù)集中的標(biāo)簽一致。
本文使用了如下的評價指標(biāo)來驗證本文方法的有效性,分別是acc、fn-rate和fp-rate。fp-rate代表了虛假評論被分類為真實評論的比例;fn-rate代表真實評論被分類為虛假評論的比例;acc代表評論被正確分類的比例。計算公式如下:
(2)
(3)
(4)
式中:tp為被模型預(yù)測為真實評論的真實評論的數(shù)量;tn表示被模型預(yù)測為虛假評論的數(shù)量;fp代表的是被模型預(yù)測為真實評論的虛假評論的數(shù)量;fn是被模型預(yù)測為虛假評論的真實評論的數(shù)量。
本文選取的對比方法為樸素貝葉斯、支持向量機(jī)、深度神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)。
對應(yīng)的技術(shù)指標(biāo)實驗結(jié)果數(shù)據(jù)[5]來自于實現(xiàn)相同目的即酒店虛假評論識別,采用的是同樣的數(shù)據(jù)集即3.1節(jié)中描述的數(shù)據(jù)集,同樣的交叉驗證過程即重復(fù)分層交叉驗證,同樣的評價標(biāo)準(zhǔn)。
將本文方法與文獻(xiàn)[5]的方法作比較,它們都基于同樣的領(lǐng)域、目的、數(shù)據(jù)集、評價指標(biāo)和驗證過程,對比結(jié)果如表2所示,其中對比方法的技術(shù)指標(biāo)實驗結(jié)果數(shù)據(jù)來自文獻(xiàn)[16]。
表2 不同方法的技術(shù)指標(biāo)-積極
表3 不同方法的技術(shù)指標(biāo)-消極
表2和表3的結(jié)果說明本文使用的方法比對比方法在評價指標(biāo)上有了明顯的提升。對于實驗性能獲得的顯著提升,本文認(rèn)為是因為進(jìn)行了EDA和無監(jiān)督aspect情感識別的原因。
評論在酒店消費(fèi)當(dāng)中有著非常重要的作用。很多消費(fèi)者通過閱讀酒店評論的辦法來做出消費(fèi)決定。因此有人通過制造虛假評論來影響消費(fèi)者的決定。目前酒店消費(fèi)領(lǐng)域因為各種各樣的原因缺少標(biāo)注的大量樣本的數(shù)據(jù)集,導(dǎo)致針對小樣本的數(shù)據(jù)集識別困難。本文提出一種結(jié)合數(shù)據(jù)增強(qiáng)、無監(jiān)督學(xué)習(xí)aspect級別情感和文本卷積神經(jīng)網(wǎng)絡(luò)的方法。該方法較好地克服了小樣本數(shù)據(jù)集的問題,有效地進(jìn)行了數(shù)據(jù)增強(qiáng)和情感特征增強(qiáng),在實驗的數(shù)據(jù)集上有較好的效果。未來的工作主要包括改進(jìn)新的網(wǎng)絡(luò)結(jié)構(gòu),探索更準(zhǔn)確的細(xì)粒度的情感識別方法,同時也可以進(jìn)一步研究數(shù)據(jù)增強(qiáng)辦法。