我们能经常在一个个人博客站点见到词云这种东西,好奇心来了,那我们该如何去实现一个我们自己的词云么?
这篇博客带你使用THULAC
中文分词与wordcloud
开源库如何将一篇中文文章生成词云图片~
使用THULAC分词
THULAC
在我的这篇博客《使用TF-IDF算法、THULAC和余弦相似性算法比较影评的相似程度 》已经提到其的使用方法,这里不再重述,直接上代码:
'''
检查是否为中文字符
'''
def check_contain_chinese(check_str):
for ch in check_str:
if u'\u4e00' <= ch <= u'\u9fff':
return True
return False
'''
数据清洗并改成标准格式,使用生成器
咳咳,词瞎用的,请勿对号理解~
'''
def createGenerator(mylist):
for word in mylist:
papapa = True
for check in word[0]:
biubiu = check_contain_chinese(check)
if(biubiu):
pass
else:
papapa = False
break
if(papapa):
yield word[0]
'''
读取文件,进行分词处理并获取长度
'''
def CutArticle(article):
file = open(article,'rb')
data = file.read().decode('utf-8')
file.close()
thu = thulac.thulac()
text = thu.cut(data)
length = len(text)
demo = createGenerator(text)
return demo,length
使用wordcloud生成词云
back_coloring = imread("F:/acticle compare/large_d24a4641813530f9.jpg")
wc = WordCloud(background_color="white", max_words=2000, height=640, width=600, max_font_size=20).generate(f)
# width,height,margin可以设置图片属性
# generate 可以对全部文本进行自动分词,但是他对中文支持不好
# 你可以通过font_path参数来设置字体集
#background_color参数为设置背景颜色,默认颜色为黑色
image_colors = ImageColorGenerator(back_coloring)
# 显示图片
plt.imshow(wc)
# 关闭坐标轴
plt.axis('off')
# 绘制词云
plt.figure()
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis('off')
# 保存图片
wc.to_file('F:/acticle compare/19th.png')
参数可以使用dir
和help
来查看帮助,这里直接举个例子,如果还是不知道怎么具体使用,官方GitHub有更多的例子,可以前去观看
效果图如下:
代码继续放GitHub了