当个技术宅其实挺难的,我代码能力太弱了。
需要放在工作路径下的文件有:中文字体文件、背景图片、停用词、语料。
导入需要的库:
import csv
import re, jieba
# 词云生成工具
from wordcloud import WordCloud,ImageColorGenerator
# 对中文进行处理
import matplotlib.font_manager as fm
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
词云那个库安装应该没什么障碍。
读取语料:
def read_csv(filename):
text = ''
# 读取文件内容
# 编码方式要根据实际情况
with open(filename, 'r', encoding='gbk', newline='') as file_test:
reader = csv.reader(file_test)
i = 0
for row in reader:
if i > 0:
text += row[4] # 里面索引表示要读哪一列
i += 1
print('共有:' + str(i - 1) + '条文本')
return text
读取停用词文件:
# 加载停用词到一个集合
def load_stopword(stopwords_path):
stopword_set = set()
with open(stopwords_path, "r", encoding = "utf-8") as stopwords:
for stopword in stopwords:
stopword_set.add(stopword.strip('\n'))
return stopword_set
语料文本预处理:
# 只保留中文字符,分词,去除停用词
# 文件路径要写成/不能是\
def clearText(text, stopword_set):
# 定义一个空列表,将已经去除了停用词的分词保存
mywordList=[]
#text = re.sub('[,.?!:;\'\",。?!:;、‘’“”《》~ \r\n]', '', text)
# 只保留中文字符
text = ''.join(re.findall(r'[\u4e00-\u9fa5]', text))
#进行分词
seg_list = jieba.lcut(text,cut_all=False)
#对默认模式分词的结果进行遍历,去除停用词
for myword in seg_list:
#去除停用词
if (myword not in stopword_set) and (len(myword.strip())>1):
mywordList.append(myword.strip())
return ' '.join(mywordList)
绘制并保存词云图:
def make_wordcloud(text1):
# 把不想展示的词语删掉
text1 = text1.replace("公司", "")
# 读取词云形状的图片
bg = plt.imread("bgpic.jpg")
# 生成
wc = WordCloud(# FFFAE3
background_color="white", # 设置背景为白色,默认为黑色
width=890, # 设置图片的宽度
height=600, # 设置图片的高度
mask=bg,
# margin=10, # 设置图片的边缘
max_font_size=150, # 显示的最大的字体大小
random_state=50, # 为每个单词返回一个PIL颜色
font_path='simkai.ttf' # 中文处理,用系统自带的字体
).generate_from_text(text1)
# 为图片设置字体
my_font = fm.FontProperties(fname='simkai.ttf')
# 图片背景
bg_color = ImageColorGenerator(bg)
# 开始画图
plt.imshow(wc.recolor(color_func=bg_color))
# 为云图去掉坐标轴
plt.axis("off")
# 画云图,显示
# 保存云图
wc.to_file("pictures/wordcloud1210.png")
运行:
contents = read_csv("finalrisktext.csv")
stopword_set = load_stopword("stopwords0.txt")
text = clearText(contents, stopword_set)
make_wordcloud(text)
效果:
目前还不清楚怎么把词语搞成彩色的,后面有空再研究研究。
参考资料:https://github.com/XksA-me/spider/blob/master/spider_maoyan/analysis_data.py