Python制作中文词云图

#-*- coding: utf-8 -*-
import re, collections, jieba, wordcloud
import numpy as np
import pandas as pd
from PIL import Image
import matplotlib.pyplot as plt

#读取文件

inputfile = open('article.txt', encoding='utf-8')  #打开文件
data = inputfile.read()  #读出整个文件
inputfile.close()  #关闭文件
remove_word = open('remove_word.txt', encoding='utf-8') #存放无意义词,一行一个
remove_words = []
picture = 'redheart.jpg'  #背景图
while True:
    mystr = remove_word.readline()
    if not mystr:
        break
    remove_words.append(str(mystr).replace("\n",""))

#文本预处理
pattern =re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')  #定义正则表达式匹配模式
string_data = re.sub(pattern, '', data)  #将复合模式的字符去除

# 文本分词
seg_list_exact = jieba.cut(string_data, cut_all = False)  #精确模式分词
object_list = []

for word in seg_list_exact:  #循环读出每个分词
    if word not in remove_words:  #如果不在去除词库中
        object_list.append(word)  #将分词追加到列表

#词频统计
word_counts = collections.Counter(object_list)  #对分词作词频统计
word_counts_top100 = word_counts.most_common(100)
results = pd.DataFrame(word_counts_top100)  #输出前100最高频的词存到wordcloud.csv里面,第一遍运行之后将排名靠前的无意词复制到remove_word.txt里面
results.to_csv('wordcloud.csv', index = False)  #输出词频统计结果

#词频展示
background = np.array(Image.open(picture))  #定义词频背景,网上随便下一张图
reviews_cloud = wordcloud.WordCloud(
    background_color = 'white',  #设置背景颜色
    font_path = r'C:\WINDOWS\Fonts\FZYTK.TTF',  #设置字体格式,不需要安装软件,直接去C盘找就好了,找到Fonts文件夹后在里面找到自己要的字体,单击右键查看属性就能复制文件名了。
    mask = background,
    max_words = 200,  #最多显示词数
    # max_font_size = 100,  #字体最大值
    width = 2400,
    height = 1600
)

reviews_cloud.generate_from_frequencies(word_counts)  #从字典生成词云
image_colors = wordcloud.ImageColorGenerator(background)  #从背景图建立颜色方案
reviews_cloud.recolor(color_func = image_colors)  #将词云颜色设置为背景图方案
reviews_cloud.to_file("temp.jpg")  #将图片输出为文件
plt.imshow(reviews_cloud)  #显示词云
plt.axis('off')  #关闭坐标轴
plt.show() #显示图像

做词云图的数据来源是《Python数据分析与挖掘实战》里京东上美的热水器的评论,下面是剔除了出现频次最高的前100个词里的无意义词之后的结果,主要是安装、速度、价格、售后服务、质量这些。
Python制作中文词云图_第1张图片

你可能感兴趣的:(Python)