首页 > 编程语言 >Python中文分词、词频统计并制作词云图

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

时间:2023-10-29 16:38:17浏览次数:36  
标签:word Python mask 词频 result words report import 分词


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

中文分词、词频统计

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等。

简单词云图

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模块来生成词云图。

按照图片绘制词云图

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遮罩参数。

按照图片绘制渐变词云图

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重绘了颜色。


标签:word,Python,mask,词频,result,words,report,import,分词
From: https://blog.51cto.com/lilongsy/8080495

相关文章

  • Python数据结构——栈
    栈(Stack)是一种基本的数据结构,它遵循“后进先出”(Last-In-First-Out,LIFO)的原则,即最后放入栈的元素最先出栈。栈常用于管理函数调用、表达式求值、括号匹配等问题。本文将详细介绍Python中栈数据结构的使用,并提供示例代码来说明。什么是栈?栈是一种线性数据结构,它由一组元素组成,支持两......
  • 一周学会python4变量
    4变量为了正常运行,Python程序需要变量和运算符等基本组件。包括变量和运算符在内的这些元素对于程序员新手来说很容易理解和应用,使他们能够开发出创建复杂软件所需的算法。本章涉及到了第8章函数的内容,如不能理解,可学习函数后再温习。4.1变量简介变量是在Python程序中存储和......
  • python面向对象-学习笔记(三、类方法、实例方法、静态方法)
    方法相关方法的概念描述一个目标的行为动作和函数相似封装了一系列行为动作。比如一个人怎么吃,怎么喝,怎么玩...都可以被调用最主要区别:调用方式方法的划分实例方法:默认第一个参数是一个实例类方法:默认第一个参数是类静态方法:没有默认参数注意划分的依据:方法的第一......
  • python面向对象-学习笔记(四、类相关的补充)
    元类创建类对象的类对象怎么产生的?由类创建出来的。类是不是对象?是所以类对象是不是由另外一个类创建出来的?是,元类创建类对象的另外一种方式#创建类对象的另外一种方式defrun(self):print("run",self)dog=type("Dog",(),{"count":1,"run":run})prin......
  • python面向对象-学习笔记(五、属性相关的补充)
    私有化属性注意python并没有真正支持私有化,但是可以使用下划线完成伪私有的效果类属性(方法)和实例属性(方法)遵循相同的规则公有属性a在类的内部可以访问在子类的内部可以访问在模块其他地方类的属性可以访问子类的属性可以访问类的实例的属性可以访问子类的......
  • python面向对象-学习笔记(二、类&对象的属性)
    如何定义一个类?创建类的格式class类名: pass怎么通过类,创建出一个对象?创建类,并实例化对象classMoney:passone=Money()#打印类print(Money)#打印类的实例print(one)类的别名和打印类的名称classMoney:pass#打印类的名称print(Money.__na......
  • Python 实现 xls 文件转 xlsx 的若干方法
    在Python中,可以采用pandas、pyexcel、win32com和xls2xlsx这四个模块,实现xls转xlsx格式。以Excel示例文件test_Excel.xls为例,具体内容如下图所示:  pandas 安装命令pipinstallpandas-ihttps://mirrors.aliyun.com/pypi/simple具体使用方法importpa......
  • Python 模块:创建、导入和使用
    什么是模块?将模块视为代码库。模块是一个包含一组函数的文件,您想要在应用程序中包含这些函数。创建一个模块要创建一个模块,只需将要包含在其中的代码保存在扩展名为.py的文件中:示例:将以下代码保存在名为mymodule.py的文件中:defgreeting(name):print("Hello,"+name)......
  • python循环迭代
    学习目标掌握for与while循环掌握continue,break,pass的区别核心知识循环中有3种常见的方式顺序:从上向下,顺序执行代码(从上往下执行)分支:根据条件判断,决定执行代码的分支(if/else)循环:让特定代码重复执行(for/while)for循环for可循环遍历的对象有字符串,列表,字典,集合,元组#......
  • python条件判断
    学习目标1、掌握条件判断和流程控制2、掌握条件运算符==,>,<,in3、掌握if/else/elif判断核心知识if判断判断相同:==和is用于判断两个变量的值是否一样,==是判断数据的值是否一样,is不仅判断数据的值还判断数据是否指向同一个对象。判断大小:可配合>、<来判断大小判断存......