日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

【Python】文本情感分析及繪制詞云

系統 1676 0

碼字不易,喜歡請點贊!!!

這篇文章主要分享了使用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()

            
          

【Python】文本情感分析及繪制詞云_第1張圖片
自定義背景圖:
【Python】文本情感分析及繪制詞云_第2張圖片

            
              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()

            
          

結果:
【Python】文本情感分析及繪制詞云_第3張圖片
圖片保存到本地:

            
              my_wordcloud.to_file(r"wordcloud1.png")

            
          

保存到本地之后圖片質量熱別高:
【Python】文本情感分析及繪制詞云_第4張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 萝北县| 蓬莱市| 新平| 九台市| 青州市| 邓州市| 密山市| 龙井市| 舞阳县| 襄汾县| 徐水县| 靖州| 苗栗县| 南雄市| 沁源县| 隆德县| 来宾市| 巴彦县| 斗六市| 湛江市| 咸阳市| 平顺县| 郯城县| 安康市| 顺昌县| 昭觉县| 天祝| 霍林郭勒市| 哈巴河县| 兰溪市| 竹山县| 青川县| 武山县| 连山| 德令哈市| 都安| 始兴县| 杭州市| 拜泉县| 韩城市| 南康市|