江濤
(廣東理工學院信息技術學院,廣東肇慶,526000)
本文研究對商品評論進行正負評價分類,希望通過準確的評價分類,讓消費者可以快速地找出大眾評價良好的產(chǎn)品,以減少信息取得成本,進而加速購買效率。分類結果也可以提供廠商作為產(chǎn)品在銷售與決策上的依據(jù),能更有效地掌握消費者的喜好,找出正確的產(chǎn)品發(fā)展方向,以提升產(chǎn)品品質,增加消費者購買的可能性,減少顧客流失,進而提高市場占有率。
本研究結合分詞工具、詞嵌入工具及MLP 深度學習方法,建構出產(chǎn)品評論的正負評價分類方法。首先使用斷詞工具將評論文本以詞匯為單位做切割,使計算機可以更好的處理自然語言。接著用詞嵌入工具將文本進行特征詞向量的提取。最后,利用MLP 神經(jīng)網(wǎng)絡訓練文本分類模型,對評論資料進行正負評價的分類。在實驗的過程中,調整各項參數(shù)進行多次訓練,并分析實驗結果。
系統(tǒng)架構如圖1 所示,先將內(nèi)含大量中文詞匯的維基百科中文資料做預處理及斷詞,以此訓練詞向量模型。接著,將商品評論資料做預處理及斷詞,并基于已經(jīng)訓練好的詞向量模型做特征詞向量的抽取。最后,把整個資料集降維后分成訓練資料集及測試資料集,以訓練資料集訓練分類模型,再以測試資料集驗證模型成效。
圖1 系統(tǒng)結構
對于其中的幾個重要的環(huán)節(jié),在此做出必要的剖析。
有了前述的基礎資料,在分析算法之前,先對資料進行預處理,讓資料在格式上比較標準一致,目的是讓算法不會因為資料所產(chǎn)生的瑕疵而發(fā)生誤判。
1.1.1 編碼處理
編碼可以分成地區(qū)編碼及國際編碼,UTF-8 是國際編碼的一種,此編碼系統(tǒng)對世界上大部分的文字系統(tǒng)進行了整理、編碼,其中包含中文。因此,本研究將來源資料都先轉換成 UTF-8 編碼,使得計算機可以用更為簡單的方式來處理文字。
1.1.2 去除干擾
進行機器學習時,一般會希望減少分析目標外的干擾(例如停用詞、標點符號、特殊字元、轉義字元等),以達到更高的準確率。本研究先對文本進行去除所有半角、全角符號,只保留字母、數(shù)字及中文字的處理。接下來去除停用詞,為節(jié)省存儲空間和提高搜尋效率,在處理自然語言數(shù)據(jù)之前或之后會自動過濾掉某些較無意義的字或詞,這些字或詞即被稱為停用詞(Stop Words)。
1.1.3 中文分詞
中文的語句詞匯是相連的,相較印歐語系等語言,詞匯間并無空格,必須先將原始資料進行斷詞步驟,把詞匯以意義為單位切割出來,能夠達到更好的自然語言處理效果,幫助系統(tǒng)理解復雜的中文語言。本研究采用結巴分詞工具,結巴分詞算法是建立 Trie DAG,使用全切分方法,以統(tǒng)計模型計算出最佳結果;對于未知詞(新詞)則使用 HMM 模型計算辨識出來。
文字在經(jīng)過分詞后會形成一個詞語集合,對于這些詞語集合,機器學習算法無法直接使用,需要將它們轉化成可以被機器學習算法識別的數(shù)值特征(由固定長度的向量表示之),然后再交給機器學習的算法進行操作,此轉化過程,稱為特征提取。由于特征詞向量的提取是基于已經(jīng)訓練好的詞向量模型,而中文維基百科是公認的大型中文資料庫,因此本研究將從中文維基百科資料中訓練出詞向量模型,再以此詞向量模型為基礎,從前述已分詞處理完的本文語料中提取特征詞向量。
本研究使用 Word2Vec 做為訓練詞向量模型及特征提取的工具。在訓練詞向量模型時,選用語意分析效果較好的Skip-gram model,補足一般文件分類常欠缺的語意分析。本研究所使用的word2vec 詞向量模型,是由維基百科提供開放下載的最新中文內(nèi)容所訓練而成,評論文本經(jīng)過此模型,可將詞匯轉換成一個400 維度的特征詞向量。
因為在原始的高維度向量資料中,包含有冗余信息以及噪音信息,在實際應用中會造成誤差,并降低資料分析的準確率,同時海量的高維向量資料也導致演算法越來越慢。而通過降維,可以減少冗余信息所造成的誤差,提高識別的精準度,并提高計算效率。
本研究的降維方法使用主成分分析(Principal Com ponents Analysis)縮寫為PCA,是一種無監(jiān)督式學習的降維演算法。PCA 將可能具有相關性的高維向量轉換成線性無關的低維向量,即主成分(Principal Components),此低維向量數(shù)據(jù)集可保持原數(shù)據(jù)集中的對變異數(shù)貢獻最大的特征。
許多深度學習方法可實現(xiàn)文本分類,本論文將研究有標準答案的監(jiān)督式學習,使用多層感知機(MLP)深度學習方法進行文本分類,在實驗過程中將嘗試進行參數(shù)調教以得出更好的結果。
MLP 是一種前向結構的人工神經(jīng)網(wǎng)路,每一層中可包含許多各自獨立的神經(jīng)元,這些位于同一層的神經(jīng)元彼此之間并沒有任何連接,但對位于上下兩層的每一個神經(jīng)元,都有相對的連接。也就是下層的每一個神經(jīng)元,對上層的每一個神經(jīng)元,都會學習到一個權重值,來表達上下兩層神經(jīng)元連接的強度。這個連接的強度,對于分類任務而言,可能是屬于某一類別的獨有特征。
MLP 的網(wǎng)絡學習方式是采用監(jiān)督式學習,網(wǎng)絡的訓練算法是由屬于錯誤更正學習法則的反向傳播算法來訓練網(wǎng)絡的鍵結值,也可以視為是最小均方法(LMS 算法)的一種推廣。反向傳播算法利用網(wǎng)絡輸出與目標之間的差異,計算損失函數(shù)相對于每一層網(wǎng)絡參數(shù)的梯度值,再以梯度值修正參數(shù),最小化損失函數(shù)。
本研究以GitHub 上 的 LSTM 情緒分析實驗所使用到的淘寶網(wǎng)商品評論語料作為資料來源,此語料已預先完成正負向文本分類,并分割成訓練資料集 17466 筆及測試資料集2632 筆,兩個資料集的內(nèi)容都是不重覆的。
本研究在實驗 MLP 時,使用神經(jīng)網(wǎng)路函式庫 Keras 進行訓練。本研究使用具有四層隱藏層的深層 MLP,各層神經(jīng)元數(shù)量分別為 256、128、64、32,采用ReLU 激勵函數(shù),且在每個隱藏層后加入 dropout=0.5 以防止過擬合的狀況發(fā)生。輸出層為 1 個神經(jīng)元的全連接層,采用 Sigmoid 激勵函數(shù)。訓練過程中優(yōu)化器使用具有自適應學習速率的梯度下降算法(Adam),并嘗試調整 epochs 及 batch size 以找出最佳參數(shù)值,如表1 所示,找出 epochs=100 和 batch size=16 為效果較好的數(shù)值,使得在訓練語料中精確度最大值約 94%,實驗結果如表2 所示。
表1 MLP 參數(shù)調整與分類精確度的影響
表2 MLP 分類結果(混淆矩陣)
本文針對商品評論的正負評價分類問題,設計基于深度學習的情感分析方法,使用 Word2Vec 做為詞嵌入的方法,并使用PCA 降低資料維度,以減少冗馀信息所造成的誤差,最后用MLP 深度學習方法進行文本分類實驗。由實驗結果得出的該方法文本分類的精確度較好,且不易受參數(shù)調整影響,是相對穩(wěn)定且有效的分類方法。