使用python读取word统计词频并生成词云

2024-04-28 20:18

本文主要是介绍使用python读取word统计词频并生成词云,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、准备

需要用到python-docx,jieba和wordcloud模块,先install

pip3 install jieba
pip install wordcloud

2、开始代码

(1)导入需要用到的模块

import re
import jieba
import docx
from wordcloud import WordCloud
import matplotlib.pyplot as plt

(2)读取word文档的文本内容

此模块主要使用到了python-docx,官方文档地址:

注意是import docx 而不是python-docx,我们主要处理获取了表格中的文本信息和正常段落中的文本信息。

#输入参数path为word文档所在路径
def readFile(path):file=docx.Document(path)# 读取每一段的内容article = ' 'for para in file.paragraphs:if para != '/n':article = article + '' + para.text# file.paragraphs只能读取到文档中正常段落中的文本信息,却无法读取到文档中表格里的内容,所以我们还需要继续将表格中的内容也读取出来进行合并# 获取文档中表格信息tables = file.tables  # 获取文档中所有表格对象的列表for i in range(len(tables)):table0 = tables[i]  # 获取表格对象# 获取一个表格的所有单元格cells = table0._cells# 获取单元格内所有文字信息cells_string = [cell.text.replace('\n', ' ').replace('\r', ' ') for cell in cells]# print(cells_string)for i in range(len(cells_string)):article = article + cells_string[i].strip()return article

(3)使用jieba进行分词

结巴分词分为三种模式:精确模式(默认)、全模式和搜索引擎模式

精确模式:试图将句子最精确地切开,适合文本分析;

全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

def wordFrequency(a):# print(article)# print(len(article))# 全模式 cut_all=True# seq_list=jieba.cut(article,cut_all=True)# print(seq_list) #<generator object Tokenizer.cut at 0x0000026EB6F0CD58># print('全模式',list(seq_list))# 精确模式 (默认模式) cut_all =False# seq_list=jieba.cut(article,cut_all=False)# print('精确模式',list(seq_list))# 搜索引擎模式 cut_for_searchseq_list = jieba.cut_for_search(article, )# print('搜索引擎模式',list(seq_list))#通过符号将字符串分割开articleSplit = re.split(" |,|\.|,|。|;|;|、|:|:|:", article)sep_list = " ".join(articleSplit)  # 转为字符串# print(sep_list)articleSplit = seq_listd = {}#需要忽略的符号集合fuhao = [',', '.', ' ', ':', ':', ',', '。', '[', ']', ';', ';', '(', ')', '(', ')', '!', '!']#统计词频for key in articleSplit:if key in d.keys():d[key] = d[key] + 1else:if (len(key.strip()) == 0 or key in fuhao):continued[key] = 1wordlist = ''for key in d:# print(key,d[key])wordlist = wordlist + ' ' + key# print(wordlist)#根据词频进行排序sort_words = sorted(d.items(), key=lambda x: x[1], reverse=True)print(sort_words)return wordlist

(4)词云绘制

def wordcloudGenerate(wordlist):wc = WordCloud(background_color='white',max_words=2000,width=800,height=600,relative_scaling=1,max_font_size=80,random_state=40,font_path="simhei.ttf")# 生成词云wc.generate(wordlist)# 在只设置mask的情况下,你将会得到一个拥有图片形状的词云plt.rcParams['savefig.dpi'] = 300  # 图片像素plt.rcParams['figure.dpi'] = 300  # 分辨率plt.imshow(wc, interpolation='bilinear')plt.axis("off")plt.show()

(5)运行程序

#获取文档对象
path = "D:\\Users\\ASUS-BOOK\\Desktop\\蜀道难.docx"
article = readFile(path)
wordlist = wordFrequency(article)
wordcloudGenerate(wordlist)

在这里插入图片描述

(6)效果图

在这里插入图片描述

这篇关于使用python读取word统计词频并生成词云的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944165

相关文章

android使用阿里云推流播放器记录

android使用阿里云推流播放器记录:     在这里扯一句,如何删除csdn自己上传的资源:(参考:https://blog.csdn.net/qq_38122230/article/details/79894666)      1、阿里云视频播放器sdk地址:https://help.aliyun.com/document_detail/61910.html?spm=a2c4g.1118

luceda ipkiss教程 71:统计线路中器件的个数

**案例分享:**统计线路中某一器件的个数 如,统计SplitterTree中mmi的个数: 所有代码如下: # Copyright (C) 2020 Luceda Photonicsfrom si_fab import all as pdkfrom ipkiss3 import all as i3class GeneralizedSplitterTree(i3.Circuit):spli

Python 检查某个文件是否存在

在Python中,你可以使用os模块的path.exists()函数来检查一个文件是否存在。以下是一个简单的例子: import os # 文件路径 file_path = '/path/to/your/file.txt' # 检查文件是否存在 if os.path.exists(file_path): print(f"文件 {file_path} 存在。") else: p

Windows2008 32位开启服务器PAE大内存支持及SQLServer使用3G以上内存教程

原文出处:http://www.cnblogs.com/winward/archive/2011/12/15/2289134.html 1、(重要)开启Windows2008PAE内存支持: 点击“开始”菜单,展开“程序”菜单,在程序菜单下展开“附件”菜单,找到“命令提示符”右键选择“以管理员身份运行,于弹出的“管理员:命令提示符”的光标处输入:BCDEdit /set PAE forcee

【Python单点知识】通过实例介绍抽象类

文章目录 0. 前言1. 抽象类的概念与特性1.1 定义1.2 特性 2. 抽象类的实现与使用2.1 抽象类的创建2.2 抽象类的特性验证2.3 注册机制与非直接继承 3. 应用场景与设计价值4. 总结 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

什么是 cURL 命令:基本介绍与使用方法

今天专门来讨论下 API 测试中不可避免的部分之一 :cURL。 cURL(client URL)是一个常用的命令行工具,用于通过 URL 传输数据。 开发人员通过 cURL 将数据发送到服务器并接收来自服务器的数据。具体来说,任何用户都可以通过这个命令行界面(CLI)指定一个服务器 URL(要向其提交请求的位置)和要发送到服务器 URL 的数据。cURL 支持多种协议(方案),如 DICT、

ICode国际青少年编程竞赛- Python-4级训练场-嵌套for循环入门

ICode国际青少年编程竞赛- Python-4级训练场-嵌套for循环入门 1、 for i in range(3):Dev.step(3)for j in range(3):Dev.turnLeft()Dev.step(-2)Dev.turnLeft() 2、 for i in range(3):Dev.turnLeft()Dev.step(4)Dev.turnRi

ImageMagick 的基本概念和使用场景

ImageMagick 是一个开源的、跨平台的图像处理软件套件,可以用于创建、编辑、合成、转换图像等各种图像处理操作。它支持超过200多种图像格式,包括常见的JPEG、PNG、GIF,以及一些不常见的格式。ImageMagick 提供了丰富的命令行工具和编程接口,使用户能够在命令行下直接调用,或者通过编程接口进行图像处理操作。 ImageMagick 的基本概念包括图像处理、图像操作和图像格式。

【Python基础】装饰器(3848字)

文章目录 @[toc]闭包什么是装饰器装饰器示例不使用装饰器语法使用装饰器语法 装饰器传参带参数的装饰器类装饰器魔术方法\__call__()类装饰器示例带参数类装饰器property装饰器分页操作商品价格操作 个人主页:丷从心· 系列专栏:Python基础 学习指南:Python学习指南 闭包 在学习装饰器之前,先来了解什么是闭包:【Python基础】闭包(2

使用注解的方式进行配置RabbitMQ

引入依赖: <dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit-test</artifactId><scope>test</scope></dependency> 配置application.yml  server:port: 8082spring:rabbitmq