劉策 李貞 顏明會



摘? 要:隨著移動互聯網技術的發展,網絡文本信息量迅速增長。現有的情感分析庫snownlp,多用于對購物評論的情感分析。鑒于snownlp在美食評價中對情感分析不理想,以大眾點評網評論為例,運用jieba分詞、Bag of words模型和多項式樸素貝葉斯方法構造出一種基于樸素貝葉斯模型的情感分類構造器。通過對評論文本數據集的訓練和測試可知,該構造器的情感分析效果明顯優于snownlp,為消費者了解美食在大眾心目中的口碑提供了幫助。
關鍵詞:樸素貝葉斯算法;情感分析;snownlp;大眾點評網
中圖分類號:TP181;TP317.2? ? ? ? ? ? ? ? 文獻標識碼:A文章編號:2096-4706(2021)19-0037-03
Research on Text Emotion Analysis for Comments on Public Comments Network
LIU Ce, LI Zhen, YAN Minghui
(North China Institute of Aerospace Engineering, Langfang 065000, China)
Abstract: With the development of mobile internet technology, the amount of network text information increases rapidly. The existing emotional analysis library snownlp is mostly used for emotional analysis of shopping reviews. In view of snownlps unsatisfactory emotion analysis in food evaluation, taking the comments on public comment network as an example, an emotion classification constructor based on Naive Bayes model is constructed by using Jieba word segmentation, Bag of words model and polynomial naive Bayes method. Through the training and testing of the comment text data set, it can be seen that the emotional analysis effect of the constructor is significantly better than snownlp, which provides help for consumers to understand the reputation of delicious food in the eyes of the public.
Keywords: Naive Bayes algorithm; emotion analysis; snownlp; public comment network
0? 引? 言
隨著互聯網的飛速發展,人們可以通過各種各樣的方式來表達自己的喜好、觀點和建議,主要的方式有微博、朋友圈、影評、大眾點評、直播彈幕,等等。大量包含用戶情感的信息可以在這類文本數據中呈現。通過對這類體現情感數據的分析,政府等機構可以實現對輿情等數據的監控。對一些重要信息進行預測,還可以幫助大部分消費者了解某些美食、酒店、電影等在大眾心目中的口碑,避免踩坑。本文使用的數據主要來源于大眾點評網,大眾點評網是中國領先的本地生活信息及交易平臺,也是全球最早建立的第三方消費點評網站[1],用戶在使用過程中會產生大量的評論文本信息,利用情感分析能從中獲取所需的情感信息。
目前比較常見的文本情感分析方法有三種:基于情感詞典的文本情感分析、基于機器學習的文本情感分析和基于深度學習的文本情感分析[2]。基于機器學習的情感分析方法主要是指使用提前區分好的積極情感文本和消極情感文本,根據實驗需求采用不同的特征處理和提取公式對所提取的文本數據進行分析[3],然后用機器學習的方法對數據進行訓練,得到文本情感模型,用該模型對實驗中的文本數據進行分類處理。本文首先使用snownlp對大眾點評網上的評論文字進行情感分析,并計算打分的準確率,然后使用樸素貝葉斯模型,對同樣的數據進行情感分析,做以比較。
1? 基于snownlp的情感分析
1.1? snownlp的介紹
大部分自然語言處理的庫都是用于對英文文本的分析,用于中文文本分析的庫較少。在這樣的背景下,受TextBlob的啟發,Snownlp應運而生。它是Python中的一個類庫,snownlp中所有的算法都是自己實現的,而且其自身有一些訓練好的字典,主要的功能包括對中文分詞、詞性標注、情感分析、文本分類、漢字轉化成拼音、繁體字轉成簡體字、提取文本的關鍵詞、提取文本的摘要等[4]。
1.2? snownlp樣例分析
對snownlp的一些主要功能進行測試分析,其運行效果如圖1所示,主要代碼為:
#encoding=utf-8
from snownlp import? SnowNLP
text=你站在橋上看風景,看風景的人在樓上看你。
text1 = ‘這部電影真心棒,全程無尿點
text2 = ‘這部電影簡直爛到爆
s=SnowNLP(text)
s1 = SnowNLP(text1)
s2 = SnowNLP(text2)
print(‘****顯示分詞****)
print(“,”.join(s1.words))
print(“,”.join(s2.words))
print(‘****顯示斷句****)
print(s.sentences)
print(‘****顯示情感分析****)
print(text1, s1.sentiments)
print(text2, s2.sentiments)
1.3? snownlp情感分析流程
對大眾點評網的評論文字和打分數據進行讀取,將打分小于3的視為消極,記為0,打分大于3的視為積極,記為1,將結果寫入一個新列sentiment中。使用snownlp庫中的方法對評論文字進行情感分析,其中分析結果大于0.6的視為積極評論,記為1,分析結果小于0.6的視為消極評論,記為0,將結果寫入新列snlp_sentiment。統計來自同一客戶的sentiment和snlp_sentiment相同的情況,用該值除以樣本總數,即為使用snownlp進行情感分析的準確度。
1.4? snownlp情感分析結論
通過對大眾點評網的評論數據集進行實驗得出,基于snownlp的情感分析結果為76.35%。由此可知,不同場景下文本的語言表達方式是不同的,snownlp在處理大眾點評網的美食評論上準確度一般。
2? 基于樸素貝葉斯的情感分析
2.1? 數據預處理
在開始實驗之前,需要先將文本數據處理成所需的格式,這個過程包括以下5個步驟:
(1)分詞。中文文本與英文不同,一句話中沒有空格,分界形式只體現在句子與句子之間,所需的包含情感的詞語無法直接獲得,因此對評論文本數據進行分詞處理就成了實驗前必不可少的環節。本文采用jieba分詞系統,通過jieba對大眾點評網中的美食評論文本comment列進行切割,將切割后的結果寫到新列cut_comment中。
(2)去停用詞。本實驗采用的是來源于哈爾濱工業大學的去停用詞表,用來去除虛詞、冠詞、助詞等。
(3)去除關鍵詞。文本評論中包含有較多的無效評論,這些評論會影響分析的效果,本實驗去除了一些超過一定比例的關鍵詞和低于一定比例的關鍵詞。
(4)構建詞向量。本文采用Bag of words模型,該模型在分析文本時,對文本中詞語的順序、語法和句法等因素都忽略不計,把每一個詞當作是一個單獨的個體來看待。
(5)劃分數據集。在對樸素貝葉斯模型進行訓練前,首先需要區分本實驗所需的X和Y,本文將使用jieba分詞得到的cut_comment設置為X,將sentiment設置為Y,采用sklearn中的train_test_split函數將整個數據集按照4:1的比例分為訓練集x_train和測試集x_test。
2.2? 訓練模型階段
貝葉斯算法是一種統計學中概率分類的算法,其算法原理是借助貝葉斯公式,利用數據中某特征的先驗概率,推算出其后延的概率,然后選擇最大可能的后延概率,作為該特征所屬的類。樸素貝葉斯算法是貝葉斯算法中的一種。在整個算法過程中,樸素貝葉斯所使用的是最原始、最簡單的假設,這也是它被稱為樸素貝葉斯的原因所在。
在sklearn中,樸素貝葉斯算法有三種,分別是高斯樸素貝葉斯(GaussianNB)、多項式樸素貝葉斯(MultinomialNB)和伯努利樸素貝葉斯(BernoulliNB)[5]。
GaussianNB算法是假設每個標簽的數據都服從高斯分布(正態分布),是一種先驗為高斯分布的樸素貝葉斯算法,高斯分布的概率密度函數計算公式為:
其中,Ck為Y的第k個類別,?k和σ2k為第k類樣本在第i個屬性上取值的均值和方差。
MultinomialNB算法是假設每個標簽的數據特征是通過一個多項式分布生成的,是一種先驗為多項式分布的樸素貝葉斯算法。多項式分布可以用于計算各種類型樣本數據出現的概率,因此該模型適用于對文本進行分析,其中分布式的公式為:
其中,Nyi為特征i在類別y的樣本中發生的次數,Ny為類別y的樣本中所有特征發生的次數,n為特征數量,a為平滑系數。
BernoulliNB算法是假設數據集中每個數據的特征為二元伯努利分布,是一種先驗為伯努利分布的樸素貝葉斯算法[6],伯努利分布公式為:
本文采用的是多項式樸素貝葉斯(MultinomialNB)算法,它的核心算法是執行計數的工作,本實驗訓練MultinomialNB樸素貝葉斯的步驟為:
(1)在已經完成文本預處理的基礎上,開始對文本數據進行訓練,使用fit_transform()函數對訓練集數據x_train進行處理,fit_transform()函數可以看作是fit()函數和transform ()函數的結合,它的功能既包括訓練又包括轉換,通過學習訓練數據集中的部分數據,找到該數據集的規則,然后根據規則對數據進行轉換,從而實現數據集的標準化、歸一化。
(2)在完成訓練數據集歸一化的基礎上,通過fit()函數,建立本實驗所需的模型——多項式樸素貝葉斯模型。
(3)在所建立MultinomialNB模型的基礎上,通過調用score()函數,對大眾點評網文本評論的情感分析的準確率進行求解,結果為90.62%,該結果與使用snownlp進行情感分析的結果相比,準確率較高。
2.3? 測試模型階段
本階段主要是針對已經訓練好的模型,其主要步驟及效果為:
使用transform()函數從測試集數據x_test中提取一些數據的詞頻,將其轉換成詞頻矩陣,將結果與測試數據集y_test放到訓練好的樸素貝葉斯模型中,計算本實驗的測試數據集在樸素貝葉斯模型下的準確率,結果為83.75%。本文利用snownlp和樸素貝葉斯兩種不同的方法對同一文本集進行了情感分析,兩種方法的準確率對比如表1所示。
完成測試數據集準確率的計算后,再次使用transform()函數,從全部評論數據cut_comment中提取詞頻,轉換成詞頻矩陣,將結果傳到訓練好模型下的predict()函數中,使用本實驗的樸素貝葉斯模型對全部的點評文本進行情感預測分析,其效果如圖2所示,主要代碼為:
#測試數據
x_test_vect = vect.transform(x_test)
print(nb.score(x_test_vect, y_test))
#將結果放到data數據中
x_vec = vect.transform(x)
nb_result = nb.predict(x_vec)
data[‘nb_result] = nb_result
print(data)
3? 結? 論
通過效果對比可以發現,在美食評論數據方面,樸素貝葉斯算法的情感分析效果明顯高于snownlp,但是在處理不同領域的評論文本時,分類器的效果不同,具有一定的局限性。雖然本實驗所提出的樸素貝葉斯模型準確率相對較高,但是本實驗的訓練集較少,受樣本中評論文本和打分情況的影響較大,沒有進行交叉驗證。基于機器學習的文本情感分析有一些弊端,所需的人力物力成本較高,當前比較流行的深度學習在文本情感分析領域的效果較好,現在的目標就是在今后的工作中,多多接觸一些基于深度學習的情感分析案例,以做進一步的探索。
參考文獻:
[1] 付華.電子優惠券顧客使用意愿影響因素分析 [J].全國商情,2016(32):3-4.
[2] 王俊.基于跳轉和多注意力神經網絡的文本情感分析 [D].重慶:重慶郵電大學,2020.
[3] 趙剛,徐贊.基于機器學習的商品評論情感分析模型研究 [J].信息安全研究,2017,3(2):166-170.
[4] 王欣,周文龍.基于Python的微博情感分析系統設計 [J].信息與電腦(理論版),2019(6):76-77+80.
[5] 余華鴻,周鳳艷,陳毛毛.基于機器學習的KDD-CUP99網絡入侵檢測數據集的分析[J].計算機工程與科學,2019,41(S1):91-97.
[6] 葛霓琳,凡甲甲.基于樸素貝葉斯和支持向量機的評論情感分析 [J].計算機與數字工程,2020,48(7):1700-1704.
作者簡介:劉策(1998—),男,漢族,河北保定人,碩士研究生在讀,研究方向:人工智能與大數據分析;李貞(1997—),女,漢族,河南洛陽人,碩士研究生在讀,研究方向:人工智能與大數據分析;顏明會(1997—),男,漢族,江蘇鹽城人,碩士研究生在讀,研究方向:軟件測試、數據分析與大數據處理。