楊 明
(復旦大學軟件學院 上海 200000)
如今大量消費者在網絡上購買酒店服務,用戶產生的評論非常多。當別的用戶消費時通常會參考這些評論,同時商家也關心如何利用這些評論[1]來改進服務質量。因為各種各樣的利益,虛假評論在這個過程當中大量產生,使得消費者難以獲得真實準確的信息[2]。為了創造一個健康的電子商務環境,我們需要識別虛假評論。
虛假評論識別是一個新的研究領域,目前有很多方法。很早的時候有一些非機器學習的辦法,后來隨著機器學習方法的發展,許多基于機器學習的方法被提了出來,這些方法大多數使用特征工程,比如使用評論文本和評論提供者的特征[3]。這類任務需要完成大量的數據標注,通常因為工作量太大而造成了標注數據集缺失[4]。近期的研究開始轉向基于深度學習的方法[5-6],這些方法在相關任務上取得了較好的效果。
本文針對傳統酒店領域的評論還存在數據稀少、不利于深度學習的問題,提出一種無監督的數據增強方法。增強后的數據進入卷積神經網絡對比原始的小樣本數據集取得了較好的結果。
虛假評論識別主要方法包括基于文本解析的方法和基于機器學習的方法。基于文本解析的方法主要包括兩種類型:一種是基于語料的方法,這種方法有較好的領域針對性,比如對不同的情感詞在不同領域賦予不同的含義和情感[7];另一種是基于字典的方法,文獻[8]表明基于字典的方法在論文中的數據集上獲得了78%的準確率,這種方法常因為找不到針對特定領域的意見詞而受到限制。基于機器學習的方法主要包括有監督學習的辦法和無監督學習的辦法。有監督學習方法主要包括決策樹[9]、基于規則的方法、貝葉斯網絡[10]、SVM[11]等,它們各自在一些任務上表現良好。無監督學習的方法主要有二次聚類、k-means聚集等方法[12-13]。有的研究將文本解析與評論者的特點結合起來,例如將文本與評論者特點結合起來,使用內容相似性、評論平均長度、重復評級行為[4]、相關知識[14]和情感極性等來增強辨別真偽的效果[15]。隨著深度學習的興起,一些新的基于深度學習的方法被提出來,例如,聯合行業知識方法[6]、利用詞向量的深度學習模型[5]和對抗神經網絡[16]等。最近意見挖掘的工作有研究針對文本當中特定實體(稱為aspect)進行情感識別。文獻[17]指出在“Yesterday, I bought a new smartphone.The quality of the display is very good, but the battery lasts too little.”當中能識別出兩個aspect 即display與battery,它們分別對應的情感是非常好和一般。卷積神經網絡也在文本分類任務中表現出色。文獻[18]設計了一種非常深的卷積神經網絡結構,該結構能夠在字符級別上面運行,在文本分類任務上表現出色。
本文提出一種結合數據增強、無監督學習aspect級別情感和文本卷積神經網絡的方法,稱為H-text-cnn。該方法首先對單條評論進行EDA增強,然后用無監督aspect級別情感識別方法獲得單條評論中的情感數據,最后將這些數據處理過后帶入到卷積神經網絡中得到虛假評論識別的結果。實驗結果表明本文方法在實驗的數據集上比傳統方法獲得了很好的提升。本文方法的架構如圖1所示。

圖1 H-textcnn
EDA(Easy Data Augumentation)由學者Wei等[19]提出,主要過程是對原來的文本進行一些如替換、插入、隨機交換等方式的操作,使得原來一條文本變成幾條經過上述方式修改過后的文本。作者稱當對數據集的文本進行EDA后,對應的分類實驗效果得到了提升。本文將它用于酒店領域評論的增強,每一條評論獲得10條增強評論,增強數據對應的分類標簽不改變。文獻[19]方法的處理過程如下:
(1) 同義詞替換,從單條評論中選擇幾個不是停用詞的詞語進行同義詞替換。
(2) 隨機插入,在單條評論任意位置插入不是停用詞的詞語的同義詞n次。
(3) 隨機交換,隨機交換單條評論中任何詞語的位置n次。
(4) 隨機刪除,以概率p隨機移除單條評論中的每個詞。
經上述EDA增強處理,原來的數據集被增強為一個很大的數據集。實驗參數的設置請參考實驗部分。下面是原評價經過EDA增強處理過后的例子:
原評價: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
文獻[4]表明極端的情感傾向和虛假評論有顯著的相關性。文獻[15]在虛假評論識別過程中加入情感識別的步驟,提高了對餐廳虛假評論識別的準確率。文獻[17]表明細粒度的感情對整體感情傾向的識別非常重要,因為用戶可能對評論主體的一個方面的情感是積極的,但是對另一個方面的情感是消極的。李彬等[20]在酒店服務質量管理中指出,酒店六大維度點評內容分別是餐飲、價格、位置、服務、設施和衛生。為了方便本文模型識別,本文選取了前四項作為本文的aspects。
當完成EDA數據增強后,本文利用前人提出的依存句法無監督aspect情感分析[17]和結合領域知識[20]的情感分析[6]方法,進行融合提出一種針對酒店評論結合領域知識的依存句法無監督學習aspect情感的方法。本文使用以下兩條規則:
(1) 當評論中依存關系是amod(形容詞修飾),當評論是涉及到酒店消費領域的aspect,當支配者是可能的aspect,被支配者是情感詞。這個時候該關系可能描述了用戶對酒店屬性的某一方面的情感。如good service表達了針對服務aspect積極的情感。
(2) 當句子中的依存關系是nsubj(名詞性主語)且當支配者是情感傾向的詞語同時被支配者是酒店消費領域有關酒店屬性的aspect時,該關系可能描述了用戶對酒店某一方面的情感。如enjoy the service表達了針對服務aspect積極的情感。
本文增加了一些新的術語,以便算法的描述和實現:
定義1每一個aspect能被識別出的情感為E0=0、E1=1、E2=-1。分別對應情感當中的中立(neutral)、積極(positive)和消極(negative)情緒。
定義2酒店消費領域四個方面的集合aspects={Service,Location,Price,Food}。
獲取到每條評論中所有的依存關系后,如其中一條依存關系如下:
favorite(JJ) ← amod - hotel(NN)
然后計算單條評論每一個依存關系中aspect的詞和定義2中aspect的情感詞語的相似度,每一個情感詞和定義1中的相似度,來獲得定義2中每個aspect在定義1中的情感。在學習到單條評論后,使用加權的辦法來計算,每一條評論對應定義2中aspect在定義1中的情感。計算過程如下:
(1) 當從每條評論當中學習到針對定義2中aspects中一個aspect的情感時,當積極情感的數量多于消極情感的時候,該aspect定義為積極情感。
(2) 當從每條評論中學習到的消極情感的數量多于積極情感的時候,該aspect定義為消極情感。確定針對某一aspect的積極或消極情感計算式表示為:
(1)
式中:k是在一條評論中針對某aspecti積極情感個數;j是在一條評論中針對aspecti消極情感個數;P代表積極情感;N代表消極情感;E為最終該aspect的情感;f-1表示對所得到的積極情感和消極情感的個數進行統計,取最多積極或消極的情感個數的情感作為本條評論的aspect的情感。
(3) 當該評論中沒有學習到針對定義2中積極情感和消極情感時,該aspect定義為中立情感。
本文分別從酒店的定義2中四個方面對情感進行了無監督學習,四個aspect相關的部分詞語如表1所示。

表1 四個aspect相關的部分詞語舉例
從評論當中可以學習到不同aspect的情感。例如,從下面這條評論中學習得到的定義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.
本節將上面擴充好的數據集轉化為向量集合,同時將學習到的aspect級別情感的數據與之進行拼接。本文采用Keras提供的Embedding(嵌入)層庫函數學到數據集中每個詞語的詞向量。這里文檔數量由數據增強后的文檔數量K_au決定,其類標簽由原來對應的評論文本決定。為此,先對預處理過后的評論使用one-hot編碼,然后將每一個文本向量進行填充至最大長度max_len,該最大長度由數據集中最長的評論決定。然后再使用無監督方式獲得的情感對該向量v_emo進行拼接得到包含aspect級別情感的向量,最后輸入到Keras的嵌入層。接下來使用一個三層的卷積層,每個卷積層后面加了一個池化層。最后分別加了一個規范化層和兩個Dense(全連接)層。整個神經網絡以及各部分的參數設置如圖2所示,實驗具體的參數參考實驗設置部分。

圖2 卷積神經網絡模型
本文使用芝加哥地區的酒店評論的數據集,該數據集由康奈爾大學提供[16]。這個數據集分成兩部分,一部分是由積極情感表述的數據構成,另一部分是由消極情緒組成。每一部分包含800條數據。每一部分由400條虛假評論和400條真實評論構成。其中,真實評論來源于旅游點評網站;虛假評論來自于亞馬遜的眾包平臺。要求該平臺每一個人只能撰寫一條虛假評論。在真實評論的收集過程中,針對不同的酒店該數據集對負面評論僅允許一星或兩星的評論。這些評論的平均字數為116個詞左右。
對酒店評論進行了一系列的預處理,將數據集進行生成向量的一系列操作。數據預處理分為兩個部分:對每一條評論中的停用詞語進行抽取;獲取到數據集中所有的tokens。對每一條評論進行詞語性質分析提取形容詞和副詞。另外,使用spacy對酒店知識域中的相關方面的主語和賓語進行提取。獲取到每條評論的one-hot向量。90%的數據集作為訓練數據集,剩下部分作為測試集合。采用本文提出的架構對數據集進行增強。每次實驗當中測試集包含了整個單次實驗中增強前的數據集。
本文實驗使用了Google Colab作為基礎的實驗環境,在預處理階段,使用Python對兩個數據集進行了切分。在數據增強階段使用了EDA文本增強技術。EDA數據集增強的參數num_ag為10,修改比列α為默認參數0.05。在無監督aspect級別情感學習時,使用spacy自然語言解析工具。卷積神經網絡模型的參數如下:模型的Embedding層是890維的向量,輸出是890×20,在卷積模型部分使用了Keras來構建本文的卷積層,具體的參數參考圖2。在訓練過程中epoch為5,batchsize為5。每次訓練集均被混洗。在模型的驗證階段使用和對比論文中相同的驗證方式[5]:重復分層交叉驗證(Rpeated Stratifiled KFold)。其中:重復次數為10;劃分參數為10。該方式能有效地防止過擬合。本文在每次的實驗過程中,使用n-1折的增強數據來進行訓練;使用1折的數據進行測試。總共進行了100次實驗。
本文以100次實驗當中1次實驗中對應1折當中的評論為例,說明完成虛假評論識別的過程。首先數據被分為10折,其中9折經過H-textcnn進行增強和aspect級別的情感識別過后,將對應的數據經過實驗設置中的方法轉化為訓練集。在訓練集上訓練本文設計的卷積神經網絡,最后使用1折中的評論經過上述同樣過程后轉為向量輸入到訓練好的卷積神經網絡后得到分類結果。如在第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.
此條評論經過預處理過后成為一個one-hot向量,使用無監督aspect學習到的依存句法關系有excellent(JJ)←amod—service(NN), friendly(JJ)←amod—staff(NN),best(JJ)←amod—restaurants(NNS)等。進行相似度比對和算法處理過后得到定義2中的aspects的情感分別為{positive,positive,neutral,positive},然后將其轉為向量與上面的one-hot向量進行拼接。將該向量傳入到卷積神經網絡得到分類結果為該評論為偽造的評論,該結果與數據集中的標簽一致。
本文使用了如下的評價指標來驗證本文方法的有效性,分別是acc、fn-rate和fp-rate。fp-rate代表了虛假評論被分類為真實評論的比例;fn-rate代表真實評論被分類為虛假評論的比例;acc代表評論被正確分類的比例。計算公式如下:
(2)
(3)
(4)
式中:tp為被模型預測為真實評論的真實評論的數量;tn表示被模型預測為虛假評論的數量;fp代表的是被模型預測為真實評論的虛假評論的數量;fn是被模型預測為虛假評論的真實評論的數量。
本文選取的對比方法為樸素貝葉斯、支持向量機、深度神經網絡和卷積神經網絡。
對應的技術指標實驗結果數據[5]來自于實現相同目的即酒店虛假評論識別,采用的是同樣的數據集即3.1節中描述的數據集,同樣的交叉驗證過程即重復分層交叉驗證,同樣的評價標準。
將本文方法與文獻[5]的方法作比較,它們都基于同樣的領域、目的、數據集、評價指標和驗證過程,對比結果如表2所示,其中對比方法的技術指標實驗結果數據來自文獻[16]。

表2 不同方法的技術指標-積極

表3 不同方法的技術指標-消極
表2和表3的結果說明本文使用的方法比對比方法在評價指標上有了明顯的提升。對于實驗性能獲得的顯著提升,本文認為是因為進行了EDA和無監督aspect情感識別的原因。
評論在酒店消費當中有著非常重要的作用。很多消費者通過閱讀酒店評論的辦法來做出消費決定。因此有人通過制造虛假評論來影響消費者的決定。目前酒店消費領域因為各種各樣的原因缺少標注的大量樣本的數據集,導致針對小樣本的數據集識別困難。本文提出一種結合數據增強、無監督學習aspect級別情感和文本卷積神經網絡的方法。該方法較好地克服了小樣本數據集的問題,有效地進行了數據增強和情感特征增強,在實驗的數據集上有較好的效果。未來的工作主要包括改進新的網絡結構,探索更準確的細粒度的情感識別方法,同時也可以進一步研究數據增強辦法。