劉策 李貞 顏明會
摘? 要:隨著移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,網(wǎng)絡文本信息量迅速增長。現(xiàn)有的情感分析庫snownlp,多用于對購物評論的情感分析。鑒于snownlp在美食評價中對情感分析不理想,以大眾點評網(wǎng)評論為例,運用jieba分詞、Bag of words模型和多項式樸素貝葉斯方法構(gòu)造出一種基于樸素貝葉斯模型的情感分類構(gòu)造器。通過對評論文本數(shù)據(jù)集的訓練和測試可知,該構(gòu)造器的情感分析效果明顯優(yōu)于snownlp,為消費者了解美食在大眾心目中的口碑提供了幫助。
關(guān)鍵詞:樸素貝葉斯算法;情感分析;snownlp;大眾點評網(wǎng)
中圖分類號: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? 引? 言
隨著互聯(lián)網(wǎng)的飛速發(fā)展,人們可以通過各種各樣的方式來表達自己的喜好、觀點和建議,主要的方式有微博、朋友圈、影評、大眾點評、直播彈幕,等等。大量包含用戶情感的信息可以在這類文本數(shù)據(jù)中呈現(xiàn)。通過對這類體現(xiàn)情感數(shù)據(jù)的分析,政府等機構(gòu)可以實現(xiàn)對輿情等數(shù)據(jù)的監(jiān)控。對一些重要信息進行預測,還可以幫助大部分消費者了解某些美食、酒店、電影等在大眾心目中的口碑,避免踩坑。本文使用的數(shù)據(jù)主要來源于大眾點評網(wǎng),大眾點評網(wǎng)是中國領(lǐng)先的本地生活信息及交易平臺,也是全球最早建立的第三方消費點評網(wǎng)站[1],用戶在使用過程中會產(chǎn)生大量的評論文本信息,利用情感分析能從中獲取所需的情感信息。
目前比較常見的文本情感分析方法有三種:基于情感詞典的文本情感分析、基于機器學習的文本情感分析和基于深度學習的文本情感分析[2]?;跈C器學習的情感分析方法主要是指使用提前區(qū)分好的積極情感文本和消極情感文本,根據(jù)實驗需求采用不同的特征處理和提取公式對所提取的文本數(shù)據(jù)進行分析[3],然后用機器學習的方法對數(shù)據(jù)進行訓練,得到文本情感模型,用該模型對實驗中的文本數(shù)據(jù)進行分類處理。本文首先使用snownlp對大眾點評網(wǎng)上的評論文字進行情感分析,并計算打分的準確率,然后使用樸素貝葉斯模型,對同樣的數(shù)據(jù)進行情感分析,做以比較。
1? 基于snownlp的情感分析
1.1? snownlp的介紹
大部分自然語言處理的庫都是用于對英文文本的分析,用于中文文本分析的庫較少。在這樣的背景下,受TextBlob的啟發(fā),Snownlp應運而生。它是Python中的一個類庫,snownlp中所有的算法都是自己實現(xiàn)的,而且其自身有一些訓練好的字典,主要的功能包括對中文分詞、詞性標注、情感分析、文本分類、漢字轉(zhuǎn)化成拼音、繁體字轉(zhuǎn)成簡體字、提取文本的關(guān)鍵詞、提取文本的摘要等[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情感分析流程
對大眾點評網(wǎng)的評論文字和打分數(shù)據(jù)進行讀取,將打分小于3的視為消極,記為0,打分大于3的視為積極,記為1,將結(jié)果寫入一個新列sentiment中。使用snownlp庫中的方法對評論文字進行情感分析,其中分析結(jié)果大于0.6的視為積極評論,記為1,分析結(jié)果小于0.6的視為消極評論,記為0,將結(jié)果寫入新列snlp_sentiment。統(tǒng)計來自同一客戶的sentiment和snlp_sentiment相同的情況,用該值除以樣本總數(shù),即為使用snownlp進行情感分析的準確度。
1.4? snownlp情感分析結(jié)論
通過對大眾點評網(wǎng)的評論數(shù)據(jù)集進行實驗得出,基于snownlp的情感分析結(jié)果為76.35%。由此可知,不同場景下文本的語言表達方式是不同的,snownlp在處理大眾點評網(wǎng)的美食評論上準確度一般。
2? 基于樸素貝葉斯的情感分析
2.1? 數(shù)據(jù)預處理
在開始實驗之前,需要先將文本數(shù)據(jù)處理成所需的格式,這個過程包括以下5個步驟:
(1)分詞。中文文本與英文不同,一句話中沒有空格,分界形式只體現(xiàn)在句子與句子之間,所需的包含情感的詞語無法直接獲得,因此對評論文本數(shù)據(jù)進行分詞處理就成了實驗前必不可少的環(huán)節(jié)。本文采用jieba分詞系統(tǒng),通過jieba對大眾點評網(wǎng)中的美食評論文本comment列進行切割,將切割后的結(jié)果寫到新列cut_comment中。
(2)去停用詞。本實驗采用的是來源于哈爾濱工業(yè)大學的去停用詞表,用來去除虛詞、冠詞、助詞等。
(3)去除關(guān)鍵詞。文本評論中包含有較多的無效評論,這些評論會影響分析的效果,本實驗去除了一些超過一定比例的關(guān)鍵詞和低于一定比例的關(guān)鍵詞。
(4)構(gòu)建詞向量。本文采用Bag of words模型,該模型在分析文本時,對文本中詞語的順序、語法和句法等因素都忽略不計,把每一個詞當作是一個單獨的個體來看待。
(5)劃分數(shù)據(jù)集。在對樸素貝葉斯模型進行訓練前,首先需要區(qū)分本實驗所需的X和Y,本文將使用jieba分詞得到的cut_comment設置為X,將sentiment設置為Y,采用sklearn中的train_test_split函數(shù)將整個數(shù)據(jù)集按照4:1的比例分為訓練集x_train和測試集x_test。
2.2? 訓練模型階段
貝葉斯算法是一種統(tǒng)計學中概率分類的算法,其算法原理是借助貝葉斯公式,利用數(shù)據(jù)中某特征的先驗概率,推算出其后延的概率,然后選擇最大可能的后延概率,作為該特征所屬的類。樸素貝葉斯算法是貝葉斯算法中的一種。在整個算法過程中,樸素貝葉斯所使用的是最原始、最簡單的假設,這也是它被稱為樸素貝葉斯的原因所在。
在sklearn中,樸素貝葉斯算法有三種,分別是高斯樸素貝葉斯(GaussianNB)、多項式樸素貝葉斯(MultinomialNB)和伯努利樸素貝葉斯(BernoulliNB)[5]。
GaussianNB算法是假設每個標簽的數(shù)據(jù)都服從高斯分布(正態(tài)分布),是一種先驗為高斯分布的樸素貝葉斯算法,高斯分布的概率密度函數(shù)計算公式為:
其中,Ck為Y的第k個類別,?k和σ2k為第k類樣本在第i個屬性上取值的均值和方差。
MultinomialNB算法是假設每個標簽的數(shù)據(jù)特征是通過一個多項式分布生成的,是一種先驗為多項式分布的樸素貝葉斯算法。多項式分布可以用于計算各種類型樣本數(shù)據(jù)出現(xiàn)的概率,因此該模型適用于對文本進行分析,其中分布式的公式為:
其中,Nyi為特征i在類別y的樣本中發(fā)生的次數(shù),Ny為類別y的樣本中所有特征發(fā)生的次數(shù),n為特征數(shù)量,a為平滑系數(shù)。
BernoulliNB算法是假設數(shù)據(jù)集中每個數(shù)據(jù)的特征為二元伯努利分布,是一種先驗為伯努利分布的樸素貝葉斯算法[6],伯努利分布公式為:
本文采用的是多項式樸素貝葉斯(MultinomialNB)算法,它的核心算法是執(zhí)行計數(shù)的工作,本實驗訓練MultinomialNB樸素貝葉斯的步驟為:
(1)在已經(jīng)完成文本預處理的基礎(chǔ)上,開始對文本數(shù)據(jù)進行訓練,使用fit_transform()函數(shù)對訓練集數(shù)據(jù)x_train進行處理,fit_transform()函數(shù)可以看作是fit()函數(shù)和transform ()函數(shù)的結(jié)合,它的功能既包括訓練又包括轉(zhuǎn)換,通過學習訓練數(shù)據(jù)集中的部分數(shù)據(jù),找到該數(shù)據(jù)集的規(guī)則,然后根據(jù)規(guī)則對數(shù)據(jù)進行轉(zhuǎn)換,從而實現(xiàn)數(shù)據(jù)集的標準化、歸一化。
(2)在完成訓練數(shù)據(jù)集歸一化的基礎(chǔ)上,通過fit()函數(shù),建立本實驗所需的模型——多項式樸素貝葉斯模型。
(3)在所建立MultinomialNB模型的基礎(chǔ)上,通過調(diào)用score()函數(shù),對大眾點評網(wǎng)文本評論的情感分析的準確率進行求解,結(jié)果為90.62%,該結(jié)果與使用snownlp進行情感分析的結(jié)果相比,準確率較高。
2.3? 測試模型階段
本階段主要是針對已經(jīng)訓練好的模型,其主要步驟及效果為:
使用transform()函數(shù)從測試集數(shù)據(jù)x_test中提取一些數(shù)據(jù)的詞頻,將其轉(zhuǎn)換成詞頻矩陣,將結(jié)果與測試數(shù)據(jù)集y_test放到訓練好的樸素貝葉斯模型中,計算本實驗的測試數(shù)據(jù)集在樸素貝葉斯模型下的準確率,結(jié)果為83.75%。本文利用snownlp和樸素貝葉斯兩種不同的方法對同一文本集進行了情感分析,兩種方法的準確率對比如表1所示。
完成測試數(shù)據(jù)集準確率的計算后,再次使用transform()函數(shù),從全部評論數(shù)據(jù)cut_comment中提取詞頻,轉(zhuǎn)換成詞頻矩陣,將結(jié)果傳到訓練好模型下的predict()函數(shù)中,使用本實驗的樸素貝葉斯模型對全部的點評文本進行情感預測分析,其效果如圖2所示,主要代碼為:
#測試數(shù)據(jù)
x_test_vect = vect.transform(x_test)
print(nb.score(x_test_vect, y_test))
#將結(jié)果放到data數(shù)據(jù)中
x_vec = vect.transform(x)
nb_result = nb.predict(x_vec)
data[‘nb_result] = nb_result
print(data)
3? 結(jié)? 論
通過效果對比可以發(fā)現(xiàn),在美食評論數(shù)據(jù)方面,樸素貝葉斯算法的情感分析效果明顯高于snownlp,但是在處理不同領(lǐng)域的評論文本時,分類器的效果不同,具有一定的局限性。雖然本實驗所提出的樸素貝葉斯模型準確率相對較高,但是本實驗的訓練集較少,受樣本中評論文本和打分情況的影響較大,沒有進行交叉驗證?;跈C器學習的文本情感分析有一些弊端,所需的人力物力成本較高,當前比較流行的深度學習在文本情感分析領(lǐng)域的效果較好,現(xiàn)在的目標就是在今后的工作中,多多接觸一些基于深度學習的情感分析案例,以做進一步的探索。
參考文獻:
[1] 付華.電子優(yōu)惠券顧客使用意愿影響因素分析 [J].全國商情,2016(32):3-4.
[2] 王俊.基于跳轉(zhuǎn)和多注意力神經(jīng)網(wǎng)絡的文本情感分析 [D].重慶:重慶郵電大學,2020.
[3] 趙剛,徐贊.基于機器學習的商品評論情感分析模型研究 [J].信息安全研究,2017,3(2):166-170.
[4] 王欣,周文龍.基于Python的微博情感分析系統(tǒng)設計 [J].信息與電腦(理論版),2019(6):76-77+80.
[5] 余華鴻,周鳳艷,陳毛毛.基于機器學習的KDD-CUP99網(wǎng)絡入侵檢測數(shù)據(jù)集的分析[J].計算機工程與科學,2019,41(S1):91-97.
[6] 葛霓琳,凡甲甲.基于樸素貝葉斯和支持向量機的評論情感分析 [J].計算機與數(shù)字工程,2020,48(7):1700-1704.
作者簡介:劉策(1998—),男,漢族,河北保定人,碩士研究生在讀,研究方向:人工智能與大數(shù)據(jù)分析;李貞(1997—),女,漢族,河南洛陽人,碩士研究生在讀,研究方向:人工智能與大數(shù)據(jù)分析;顏明會(1997—),男,漢族,江蘇鹽城人,碩士研究生在讀,研究方向:軟件測試、數(shù)據(jù)分析與大數(shù)據(jù)處理。