import jieba
import collections
import re
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
from pyecharts import options as opts
from pyecharts.globals import ThemeType
如果在运行中提示你没有的包,可以使用下面的镜像链接在cmd窗口下安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
# 定义删词函数,删除分词结果中的无用词汇
def deal_txt(seg_list_exact):
result_list = []
# 读取需要删去的词文本,文本可为空,代表无删除的词汇,注意改路径
with open('D:\\Desktop\\deal_words.txt', encoding='utf-8') as f:
content = f.readlines()
deal_words = set()
for i in content:
i = i.replace("\n", "") # 去掉读取每一行数据的\n
deal_words.add(i)
for word in seg_list_exact:
# 删除不要的词汇
if word not in deal_words and len(word) > 1:
result_list.append(word)
print(result_list)
return result_list
# 渲染词云函数
def render_cloud(word_counts_top100):
word1 = WordCloud(init_opts=opts.InitOpts(width='1350px', height='750px', theme=ThemeType.MACARONS))
# series_name参数设置系列名称,用于tooltip的显示,legend的图例筛选
# data_pair参数是系列数据项,数据格式如[(word1, count1), (word2, count2)]这样
# word_size_range参数设置单词字体大小范围
# shape参数设置词云图轮廓,有'DIAMOND','TRIANGLE'等可选
word1.add(series_name='词频统计', data_pair=word_counts_top100, word_size_range=[15, 100],
textstyle_opts=opts.TextStyleOpts(font_family='cursive'), shape=SymbolType.TRIANGLE)
# title_opts参数是词云图标题名的设置
# tooltip_opts参数是鼠标放在词云图上时词频统计的提示框设置
word1.set_global_opts(title_opts=opts.TitleOpts('词云图'),
toolbox_opts=opts.ToolboxOpts(is_show=True, orient='vertical'),
tooltip_opts=opts.TooltipOpts(is_show=True, background_color='blue', border_color='yellow'))
# 渲染在html页面上,你也可以保存为jpg、png图片形式
word1.render("D:\\Desktop\\词云图.html")
# 主函数
if __name__ == '__main__':
# 读取分词文本文件
with open('D:\\Desktop\\content.txt', encoding='utf-8') as f:
data = f.read()
# 文本预处理,去除一些无用的字符,使用正则表达式只提取出中文出来
new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)
new_data = " ".join(new_data)
# 利用jieba分词将整句切成分词
seg_list_exact = jieba.cut(new_data, cut_all=True)
# 删除无用词汇
final_list = deal_txt(seg_list_exact)
# 筛选后统计
word_counts = collections.Counter(final_list)
# 获取前100最高频的词
word_counts_top100 = word_counts.most_common(100)
# 打印出来看看统计的词频
print(word_counts_top100)
# 展示前一百词汇的词云图
render_cloud(word_counts_top100)
共产党宣言链接:百度安全验证
分词结果及前一百词频展示如下:
词云图展示如下:
一目了然啊,阶级斗争是主旋律,愿我们都是无产阶级。