Python中文分词、词频统计并制作词云图

中文分词、词频统计并制作词云图是统计数据常用的功能,这里用到了三个模块快速实现这个功能。

中文分词、词频统计

python 复制代码
import jieba
from collections import Counter

# 1. 读取文本内容并进行分词
with open('demo.txt', mode='r', encoding='gbk') as f:
    report = f.read()
words = jieba.cut(report)

# 2. 按指定长度提取词
report_words = []
for word in words:
    if len(word) >= 4:
        report_words.append(word)
print(report_words)

# 3. 统计高频词汇
result = Counter(report_words).most_common(50)
print(result)

上面代码用jieba模块进行分词,用collections进行词频统计。

jieba是一个优秀的第三方中文词库,用于中文分词。中文分词指的是将一个汉字序列切分成一个一个单独的词。jieba可以帮助你快速高效地完成中文分词,支持三种分词模式:精确模式、全模式和搜索引擎模式。

collections是Python标准库中的一个模块,提供了一些额外的容器类型,以提供Python标准内建容器dictlistsettuple的替代选择。这些容器类型包括namedtupledequeCounter等。

简单词云图

python 复制代码
import jieba.posseg as pseg
from collections import Counter
from wordcloud import WordCloud

# 1. 读取文本内容并进行分词
with open('demo.txt', mode='r', encoding='gbk') as f:
    report = f.read()
words = pseg.cut(report)

# 2. 按指定长度和词性提取词
report_words = []
for word, flag in words:
    if (len(word) >= 4) and ('n' in flag):
        report_words.append(word)
# print(report_words)

# 3. 统计高频词汇
result = Counter(report_words).most_common(50)
# print(result)

# 4. 绘制词云图
content = dict(result)
# print(content)
wc = WordCloud(font_path='PINGFANG MEDIUM.TTF', background_color='white', width=1000, height=600)
wc.generate_from_frequencies(content)
wc.to_file('词云图1.png')

这里用到了wordcloud模块来生成词云图。

按照图片绘制词云图

python 复制代码
import jieba.posseg as pseg
from collections import Counter
from PIL import Image
import numpy as np
from wordcloud import WordCloud

# 1. 读取文本内容并进行分词
with open('demo.txt', mode='r', encoding='gbk') as f:
    report = f.read()
words = pseg.cut(report)

# 2. 按指定长度和词性提取词
report_words = []
for word, flag in words:
    if (len(word) >= 4) and ('n' in flag):
        report_words.append(word)
# print(report_words)

# 3. 统计高频词汇
result = Counter(report_words).most_common(300)
# print(result)

# 4. 绘制词云图
mask_pic = Image.open('map.png')
mask_data = np.array(mask_pic)
print(mask_data)
content = dict(result)
wc = WordCloud(font_path='PINGFANG MEDIUM.TTF', background_color='white', mask=mask_data)
wc.generate_from_frequencies(content)
wc.to_file('词云图2.png')

这里给WordCloud加了mask遮罩参数。

按照图片绘制渐变词云图

python 复制代码
import jieba.posseg as pseg
from collections import Counter
from PIL import Image
import numpy as np
from wordcloud import WordCloud, ImageColorGenerator

# 1. 读取文本内容并进行分词
with open('demo.txt', mode='r', encoding='gbk') as f:
    report = f.read()
words = pseg.cut(report)

# 2. 按指定长度和词性提取词
report_words = []
for word, flag in words:
    if (len(word) >= 4) and ('n' in flag):
        report_words.append(word)
# print(report_words)

# 3. 统计高频词汇
result = Counter(report_words).most_common(300)
# print(result)

# 4. 绘制词云图
mask_pic = Image.open('map.png')
mask_data = np.array(mask_pic)
content = dict(result)
wc = WordCloud(font_path='PINGFANG MEDIUM.TTF', background_color='white', mask=mask_data)
wc.generate_from_frequencies(content)
mask_colors = ImageColorGenerator(mask_data)
wc.recolor(color_func=mask_colors)
wc.to_file('词云图3.png')

这里用recolor重绘了颜色。

相关推荐
XuanRanDev1 小时前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
鹏大师运维7 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
亦枫Leonlew8 小时前
微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
笔记·数学·微积分·1024程序员节
小肥象不是小飞象8 小时前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
一个通信老学姐17 小时前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
力姆泰克17 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克17 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬18 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
转世成为计算机大神18 小时前
网关 Spring Cloud Gateway
java·网络·spring boot·1024程序员节
paopaokaka_luck18 小时前
基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
java·spring boot·小程序·毕业设计·mybatis·1024程序员节