<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
情感分析(sentiment analysis)是2018年公佈的電腦科學技術名詞。
它可以根據文字內容判斷出所代表的含義是積極的還是負面的,也可以用來分析文字中的意思是褒義還是貶義。
一般應用場景就是能用來做電商的大量評論資料的分析,比如好評率或者差評率的統計等等。
我們這裡使用到的情感分析的模組是snownlp,為了提高情感分析的準確度選擇加入了jieba模組的分詞處理。
由於以上的兩個python模組都是非標準庫,因此我們可以使用pip的方式進行安裝。
pip install jieba pip install snownlp
jieba是一個強大的中文分詞處理庫,能夠滿足大多數的中文分詞處理,協助snownlp的情感分析。
# Importing the jieba module and renaming it to ja. import jieba as ja from snownlp import SnowNLP # Importing the snownlp module and renaming it to nlp.
為了避免大家使用過程中出現的版本衝突問題,這裡將python的核心版本展示出來。
python直譯器版本:3.6.8
接下來首先建立一組需要進行情感分的資料來源,最後直接分析出該文字代表的是一個積極情緒還是消極情緒。
# Creating a variable called analysis_text and assigning it the value of a string. analysis_text = '這個實在是太好用了,我非常的喜歡,下次一定還會購買的!'
定義好了需要分析的資料來源語句,然後就是分詞處理了。這裡說明一下為什麼需要分詞處理,是因為snownlp這個情感分析模組它的中文分詞結果不太標準。
比如說,'不好看',這個詞如果使用snownlp來直接分詞的話大概率的就會分為'不'和'好看'這兩個詞。
這樣的明明是一個帶有負面情緒的中文詞彙可能就直接被定義為正面情緒了,這也就是為什麼這裡需要先使用jieba進行分詞處理了。
# Using the jieba module to cut the analysis_text into a list of words. analysis_list = list(ja.cut(analysis_text)) # Printing the list of words that were cut from the analysis_text. print(analysis_list) # ['這個', '實在', '是', '太', '好', '用', '了', ',', '我', '非常', '的', '喜歡', ',', '下次', '一定', '還會', '購買', '的', '!']
根據上面分詞以後的結果來看,分詞的粒度還是比較細緻的,每個詞都是最多兩個字串的長度。
使用jieba提供的cut()函數,關鍵詞已經分割完成了,接著就是提取主要的關鍵字。
一般情況下我們做情感分析都會提取形容詞型別的關鍵字,因為形容詞能夠代表該文字所表現出來的情緒。
# Importing the `posseg` module from the `jieba` module and renaming it to `seg`. import jieba.posseg as seg # This is a list comprehension that is creating a list of tuples. Each tuple contains the word and the flag. analysis_words = [(word.word, word.flag) for word in seg.cut(analysis_text)] # Printing the list of tuples that were created in the list comprehension. print(analysis_words) # [('這個', 'r'), ('實在', 'v'), ('是', 'v'), ('太', 'd'), ('好用', 'v'), ('了', 'ul'), (',', 'x'), ('我', 'r'), ('非常', 'd'), ('的', 'uj'), ('喜歡', 'v'), (',', 'x'), ('下次', 't'), ('一定', 'd'), ('還', 'd'), ('會', 'v'), ('購買', 'v'), ('的', 'uj'), ('!', 'x')]
根據上面的python推導式,將分詞以後的關鍵字和該關鍵自對應的詞性提取出來。
下面是一份jieba模組使用過程中對應的詞性表,比如詞性標記a代表的就是形容詞。
# This is a list comprehension that is creating a list of tuples. Each tuple contains the word and the flag. keywords = [x for x in analysis_words if x[1] in ['a', 'd', 'v']] # Printing the list of tuples that were created in the list comprehension. print(keywords) # [('實在', 'v'), ('是', 'v'), ('太', 'd'), ('好用', 'v'), ('非常', 'd'), ('喜歡', 'v'), ('一定', 'd'), ('還', 'd'), ('會', 'v'), ('購買', 'v')]
根據關鍵詞的標籤提取出關鍵字以後,這個時候可以將情感標記去除只保留關鍵字就可以了。
# This is a list comprehension that is creating a list of words. keywords = [x[0] for x in keywords] # Printing the list of keywords that were created in the list comprehension. print(keywords) # ['實在', '是', '太', '好用', '非常', '喜歡', '一定', '還', '會', '購買']
到現在為至,分詞的工作已經處理完了,接下來就是情感分析直接使用snownlp分析出結果。
# Creating a variable called `pos_num` and assigning it the value of 0. pos_num = 0 # Creating a variable called `neg_num` and assigning it the value of 0. neg_num = 0 # This is a for loop that is looping through each word in the list of keywords. for word in keywords: # Creating a variable called `sl` and assigning it the value of the `SnowNLP` function. sl = SnowNLP(word) # This is an if statement that is checking to see if the sentiment of the word is greater than 0.5. if sl.sentiments > 0.5: # Adding 1 to the value of `pos_num`. pos_num = pos_num + 1 else: # Adding 1 to the value of `neg_num`. neg_num = neg_num + 1 # This is printing the word and the sentiment of the word. print(word, str(sl.sentiments))
下面就是對原始文字提取關鍵詞以後的每個詞的情感分析結果,0-1之間代表情緒越接近於1代表情緒表現的越是積極向上。
# 實在 0.3047790802524796 # 是 0.5262327818078083 # 太 0.34387502381406 # 好用 0.6558628208940429 # 非常 0.5262327818078083 # 喜歡 0.6994590939824207 # 一定 0.5262327818078083 # 還 0.5746682977321914 # 會 0.5539033457249072 # 購買 0.6502590673575129
為了使得關鍵詞的分析結果更加的符合我們的想法也可以對負面和正面的關鍵詞進行統計得到一個結果。
# This is a string that is using the `format` method to insert the value of `pos_num` into the string. print('正面情緒關鍵詞數量:{}'.format(pos_num)) # This is a string that is using the `format` method to insert the value of `neg_num` into the string. print('負面情緒關鍵詞數量:{}'.format(neg_num)) # This is a string that is using the `format` method to insert the value of `pos_num` divided by the value of `pos_num` # plus the value of `neg_num` into the string. print('正面情緒所佔比例:{}'.format(pos_num/(pos_num + neg_num))) # 正面情緒關鍵詞數量:8 # 負面情緒關鍵詞數量:2 # 正面情緒所佔比例:0.8
以上就是Python基於jieba分詞實現snownlp情感分析的詳細內容,更多關於Python snownlp情感分析的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45