碼字不易,喜歡請點贊!!!
這篇文章主要分享了使用Python來對文本數據進行情感分析以及繪制詞云。
主要步驟包括:
1.文本預處理
2.文本分詞
3.去除停用詞(這里設置為單個詞和一些常見的停用詞)
4.詞頻統計
5.情感分析
6.繪制詞云
首先導入所需的程序辦和文本數據:
#帶入程序包
import pandas as pd
import re
import jieba
import collections
from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS
import matplotlib.pyplot as plt
from PIL import Image
#讀取數據
path = r"data.txt"
with open(path) as f:
data = f.read()
1.使用正則表達式對文本數據進行預處理,這里主要去除數據的一些沒用的符號
# 文本預處理
pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')
data = re.sub(pattern, '', data)
2.使用精準模式對文本進行分詞
# 文本分詞--精確模式分詞
seg_list_exact = jieba.cut(data,cut_all = False)
3.去除停用詞,這里主要去除了一些常見的停用詞和單個詞
object_list = []
# 自定義常見去除詞庫
remove_words = [u'的', u',',u'和', u'是', u'隨著', u'對于', u'對',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',u'通常',u'如果',u'我們',u'需要']
for word in seg_list_exact:
if word not in remove_words:
object_list.append(word)
#去除單個詞
for i in range(len(object_list)-1,-1,-1):
if(len(object_list[i])<2):
object_list.pop(i)
4.詞頻統計,并輸出出現次數最高的100個詞
# 對分詞做詞頻統計
word_counts = collections.Counter(object_list)
# 獲取前100最高頻的詞
word_counts_top100 = word_counts.most_common(100)
print(word_counts_top100)
5.情感分析,這里展示一下簡單的文本情感分析,一般文本情感分析會統計文本中的積極詞和消極詞次數,然后最簡單的方法就是文本中積極詞量化為1,消極詞量化為-1,然后給定權重來計算文本的情感,這里展示統計文本中積極詞和消極詞方法。
#讀取積極、消極詞庫
negPath = r"ntusd-negative.txt"
posPath = r"ntusd-positive.txt"
pos = open(posPath, encoding='utf-8').readlines()
neg = open(negPath, encoding='utf-8').readlines()
#統計積極、消極詞
for i in range(len(pos)):
pos[i] = pos[i].replace('\n','').replace('\ufeff','')
for i in range(len(neg)):
neg[i] = neg[i].replace('\n','').replace('\ufeff','')
posNum = negNum = 0
for i in range(len(object_list)):
if(object_list[i] in pos):
posNum = posNum + 1
elif(object_list[i] in neg):
negNum = negNum + 1
print('posNum:',posNum)
print('negNum:',negNum)
6.繪制詞云,展示結果,這里直接使用的是默認圖片,如果想改變圖片的樣式,可以通過給定Image參數。
#繪制詞云
my_wordcloud = WordCloud(
background_color='white', # 設置背景顏色
# mask=img, # 背景圖片
max_words=200, # 設置最大顯示的詞數
stopwords=STOPWORDS, # 設置停用詞
# 設置字體格式,字體格式 .ttf文件需自己網上下載,最好將名字改為英文,中文名路徑加載可能會出現問題。
font_path='simhei.ttf',
max_font_size=100, # 設置字體最大值
random_state=50, # 設置隨機生成狀態,即多少種配色方案
##提高清晰度
width=1000,height=600,
min_font_size=20,
).generate_from_frequencies(word_counts)
# 顯示生成的詞云圖片
plt.imshow(my_wordcloud)
plt.axis('off')
plt.show()
img = plt.imread(r"C:\Users\vivalavida\Desktop\pp.jpg")
#繪制詞云
my_wordcloud = WordCloud(
background_color='white', # 設置背景顏色
mask=img, # 背景圖片
max_words=200, # 設置最大顯示的詞數
stopwords=STOPWORDS, # 設置停用詞
# 設置字體格式,字體格式 .ttf文件需自己網上下載,最好將名字改為英文,中文名路徑加載可能會出現問題。
font_path='simhei.ttf',
max_font_size=100, # 設置字體最大值
random_state=50, # 設置隨機生成狀態,即多少種配色方案
##提高清晰度
width=1000,height=600,
min_font_size=20,
).generate_from_frequencies(word_counts)
# 顯示生成的詞云圖片
plt.imshow(my_wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
my_wordcloud.to_file(r"wordcloud1.png")
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
