参考:http://www.cnblogs.com/sdu20112013/p/10193392.html
之前参考以上博客,利用jieba分词并制作了《格林德沃之罪》的词云。
但是不太理想,这一次刚好看到了新发布的pkuseg,利用这个新的分词工具做词云。
这一次加入了自己的词典
盖勒特
格林德沃
邓布利多
霍格沃茨
霍格沃兹
哈利波特
哈里波特
罗琳
纽特
蒂娜
火蜥蜴
主要代码,参考见置顶网址
import re#正则表达式
import pandas as pd
from scipy.misc import imread # 这是一个处理图像的函数
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
import pkuseg
def wordCount(segment_list):
word_dict = {}
for item2 in segment_list:
if item2 not in word_dict:
word_dict[item2] = 1
else:
word_dict[item2] += 1
return word_dict
#词频统计 代码参考:https://blog.csdn.net/fengjianc/article/details/78929121
f = open("哈工大停用词表.txt",encoding='utf-8')
stopword_list = [line.strip() for line in f.readlines()]
new_comments = []
data = pd.read_csv("sqdw影评.csv",engine='python',encoding ='utf-8')
dataset = data.values
List = []
for k in dataset:
List.append(k[1])
seg=pkuseg.pkuseg(user_dict='mydict.txt')
for comment in List:
new_comment = re.sub(r'[^\u4e00-\u9fa5]', '', comment) #去标点 https://github.com/fxsjy/jieba/issues/528
new_comments.append(new_comment)
word_list = [word for word in seg.cut(''.join(new_comments)) if word not in stopword_list]
back_color = imread('1.png') # 解析该图片
wc = WordCloud(background_color='black', # 背景颜色
max_words=2000, # 最大词数
mask=back_color, # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略
collocations=False,
#max_font_size=100, # 字体最大值
#min_font_size=20, # 字体最小值
font_path="C:/Windows/Fonts/SIMYOU.ttf", # 解决显示口字型乱码问题,可进入C:/Windows/Fonts/目录更换字体
# random_state=42, # 为每个词返回一个PIL颜色
)
wc.generate_from_text(" ".join(word_list))#根据文本绘制云图
# wc.generate_from_frequencies(wordCount(word_list)) #使用频率绘制云图
print(wordCount(word_list))#得到分词各个词频
# 基于彩色图像生成相应彩色
image_colors = ImageColorGenerator(back_color)
# 显示图片
#plt.imshow(wc)
# 关闭坐标轴
#plt.axis('off')
# 绘制词云
plt.figure()
# plt.imshow(wc, interpolation="bilinear")
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis('off')
# 保存图片
wc.to_file('pku2.png')
词云结果
十分满意的一个结果,利用文本制作词云
利用频率制作词云,可以看到停用词去除的不太完善,不如文本制作词云。
重新用结巴分词,加入词典,可以看到结果也是好了很多。
pkuseg分词结果一览(部分)
{'邓布利多': 84, '格林德': 3, '沃领': 1, '结婚证': 3, '伤害': 4, '对方': 4, '后来': 3, '嗅嗅': 14, '帮': 2, '偷到': 1, '准备': 5, '销毁': 1, '格林德沃': 86, '离婚': 3, '故事': 99, '强大': 5, '年轻': 12, '脱发': 1, '老': 5, '却': 26, '长': 13, '出': 33, '浓密': 2, '秀发': 1, '非常': 33, '值得': 5, '上班族': 1, '中': 52, '普及': 1, '克雷登斯': 7,'格林德沃法': 1, '力不及伏': 1, '魔但': 1,'普老年': 1}
# 以上截取的部分可以看出还是有缺陷。