電商產品評論數據情感分析


來自:Python數據分析與挖掘實戰——張良均著

1. 分析方法與過程

本次建模針對京東商城上“美的”品牌熱水器的消費者評論數據,在對文本進行基本的機器預處理、中文分詞、停用詞過濾后,通過建立包括棧式自編碼深度學習、語義網絡與LDA主題模型等多種數據挖掘模型,實現對文本評論數據的傾向性判斷以及所隱藏的信息的挖掘並分析,得到有價值的內在內容。

2. 評論數據預處理

文本數據的預處理主要由3個部分組成:文本去重、機械壓縮去詞、短句刪除。

2.1 文本去重

1. 文本去重,就是去除文本評論數據中重復的部分。

去重的原因:

(1). 一些電商平台避免客戶長時間不評論,設置一道程序,用戶超過規定時間不評論,系統會自動評論。(比如國美)

(2). 同一個人出現重復評論,比如:同一個人購買多種熱水器為了省事,復制粘貼,就會出現在同樣或相近的評論,當然不乏有價值的評論,但只是第一條有作用。

(3). 由於語言的特點,大多數情況下,不同人之間有價值的評論不會出現重復,比如:“好好好好好好”,“XX牌熱水器  XX升”或者復制、粘貼上一個人的評論,這種評論顯然就只有最早評論才有意義(即第一條)

2. 常見文本去重算法及缺陷

許多文本去重算法通過計算文本之間的相似度,以此為基礎去重,包括編輯距離去重、Simhash算法去重等。

編輯距離算法去重是計算兩條語料的編輯距離,然后進行閾值判斷,如果編輯距離小於閾值則進行去重處理。

比如:"XX 牌熱水器 XX升 大品牌高質扯“ 以及 "XX牌熱水器 XX升 大品牌 高質扯 用起來真的不錯" 的接近重復而又無任何意義的評論,去除的效果是很好的。

但是 有相近的表達的時候就可能也會采取刪除操作, 這樣就會造成錯刪。

比如:”還沒正式使用, 不知道怎樣, 但安裝的材料費確實有點高,380" 以及 “還沒使用, 不知道質掀如何, 但安裝的材料費確實貴,380"。 這組語句的編輯距離只是比上一組大2而已, 但是 很明顯這兩句都是有意義的, 如果闊值設為10 (該組為9), 就會帶來錯刪問題。

3. 文本去重選用的方法及原因

因為這一類相對復雜的文本去重算法容易去除有用的數據,一般我們會用簡單的文本去重思路,只對完全重復的語料下手。

2.2. 機械壓縮去詞

1. 機械壓縮去詞的思想

比如:“哈哈哈哈哈哈哈哈哈哈哈”縮成“哈”。

機械壓縮去詞法不能像分詞那樣去識別詞語。

2. 機械壓縮去詞處理的語料結構

機械壓縮去詞處理的語料中重復的部分,從一般的評論偏好角度講,連續重復只會在開頭或者結尾。

比如:”為什么為什么為什么安裝費這么貴, 毫無道理! ”以及“真的很好好好好好好好好”。

3. 機械壓縮去詞處理過程的重復的判斷以及壓縮規則的闡述

重復的判斷可通過建立兩個存放國際字符的列表來完成, 先放第一個列表, 再放第二個列表, 一個個讀取國際字符, 並按照不同情況, 將其放入帶第一或第二個列表或觸發壓縮判斷, 若得出重復(及列表1與列表2有意義的部分完全一對一相同)則壓縮去除,這樣當然就要有相關的放置判斷及壓縮規則。

規則1:如果讀入的字符與第一個列表的第一個字符相同,而第二個列表沒任何放入的國際字符,則將第二個字符放入第二個列表中。

解釋:因為一般情況下同一個字再次出現時大多數都是意味着上一個詞或是一個語段的結束以及下一個詞或下一個語段的開始,比如:

規則2:如果讀入的字符與第一個列表的第一個字符相同,而第二個列表也有國際字符,則觸發壓縮判斷,若得出重復,則進行壓縮去除,清空第二個列表。

解釋:判斷連續重復最直接的方法,比如:

規則3:如果讀入的字符與第一個列表的第一個字符相同,而第二個列表也有國際字符,則觸發壓縮判斷,若得出不重復,則清空兩個列表,把讀入的這個字符放入第一個列表第一個位置。

解釋:即判斷得出兩個詞是不相同的,都應保留,舉例如下。

規則4: 如果讀入的字符與笫一個列表的第一個字符不相同, 觸發壓縮判斷, 如果得出 重復且列表所含國際字符數目大千等於2, 則進行壓縮去除, 清空兩個列表, 把讀人的這個 放入第一個列表第一個位置。
解釋:用以去除下圖情況的重復, 並避免如 “滔滔不絕” 這種情況的 "滔” 被刪除, 並可順帶壓縮去除另一類連續重復, 見下圖示例。

規則5: 如果讀入的字符與第一個列表的第一個字符不相同, 觸發壓縮判斷, 若得出不 重復且第二個列表沒有放入國際字符, 則繼續在第一個列表放入國際字符。 

解釋:沒出現重復字就不會有連續重復語料, 第二個列表未啟用則繼續填入第一個列表, 直至出現重復情況為止。

規則6: 如果讀入的字符與第一個列表的第一個字符不相同 觸發壓縮判斷, 若得出不 重復且第二個列表已放入國際字符, 則繼續在第二個列表放入國際字符。

解釋:類似規則5。

規則7: 讀完所有國際字符后, 觸發壓縮判斷, 對第一個列表以及第二個列表有意義部分進行比較, 若得出重復, 則進行壓縮去除。

解釋:按照上述規則, 在讀完所有國際字符后不會再觸發壓縮判斷條件, 故為了避免下圖實例連續重復情況, 補充這一規則。

4. 機械壓縮去詞處理操作流程

根據上述規則,便可以完成對開頭連續重復的數理。類似的規則,也可以對處理過的文本再進行一次結尾連續重復的機械壓縮去詞,算法思想是相近的,只是從尾部開始讀詞罷了,從結尾開始的處理結束后就得到了已壓縮去詞完成的精簡語料。

輸出被壓縮的語句和原句的對比,下圖截取了一部分前向機械壓縮的對比例子,如圖:

2.3. 短句刪除

1. 短句刪除的原因及思想

完成機械壓縮去詞后,進行最后的預處理:短句刪除。

雖然精簡的辭藻是一種好習慣,但字數越少表達的意思越少。所以過少字數的評論是沒有意義的,比如3個字的,“很不錯”,“質量差”等就需要刪除。

比如:

(1). 原本就過短的評論,如:“很不錯”。

(2). 經機械壓縮去詞后過短的評論,如:“好好好好好好好好好好好好”。

2. 評論的字數下限的確定

短句刪除最重要就是評論的字數下限的確定,一般4~8個國際字符都是較為合理的下限。

3. 文本評論分詞

此處用結巴分詞。分詞結果的准確性對文本挖掘算法很重要,分詞不佳,后續算法優秀也無法實現理想的效果。

4. 構建模型

1. 情感傾向性模型

(1). 訓練生成詞向量,為了將文本情感分析(情感分類)轉化為機器學習問題,首先需要將符號數學化

在NLP中,最常見的詞表示方法就是One-hot Representation:將一個詞映射成一個很長的單位向量向量的長度就是詞表的大小,如“學習”表示成[0 0 0 1 0 0 0 0 0 0 0 0......],“復習”表示成[0 0 0 0 0 0 0 1 0 0 0 0 0......];這樣就完成了詞語的數學化表示。

但是,這樣就存在“詞匯鴻溝”問題:即使兩個詞之間存在明顯的聯系但是在向量表示法中體現不出來,無法反映語義關聯。

然而,Distributed Representation卻能反映出詞語與詞語之間的距離遠近關系,用Distributed Representation表示的向量專門稱為詞向量 如 “學習 ” 可能被表示成 (0.1,0.l,0.1,0.15,0.2······], "復習 ” 可能被表示成[O.J l,0.12,0. I ,O. l 5,0.22· · · · · ·], 這樣, 兩個詞義相近的詞語被表示成詞向最后, 它們的距離也是較近的, 詞義關聯不大的兩個詞的距離會較遠。

word2vec 采用神經網絡語言模型 NNLM 和 N-gram 語言模烈 , 每個詞都可以表示成一個實數向量。模型如下:

圖 15-8 最下方的 Wt-n+1......Wt-2 ,Wt-1就是前 n-1 個詞。 現在需要根據這已知的 n-1 個詞預測下一個詞Wt-0.C(W)表示詞W所對應的詞向量,存在矩陣C(一個|V|*m的矩陣)中。其中|V|表示詞表的大小(語料中的總詞數),m表示詞向量的維度。W到C(W)的轉換就是從矩陣中取出一行。

網絡的第一層(輸入層)是將C(Wt-n+1),......C(Wt-2),C(Wt-1)這是n-1個向量首尾相接拼起來,形成一個(n-1)m維的向量,記為x。

網絡的第二層(隱藏層)就如同普通的神經網絡,直接使用d+Hx計算得到。d是一個偏置項。在此之后,使用tanh()作為激活函數。

網絡的第三層(輸出層)一共有|V|個節點,每個節點yi表示下一個詞為i的為歸一化log概率。最后使用softmax()激活函數將輸出值y歸一化成概率。最終,y的的計算公式為:

y = b + Wx + Utanh(d + Hx)

其中,U是隱藏層到輸出層的參數,整個模型的多數計算集中在U和隱藏層的矩陣乘法中。矩陣W(一個|V|*(n-1)m的矩陣),這個矩陣包含了從輸入層到輸出層的直連邊。

 

未完待續!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM