使用Spacy做中文词频和词性分析

使用Spacy python库做中文词性和词频分析,读取word并给出其中每个词的词频和词性,写入excel表。

1、为什么选择Spacy库
相比与NLTK这个库更快和更准
2、模型比较
zh_core_web_trf模型,模型大,准确性高。
需要确保你的Spacy版本是最新的,因为zh_core_web_trf是一个基于transformer的模型,因为它包含了整个transformer模型。下载和加载这个模型可能需要一些时间,并且会占用较多的内存。

传统的模型如zh_core_web_sm,模型小准确性低

3、常见问题
模型下不下来,直接去github下载whl或者在csdn上下载我的资源。

cd /your_path
pip install  xx.whl

4、代码
代码如下

import pandas as pd
from docx import Document
import spacy# 加载Spacy的中文模型
nlp = spacy.load('zh_core_web_trf')# 读取Word文档
path_r=r"xx.docx"
doc = Document(path_r)
text = ' '.join([paragraph.text for paragraph in doc.paragraphs])# 分析文本
tokens = nlp(text)
word_freq = {}for token in tokens:if token.text in word_freq:word_freq[token.text] += 1else:word_freq[token.text] = 1# 提取词性和词频
results = []
for token in tokens:results.append([token.text, token.pos_, word_freq[token.text]])# 转换为DataFrame
df = pd.DataFrame(results, columns=['词', '词性', '词频'])# 写入Excel
df.to_excel('analysis_results.xlsx', index=False)

在没有GPU的情况下,模型推理巨慢无比,可以考虑使用以下的多进程方式,其中nlp = spacy.load(‘zh_core_web_trf’)可能无法pickle,需要放入analyze_text(paragraph_text, nlp)函数内部。

import pandas as pd
from docx import Document
import spacy
from multiprocessing import Pool, cpu_count
from functools import partial
import itertools# 加载Spacy的中文模型
nlp = spacy.load('zh_core_web_trf')def analyze_text(paragraph_text, nlp):# 分析文本段落tokens = nlp(paragraph_text)word_freq = {}for token in tokens:if token.text in word_freq:word_freq[token.text] += 1else:word_freq[token.text] = 1# 提取词性和词频results = []for token in tokens:results.append([token.text, token.pos_, word_freq[token.text]])return resultsdef main():# 读取Word文档path_r = r"C:\Users\xueshifeng\Desktop\合并.docx"try:doc = Document(path_r)except Exception as e:print(f"Error occurred while loading the document: {e}")returntext = ' '.join([paragraph.text for paragraph in doc.paragraphs])# 分割文本到段落级别(考虑实际情况调整)paragraphs = [p for p in text.split('
') if p.strip()]# 创建一个进程池with Pool(processes=cpu_count()) as pool:# 为每个进程创建一个新的nlp实例with nlp.disable_pipes(*nlp.pipe_names):analyze_text_with_nlp = partial(analyze_text, nlp=nlp.clone())results = pool.map(analyze_text_with_nlp, paragraphs)# 直接构建DataFrameflat_results = list(itertools.chain.from_iterable(results))df = pd.DataFrame(flat_results, columns=['词', '词性', '词频'])# 写入Exceldf.to_excel('analysis_results.xlsx', index=False)if __name__ == "__main__":main()

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

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

相关文章

算法沉淀——队列+宽度优先搜索(BFS)(leetcode真题剖析)

算法沉淀——队列宽度优先搜索(BFS) 01.N 叉树的层序遍历02.二叉树的锯齿形层序遍历03.二叉树最大宽度04.在每个树行中找最大值 队列 宽度优先搜索算法(Queue BFS)是一种常用于图的遍历的算法,特别适用于求解最短路径…

B3638 T1 三角形面积

题目背景 请尽量在 20min 之内写完题目。这是指「写代码」的时间;「读题」时间不计算在内。 题目描述 给定平面直角坐标系上的三个整点 A,B,C 的坐标,求其围成的三角形面积。 数据保证答案一定是整数。所以如果你采用了浮点数来计算,请四…

从零开始学HCIA之网络服务与应用01

1、单通道协议,通信时只需要建立一个TCP/UDP会话,使用固定的端口号,例如 http。 3、多通道协议,通信需要建立多个TCP/UDP会话,使用的端口号未必固定,动态协商生成,例如ftp,sip&…

前端Vue篇之 Vue的基本原理

目录 Vue的基本原理响应式数据模板组件系统指令生命周期钩子虚拟 DOMwatcher Vue的基本原理 Vue.js 是一个流行的 JavaScript 框架,用于构建用户界面和单页面应用。其基本原理包括: 响应式数据:Vue 的核心是响应式数据系统。在创建 Vue 实例…

探秘Java反射:灵活编程的利器

前言 大家好,我是chowley,不知道大家在学习Java的过程中有没有听过反射的概念,今天我来总结一下我心中的Java反射。 在Java编程中,反射是一种强大的工具,它允许程序在运行时检查和操作类、方法、属性等,而…

网络安全产品之认识蜜罐

文章目录 一、什么是蜜罐二、蜜罐的主要类型三、蜜罐的主要功能四、蜜罐的主要组成及核心技术五、蜜罐的优缺点六、蜜罐如何与其他安全工具协同工作?七、什么是“蜜网”?与蜜罐的联系和区别是什么? 蜜罐的概念首次由Clifford Stoll在其1988年…

Ps:统计

Ps菜单:文件/脚本/统计 Scripts/Statistics 统计 Statistics脚本命令提供了一种高效的方法来处理和分析大量图像,使用户能够自动执行复杂的图像分析任务,并在多个图像间应用统计学方法。这个功能极大地扩展了 Photoshop 在科学研究、图像编辑…

【单总线与DS18B20总结和代码实现】

单总线介绍与总结 单总线介绍单总线时序图DS18B20的操作流程代码 读温度代码思路代码实现 单总线介绍 单总线应用案例:Ds18B20、温湿度传感器用到的就是这个,这里Ds18B20从当的角色是从机部分,而开发板充当的部分人是主机部分。 Ds18B20内部结…

docker (三)-开箱即用常用命令

一 docker架构 拉取镜像仓库中的镜像到本地,镜像运行产生一个容器 registry 镜像仓库 registry可以理解为镜像仓库,用于保存docker image。 Docker Hub 是docker官方的镜像仓库,docker命令默认从docker hub中拉取镜像。我们也可以搭建自己…

【数据结构】二叉树的三种遍历

目录 一、数据结构 二、二叉树 三、如何遍历二叉树 一、数据结构 数据结构是计算机科学中用于组织和存储数据的方式。它定义了数据元素之间的关系以及对数据元素的操作。常见的数据结构包括数组、链表、栈、队列、树、图等。 数组是一种线性数据结构,它使用连续…

18 19 SPI接口的74HC595驱动数码管实验

1. 串行移位寄存器原理(以四个移位寄存器为例) 1. 通过移位寄存器实现串转并:一个数据输入端口可得到四位并行数据。 通过给data输送0101数据,那么在经过四个时钟周期后,与data相连的四个寄存器的输出端口得到了0101…

第1章 计算机网络体系结构-1.1计算机网络概述

1.1.1计算机网络概念 计算机网络是将一个分散的,具有独立功能的计算机系统通过通信设备与路线连接起来,由功能完善的软件实现资源共享和信息传递的系统。(计算机网络就是一些互连的,自治的计算机系统的集合) 1.1.2计算机网络的组成 从不同角…

【Linux】环境变量及相关指令

一、环境变量的基本概念 其实,我们早就听说过环境变量,比如在学习 JAVA / Python 的时候,会在 Windows 上配置环境变量: 环境变量到底是什么呢? 环境变量(environment variables)一般是指在操作…

数码管扫描显示-单片机通用模板

数码管扫描显示-单片机通用模板 一、数码管扫描的原理二、display.c的实现1、void Display(void) 各模式界面定义数据2、void BackupRamToDisRam(void)从缓存区刷新显示映射Ram3、void FreshDisplay(void) 映射显示Ram到主控的IO口4、void LcdDisplay_8bit(void) 映射显示Ram到…

C++类和对象-继承->基本语法、继承方式、继承中的对象模型、继承中构造和析构顺序、继承同名成员处理方式、继承同名静态成员处理方式、多继承语法、菱形继承

#include<iostream> using namespace std; //普通实现页面 //Java页面 //class Java //{ //public: // void header() // { // cout << "首页、公开课、登录、注册...&#xff08;公共头部&#xff09;" << endl; // } // voi…

python 算法之 克鲁斯卡尔算法

文章目录 原理代码实现 原理 克鲁斯卡尔&#xff08;Kruskal&#xff09;算法是一种用于求解最小生成树&#xff08;Minimum Spanning Tree&#xff0c;MST&#xff09;的贪心算法。最小生成树是一个连通加权无向图中生成树&#xff08;即包含图中所有顶点并且是一棵树&#xf…

C++预处理命令与宏定义

C的预处理命令用于在编译源代码之前进行一些处理。预处理器指令以井号&#xff08;#&#xff09;开头&#xff0c;常用于包含头文件、宏定义和条件编译等操作。以下是几个常见的C预处理命令&#xff1a; 包含文件 #include <iostream> // 包含标准库头文件 #include &…

Vuex使用

Vuex 一、概述 二、State 存放状态的 1、创建state const state {title: 我是一个标题,content: 今天的天气是好的,age: 2, };2、使用 直接在页面直接使用 //非模块化写法 <div>{{ $store.state.title }}</div> //模块化写法 <div>{{ $store.state.abo…

前端秘法基础式(HTML)(第二卷)

目录 一.表单标签 1.表单域 2.表单控件 2.1input标签 2.2label/select/textarea标签 2.3无语义标签 三.特殊字符 一.表单标签 用来完成与用户的交互,例如登录系统 1.表单域 <form>通过action属性,将用户填写的数据转交给服务器 2.表单控件 2.1input标签 type…

【30秒看懂大数据】数据中台

知幽科技是一家专注企业数字/智化&#xff0c;围绕数据价值应用的一站式数智化解决方案的咨询公司&#xff0c;也包括了为企业提供定制化数据培训&#xff0c;力求做企业最好的数智化决策伙伴。 点击上方「蓝字」关注我们 30秒看懂大数据专栏 让您在有限的碎片化时间&#xf…