基于word文档,使用Python输出关键词和词频,并将关键词的词性也标注出来

news2024/11/25 13:44:14

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

移船相近邀相见,添酒回灯重开宴。

大家好,我是Python进阶者。

一、前言

前几天在有个粉丝问了个问题,大概意思是这样的:基于Python代码,要求输出word文档中的关键词和词频,并且将关键词的词性也标注出来,最终输出一个Excel文件,一共3列,列名分别是关键词、词频和词性。

二、实现过程

这里一开始我也不知道怎么处理,后来问了科大讯飞的AI平台,给了一个代码,如下所示,但是跑不起来。

import win32com.client as win32
import jieba
from collections import Counter
import xlwt

# 打开Word文档
word = win32.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open('C:\\Desktop\\example.docx')

# 读取文档内容并将其存储为字符串
content = doc.Content.Text

# 将字符串转为列表,并进行分词和词性标注
words = jieba.cut(content)
tags = [word.tag for word in words]
freqs = Counter([word for word, tag in zip(words, tags) if tag != 'x'])

# 创建Excel工作簿和工作表
book = xlwt.Workbook()
sheet = book.add_sheet('Keywords')

# 写入表头
sheet.write(0, 0, '关键词')
sheet.write(0, 1, '词频')
sheet.write(0, 2, '词性')

# 写入关键词和对应的信息
for i, (word, freq) in enumerate(freqs.items()):
    sheet.write(i+1, 0, word)
    sheet.write(i+1, 1, str(freq))
    sheet.write(i+1, 2, tags[i])

# 将分词结果转换为列表并写入Excel表格中
words_list = [word for word, tag in zip(words, tags) if tag != 'x']
for i, word in enumerate(words_list):
    sheet.write(i+1+len(words), 0, word)
    freq = str(freqs[word])
    sheet.write(i+1+len(words), 1, freq)
    pos = '' if not tags else tags[i] + '/' + pos_tag[tags[i]]
    sheet.write(i+1+len(words), 2, pos)

# 保存Excel文件
book.save('C:\\Desktop\\example.xls')

一直提示AttributeError: 'str' object has no attribute 'tag',没办法,方法是好的,把tag改为flag,也不好使。后来求助了Zelinai,其给了一个解决方法,如下所示:

可以使用 Python 中的 docx 和 openpyxl 库实现该功能,具体步骤如下:

  1. 使用 docx 库读取 word 文档中的所有文本,并将其存入一个字符串中。

  2. 使用 jieba 分词库对文本进行分词处理,并过滤掉无用词汇。

  3. 利用 Python 中的 Collection 库的 Counter 类,统计每个单词的词频。

  4. 使用 Python 中的 NLTK 库对每个单词进行词性标注,将其存入一个字典中。

  5. 使用 openpyxl 库创建一个 Excel 文件,并在其中创建一个工作表。

  6. 将关键词、词性和词频分别写入文件的不同列中。

下面是可能的实现代码:

import docx
import jieba
from collections import Counter
import openpyxl
from openpyxl import Workbook
from nltk import pos_tag

# 读取 word 文档中的内容
doc = docx.Document('test.docx')
text = ""
for para in doc.paragraphs:
    text += para.text

# 对文本进行分词,并过滤无意义单词
words = [word for word in jieba.cut(text) if len(word) > 1 and not word.isnumeric()]

# 统计单词词频
word_counts = Counter(words)

# 对每个单词进行词性标注
pos_dict = dict(pos_tag(word_counts.keys()))

# 将关键词、词性、词频存入列表中
keywords = []
for word, count in word_counts.items():
    pos = pos_dict[word]
    keywords.append([word, count, pos])

# 创建 Excel 文件
wb = Workbook()
sheet = wb.active

# 将关键词、词性、词频写入 Excel 文件
sheet['A1'] = '关键词'
sheet['B1'] = '词频'
sheet['C1'] = '词性'
for i, row in enumerate(keywords):
    sheet['A{}'.format(i+2)] = row[0]
    sheet['B{}'.format(i+2)] = row[1]
    sheet['C{}'.format(i+2)] = row[2]

# 保存 Excel 文件
wb.save('keywords.xlsx')

请注意在使用前需要先安装 jieba, nltk 和 openpyxl 库。

这里运行之后,会出现一个这样的报错,(nltk加载词性词库报错)Resource averaged_perceptron_tagger not found. Please use the NLTK Downloader to obtain the resource:。

其实就是未找到资源averaged_perceptron_tagger,请使用NLTK下载器获取资源。根据报错给的URL,然后去下载对应的语义安装包即可,然后放到任意的一个目录之下,就出来了。

ad67afcdbb5b3064402a505ee0cb57f0.png

查了蛮多资料,后来总算是找到了一个靠谱的解决方法。

14f99893919645dc4ab9a7820e690799.png

最后就可以得到预取的结果了,如下图所示:

9b9488a8b32d1495b41c38b02c7ab800.png

关于词性的意思,网上一大堆,这里就不再一一例举了。

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一个Python文本分析处理的问题,使用Python获取了Word文本中的关键词、词频和词性,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

0d4f5b6d0e27f6af033bd259f39a1461.png

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

3e300c36e53d2db3dce3dda17985fbc7.png

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

268a6e8cc5c4011a3482a875817fa7fe.jpeg

------------------- End -------------------

往期精彩文章推荐:

  • if a and b and c and d:这种代码有优雅的写法吗?

  • Pycharm和Python到底啥关系?

  • 都说chatGPT编程怎么怎么厉害,今天试了一下,有个静态网页,chatGPT居然没搞定?

  • 站不住就准备加仓,这个pandas语句该咋写?

d8a50e724a1d063ea749772179dce9fd.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一道北大强基题背后的故事(三)——什么样的题是好题?

早点关注我,精彩不错过! 上回我们针对这道北大强基题[((1 sqrt(5)) / 2) ^ 12]在答案的基础上给出了出题的可能思路,想一探究竟,相关内容请戳: 一道北大强基题背后的故事(二)——出题者怎么想的…

【Kubernetes入门】Service四层代理入门实战详解

文章目录 一、Service四层代理概念、原理1、Service四层代理概念2、Service工作原理3、Service原理解读4、Service四种类型 二、Service四层代理三种类型案例1、创建ClusterIP类型Service2、创建NodePort类型Service3、创建ExternalName类型Service 三、拓展1、Service域名解析…

Latex中图片排版(多个子图、横排、竖排、添加小标题)

1、两个子图横排 \begin{figure}[!t] \centering %\includegraphics[width3in]{fig5} \subfloat[subfig figure title]{\includegraphics[scale0.5]{superd2}} \subfloat[subfig figure title]{\includegraphics[scale0.5]{superd2}} \caption{title} \label{fig_6} \end{figu…

阿里发布的百亿级高并发系统(全彩版小册),涵盖了所有的高并发操作

高并发 提到“高并发”相信你们应该都不会感到陌生!此时你脑中应该会浮现好多有关高并发的:业务急剧增长、电商购物、电商秒杀、12306抢票、淘宝天猫各种活动等;都是需要用到高并发的,那么如何去设计一个高并发系统抵挡这些冲击呢…

Django的app里面的视图函数

我之前说过需要重点去了解view和model,下面是我的总结。 视图函数是存在view.py里面的,视图函数的主要功能是接收请求、返回响应。在建立应用程序后,先在URL配置文件中加一条配置项指明URL与视图函数的对应关系。然后按照实际需求在视图函数…

三次握手四次挥手过程剖析

【一】预备知识: 1.三次握手并不一定非得成功,最担心得其实就是最后一个akc(应答)丢失,但是还是有配套得解决方案,比如超时重传机制。 2.连接是需要被保存下来得,是需要被os管理起来得&#xf…

被一个gpio口搞死的一天

今天是新项目调试的第一天。 我起的很早,起早的原因很简单,我家楠哥要我送他上学,他说爸爸没有起到一个当爸爸的责任,他也想让爸爸送他上学,然后我就送了。 7点30起来,8点出发,然后回来看了一下…

IDEA把css/js压缩成一行min文件,idea实现右键压缩css和js文件

前言 发布时有些css和js文件较长多行,导致加载的时候略慢,所以想把指定的css或js压缩 实现 整合 yuicompressor-2.4.8.jar 下载地址1:https://github.com/yui/yuicompressor/releases 下载地址2:https://github.com/yui/yuicom…

小学生开“卷”AIGC,绝不能输在起跑线上

图片来源:由无界AI生成 OpenAI的研究报告称,未来,大量工作岗位将受到AI冲击,首当其冲的岗位是作家、数学家、网页设计师、记者、律师…… 自从ChatGPT问世以来,人类会被AI替代的讨论甚嚣尘上,焦虑情绪无处不…

chatgpt赋能python:Python中的倒序遍历:如何使用Python倒序遍历?

Python中的倒序遍历:如何使用Python倒序遍历? Python是一种高级编程语言,它非常适合数据科学、机器学习和人工智能等领域。Python的强大之处在于它有很多内置功能,其中包括倒序遍历。 在本篇文章中,我们将介绍如何使…

EmbodiedGPT|具身智能或将成为实现AGI的最后一公里

卷友们好,我是穆尧。 最近由Chatgpt所引爆的新一代人工智能的革命正在如火如荼的进行,几乎重塑了所有的互联网产品,如办公软件、浏览器插件、搜索引擎、推荐系统等。这样巨大的改变,让大家对通用人工智能又燃起了新的希望&#xf…

CTPN文本检测详解 面试版本

二.关键idea 1.采用垂直anchor回归机制,检测小尺度的文本候选框 2.文本检测的难点在于文本的长度是不固定,可以是很长的文本,也可以是很短的文本.如果采用通用目标检测的方法,将会面临一个问题:**如何生成好…

Autosar诊断实战系列01-手把手教你增加一路31Routine服务

本文框架 1.系列概述2. UDS Routine服务添加3. DcmDspRoutine配置3.1 DcmDspRoutineInfos配置3.2 DcmDspRoutines配置1.系列概述 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意…

编译tolua——2、基础编译tolua

目录 1、编译工具和环境说明 2、基础编译tolua 大家好,我是阿赵。 继续来讲tolua的各个常用平台的编译。 这里使用官方的tolua_runtime-master项目来做编译 具体需要的编译软件和源码地址,在上一篇文章已经介绍过了,先把环境准备好&#xff…

飞桨AI4S污染物扩散快速预测模型,亮相全国数据驱动计算力学研讨会

5月19-21日,第一届全国数据驱动计算力学研讨会在大连召开。本次研讨会由中国力学学会主办,大连理工大学运载工程与力学学部承办,北京理工大学先进结构技术研究院协办。 会议共吸引了400多位来自全国各地高校与企业的老师与学生参会&#xff0…

DNSPod十问林洪祥:顶级带货主播,其实是数字人?

本期嘉宾 林洪祥 风平智能CEO 林洪祥,风平智能CEO。风平智能拥有全球领先的数字人AIGC预训练大模型技术,利用数字人AI知识大模型打造视频版ChatGPT,实现数字人名师、数字人医生、数字人保险客服、数字广告模特、数字人AI直播等,…

百度大模型算法实习岗上岸经验!

Datawhale干货 作者:J同学,学校:天津大学 写在前面 大家好,我是天大J同学,2023找暑期实习期间也算是历经坎坷,最后去了百度做大模型相关工作,虽然本硕均为计算机科班但本身实力尚浅&#xff0c…

全景浏览技术在虚拟现实中的应用

随着虚拟现实技术的发展,全景浏览技术越来越受到人们的关注。全景浏览技术是一种可以将场景全方位呈现给用户的虚拟现实技术,可以为用户带来身临其境的视觉和听觉体验。本文将介绍全景浏览技术在虚拟现实中的应用以及如何利用代码实现这些应用。 一、全…

报名 | 2023中国高校计算机大赛—大数据挑战赛火热开启!

2016年,教育部高等学校计算机类专业教学指导委员会、教育部高等学校软件工程专业教学指导委员会、教育部高等学校大学计算机课程教学指导委员会、全国高等学校计算机教育研究会联合创办了“中国高校计算机大赛”(China Collegiate Computing Contest&…

2023最新SpringCloud Alibaba全彩版笔记开源,阿里大牛带你手撸微服务结构项目实战

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,依托Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中…