江蘇經貿職業技術學院 劉成
為提高店鋪數字化運營水平,采用AdaBoost算法解決電商評論情感分類問題。在調用該算法中,采用樸素貝葉斯多分類器,在實驗過程中對比分析SAMME和SAMME.R的實現方式,實驗結果表明基于SAMME.R方式實現的MultinomialNB_AdaBoost算法可以有效對電商評論進行情感分類,準確率較高。
隨著我國電子商務的迅猛發展,當前電商平臺競爭日益激烈,對于店鋪管理人員不僅要提高商品質量,還提高數字化運營水平。以商品評論為例,店鋪管理人員可以對評論數據進行挖掘,分析商品的質量、服務、物流等存在的問題。另一方面,對于一些未知體驗產品,用戶為獲得產品信息,會重點觀察其他客戶對此商品的評論,并以此作為決策的重要依據。對于客戶來說,可以借鑒別人的購買歷史以及評論信息,更好的輔助自己制定購買決策。因此,通過利用數據挖掘技術針對客戶的大量評論進行分析,可以挖掘出這些信息的特征,提高店鋪的數字化運營水平。對于用戶的評論,情感分類一般可以分為積極“消極”“積極”“中性”三種,在情感分析方法中,可以采用基于情感字典的方法,也可以采用機器學習的方式,如概率分類器、線性分類器等。文獻1提出基于正則化貪心森林算法進行情感分析,文獻2提出基于LDA主題分析模型的電商平臺用戶評論數據情感分析[1-2]。
對于電商評論數據,可采用爬蟲的方式,從商品的評論頁面獲取,在設置爬蟲的時候,可以設置IP代理池,防止被屏蔽。首先是確定帶處理的網頁,可以采用專業的網頁采集工具進行采集。例如八爪魚工具,作為一款可視化免編程的網頁采集軟件,能夠從不同網站中快速提取規范化數據,幫助用戶實現數據的自動化采集、編輯以及規范化,降低工作成本。同時,還提供云采集功能,相比其他采集軟件,云采集能夠做到更加精準、高效和大規模的進行數據采集。同時八爪魚工具也支持自定義采集過程中,可以在相關配置中設置,進行制定化的數據采集[3]。
數據獲取之后,需要將其保存到本地文件中,方便后續的處理。對于電商評論數據,在進行情感分析之前,需要對其進行特殊處理如數據去重、清洗等。常見預處理包含以下幾個方面:
(1)文本去重,電商平臺上有部分用戶,會設置自動評論等功能,該部分的評論內容基本上高度相似,在處理的時候需要進行去重操作。
(2)數據清洗,噪聲會降低模型的準確性,需要去除文中的噪聲,比如鏈接、圖片等。
(3)構建詞典,需要根據電商商品的特點,構建一些專用停用詞庫,以及其他專業的相關。
(4)文本分詞,需要對原始文本進行分詞操作,文本挖掘首先要以中文分詞為前提。目前常用的中文分詞軟件主要有BosonNLP、Jieba等工具。
(5)特征構造,根據模型需要將本文進行特征提出,將文本數據轉化為計算機可識別的數值型數據。
實現分類AdaBoost的兩種算法SAMME和SAMME.R,主要區別是基學習器權重的度量,SAMME使用對樣本集分類效果作為弱學習器權重 (原理中即為SAMME),而SAMME.R使用對樣本集分類的預測概率大小來作為弱學習器權重。在訓練的時候SAMME.R速度更快。SAMME.R實現方式的AdaBoost算法,其算法偽代碼如表1所示。

表1 AdaBoost基于SAMME.R偽代碼Tab.1 AdaBoost is based on SAMME.R pseudocode
本模型采用AdaBoost算法來提升樸素貝葉斯的性能,在迭代訓練的時候,根據訓練結果,動態調整模型參數,當訓練樣本xi分類錯誤,權重將增加,否則將減少。在處理文本的數據的時候,采用空間向量來表示樣本,對于每個待分類的樣本數據Xi,采用特征向量(WSi1,WSi2,...WSik,...,WSim)來表示該樣本,其中WSik為該文本中提取出來的Sik的權重。利用AdaBoost分類的時候,需要確定先驗概率P(cj)和條件概P(sik|cj)。
根據樸素貝葉斯原理,樸素貝葉斯公式有:

可以先驗概率P(cj),需要在分子上進行加1操作,防止出現概率為0的情況,影響后面的計算。先后概率為

進而每個特征基于類的條件概率P(sik|cj)計算公式如下:

其中,δ(sik,xi)為特征sik出現的次數。對測試數據進行分類的時候,我們需要根據以上公式,計算出樣本每個類別對應的后驗概率,然后取后驗概率最大的類別作為測試數據的輸出標簽,公式如下:

在計算概率的時候,會進行累乘操作,防止乘積算出來的概率太低接近于0,引入對數函數對其進行優化,改進后的公式如下:

AdaBoost在進行迭代訓練的時候,每個訓練樣本分配的權重為,然后將其引入參數P(sik|cj),公式最終為:

根據算法定義,隨著AdaBoost的每次迭代,樣本權重每次都有更新,樸素貝葉斯的先驗概率和后驗概率都有變化,對樸素貝葉斯分類器的分類產生了擾動,增加了樸素貝葉斯分類器的相異性。集成方法通過將多個分類器的分類結果組合起來,使最終分類器比最初的簡單分類器有更好的結果。同時,多分類器能夠解決單分類器的過擬合問題[4]。
本次實驗對電商評論進行分析,分為按照“積極”“消極”“中性”進行三分類。對于多分類的算法,AdaBoost的處理有多種方式,其中,以SAMME和SAMME.R效率較好。本文中將使用Sklearn庫中的MultinomialNB和AdaBoost進行實驗,Sklearn封裝了SAMME和SAMME.R算法,在調用的時候可以直接將MultinomialNB傳入到AdaBoost算法中。本文實驗分為兩組,具體的配置參數如表2所示。

表2 分組AdaBoost參數配置Tab.2 Group AdaBoost parameter configuration
其中,base_estimator是基學習器,可以采用決策樹或者神經網絡作為基學習器,默認是決策樹。n_estimators是弱學習器的最大個數,如果n_estimators太小,模型可能出出現欠擬合的情況,如果n_estimators太大,模型會出現過擬合的情況。在實際調參的過程中,常常將n_estimators和參數learning_rate一起考慮,如果learning_rate太小,就要適當增大n_estimators參數。learning_rate是權重縮減系數,為了防止模型出現過擬合情況,通常也會加入正則化項。Algorithm是實現分類Adaboost的兩種算法SAMME和SAMME.R。兩者的主要區別是基學習器權重的度量,SAMME使用對樣本集分類效果作為弱學習器權重,而SAMME.R使用對樣本集分類的預測概率大小來作為弱學習器權重。SAMME.R迭代一般比SAMME快,需要注意的是,如果參數Algorithm選擇的是SAMME.R,則我們的弱分類學習器還需要支持概率預測[5]。
通過實驗可以發現,基于SAMME實現的AdaBoost模型,在訓練和測試的過程中會出現上下波動的情況,如圖1所示。在訓練集上準確率能夠接近90%,在測試集上準確率超過60%。基于SAMME.R實現的Adaboost模型相對穩定,如圖2所示,在訓練集上準確率接近90%,在測試集上的準確率接近70%,性能提升明顯。

圖1 基于SAMME的AdaBoost情感分析Fig.1 AdaBoost sentiment analysis based on SAMME

圖2 基于SAMME.R的AdaBoost情感分析Fig.2 AdaBoost sentiment analysis based on SAMME.R
AdaBoost算法可以有效的對電商評論文本進行情感分析,在訓練集上擬合效果較好,在測試集上準確率低于訓練集上的效果,因此實驗存在一定的過擬合。后續實驗中可以補充基于情感詞典對模型進行優化。