用pkuseg分词并制作词云

参考: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')

词云结果


2th.png

十分满意的一个结果,利用文本制作词云

0th.png

利用频率制作词云,可以看到停用词去除的不太完善,不如文本制作词云。


jieba.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}
# 以上截取的部分可以看出还是有缺陷。

你可能感兴趣的:(用pkuseg分词并制作词云)