在没有感情词库时对文本进行词云分析
#库导入
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
from textblob import TextBlob
#上传数据文件
from google.colab import files
uploaded=files.upload()
f = open('microwave.txt', 'r')
data=f.read()
#将文本按词分裂
pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')
data = re.sub(pattern, '', data)
# 文本分词--精确模式分词
seg_list_exact = jieba.cut(data,cut_all = False)
pos_list = []#积极词性列表
neg_list=[]#消极词性列表
#对每个词进行情感分析,情感值大于某值时装入积极词性列表,小于某值时装入消极词汇列表
for word in seg_list_exact:
blob=TextBlob(word)
if blob.sentiment.polarity > 0.6:
pos_list.append(word)
if blob.sentiment.polarity < -0.6:
neg_list.append(word)
至此,就建立了一个自己的消极/积极词汇库,此时的词汇库还是有重复词汇的,可以使用列表去重(lst2 = list(set(lst1))(由于后面用到对生成的原词库作词云图,本文没有进行去重)
https://blog.csdn.net/Jerry_1126/article/details/79843751
然后即可以利用词汇库写相关代码如利用循环等对需要处理的文本进行积极/消极词频统计
下面是直接对消极词汇库作词云图
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
pos_word_counts = collections.Counter(pos_list)
pos_word_counts_top100 = pos_word_counts.most_common(100)
neg_word_counts = collections.Counter(neg_list)
neg_word_counts_top100 = neg_word_counts.most_common(100)
pos_word_count1=dict(pos_word_counts_top100)
neg_word_count1=dict(neg_word_counts_top100)
wc= WordCloud(
background_color="white", #设置背景为白色,默认为黑色
width=1500, #设置图片的宽度
height=960, #设置图片的高度
margin=10 #设置图片的边缘
).generate_from_frequencies(neg_word_count1)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
wc.to_file('my_test2.png')
#files.download('./my_test2.png')#colab上下载文件
关于使用词库进行词频可以阅读
https://blog.csdn.net/Asher117/article/details/88185985