利用Python高效处理大规模词汇数据

在本篇博客中,我们将探讨如何使用Python及其强大的库来处理和分析大规模的词汇数据。我们将介绍如何从多个.pkl文件中读取数据,并应用一系列算法来筛选和扩展一个核心词汇列表。这个过程涉及到使用Pandas、Polars以及tqdm等库来实现高效的数据处理。

引言

词汇数据的处理是自然语言处理(NLP)领域中的一个常见任务。无论是构建词典、进行文本分类还是情感分析,都需要对大量的词汇数据进行预处理和分析。本文将演示一种方法,该方法不仅能够有效地管理词汇数据,还能够在处理过程中保持数据的一致性和准确性。

数据准备

首先,我们需要加载初始的词汇数据集,这些数据以.pkl格式存储,并且包含了词汇及其出现的频率。我们选择了一个名为voc_26B.pkl的文件,它包含了所有需要处理的词汇信息。

import os
import pandas as pd
from glob import glob
import polars as pl
from tqdm import tqdm# 加载并排序词汇数据
voc = pd.read_pickle("voc_26B.pkl")
voc = voc.sort_values("count", ascending=False)
voc = voc["voc"].values.tolist()

接下来,我们收集所有需要分析的路径,这里假设所有的.pkl文件都位于E:/voc_voc/目录下。

# 获取所有路径
paths = glob("E:/voc_voc/*.pkl")
new_voc = set()

数据处理与优化

在这个阶段,我们将遍历每个词汇项,并根据其前缀匹配规则,查找并合并相关的词汇条目。为了确保效率,我们采用了tqdm库来显示进度条,这对于我们了解程序执行进度非常有帮助。

for voc_data in tqdm(voc):if voc_data in new_voc:continuenew_voc.update(set([voc_data]))idex = 0data = ""# 循环查找直到找到非空数据while len(data) == 0:data = pd.read_pickle(paths[idex], compression="zip")data1 = pl.DataFrame({"voc": data.keys(), "value": data.values()})data = {k: v for k, v in data.items() if voc_data == k[:len(voc_data)]}idex += 1# 转换为DataFrame并排序data = pd.DataFrame({"voc": data.keys(), "value": data.values()})data = data.sort_values("value", ascending=False).head()# 更新词汇集合data = data["voc"].str[len(voc_data) + 1:].values.tolist()if voc_data in data:data.remove(voc_data)new_voc.update(set(data))# 进一步扩展词汇data3 = []for i in tqdm(set(data)):data2 = [k[len(i) + 1:] for k, v indata1.filter(data1["voc"].str.contains(i + "_")).sort("value", descending=True).to_numpy() ifi == k[:len(i)]][:5]new_voc.update(set(data2))data3 += data2# 深度扩展词汇for i in tqdm(set(data3)):try:data2 = [k[len(i) + 1:] for k, v indata1.filter(data1["voc"].str.contains(i + "_")).sort("value", descending=True).to_numpy() ifi == k[:len(i)]][:5]new_voc.update(set(data2))except:pass# 当词汇数量达到一定规模时保存结果if len(new_voc) > 8192:pd.to_pickle(new_voc, "voc_{}_voc.pkl".format(len(new_voc)))

结果保存

最后,当整个词汇扩展过程完成后,我们将最终的词汇集合保存到一个新的.pkl文件中。

pd.to_pickle(new_voc, "voc_{}_voc.pkl".format(len(new_voc)))

总结

通过上述步骤,我们可以看到,Python及其丰富的库使得处理大规模词汇数据变得既简单又高效。特别是tqdm的进步条功能,极大地提升了用户体验,让用户可以直观地了解数据处理的进度。同时,结合使用Pandas和Polars,可以在保证数据处理速度的同时,也确保了代码的简洁性和可读性。

希望这篇博客能为您提供有价值的参考,并激发您在自己的项目中尝试类似的解决方案。如果您有任何问题或想要分享您的经验,请随时留言讨论!

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

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

相关文章

LabVIEW双光子成像系统:自主创新,精准成像,赋能科研

双光子成像系统:自主创新,精准成像,赋能科研 第一部分:概述 双光子成像利用两个低能量光子同时激发荧光分子,具有深层穿透、高分辨率、低光损伤等优势。它能实现活体深层组织的成像,支持实时动态观察&…

Deepseek-R1 和 OpenAI o1 这样的推理模型普遍存在“思考不足”的问题

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Vue3学习笔记-Vue开发前准备-1

一、安装15.0或更高版本的Node.js node -v npm -v 二、创建Vue项目 npm init vuelatest 三、Vue项目结构 node_modules: Vue项目运行的依赖文件public:资源文件夹package.json:信息描述文件

Denavit-Hartenberg DH MDH坐标系

Denavit-Hartenberg坐标系及其规则详解 6轴协作机器人的MDH模型详细图_6轴mdh-CSDN博客 N轴机械臂的MDH正向建模,及python算法_mdh建模-CSDN博客 运动学3-----正向运动学 | 鱼香ROS 机器人学:MDH建模 - 哆啦美 - 博客园 机械臂学习——标准DH法和改进MDH…

自然语言生成(NLG)算法模型评估方案的硬件配置、系统架构设计、软件技术栈、实现流程和关键代码

智能化对话中的自然语言生成(NLG)算法模型评估是一个复杂而多维的过程,它涉及多个评估指标和策略,以确保生成的文本质量、准确性和流畅性。 智能化对话中的NLG算法模型评估是一个涉及多个评估指标和策略的过程。通过选择合适的评估…

排序算法--基数排序

核心思想是按位排序(低位到高位)。适用于定长的整数或字符串,如例如:手机号、身份证号排序。按数据的每一位从低位到高位(或相反)依次排序,每次排序使用稳定的算法(如计数排序&#…

数据结构:时间复杂度

文章目录 为什么需要时间复杂度分析?一、大O表示法:复杂度的语言1.1 什么是大O?1.2 常见复杂度速查表 二、实战分析:解剖C语言代码2.1 循环结构的三重境界单层循环:线性时间双重循环:平方时间动态边界循环&…

S4 HANA明确税金汇差科目(OBYY)

本文主要介绍在S4 HANA OP中明确税金汇差科目(OBYY)相关设置。具体请参照如下内容: 1. 明确税金汇差科目(OBYY) 以上配置点定义了在外币挂账时,当凭证抬头汇率和税金行项目汇率不一致时,造成的差异金额进入哪个科目。此类情况只发生在FB60/F…

hypermesh中用tcl脚本生成多个线段

hypermesh中原本有利用多个节点生成线段的功能,但实际应用中不太好用,因为hypermesh会自动对线段进行拟合。如果手动生成多个线段,又太繁琐,这里写了一段脚本来自动生成(#为注释符号)。 set alist {} for …

87.(3)攻防世界 web simple_php

之前做过&#xff0c;回顾 12&#xff0c;攻防世界simple_php-CSDN博客 进入靶场 <?php // 显示当前 PHP 文件的源代码&#xff0c;方便调试或查看代码结构 // __FILE__ 是 PHP 的一个魔术常量&#xff0c;代表当前文件的完整路径和文件名 show_source(__FILE__);// 包含…

pycharm 中的 Mark Directory As 的作用是什么?

文章目录 Mark Directory As 的作用PYTHONPATH 是什么PYTHONPATH 作用注意事项 Mark Directory As 的作用 可以查看官网&#xff1a;https://www.jetbrains.com/help/pycharm/project-structure-dialog.html#-9p9rve_3 我们这里以 Mark Directory As Sources 为例进行介绍。 这…

一个类有一个全局变量 m,多线程对它进行增加操作,如何保证线程安全?

一个类有一个全局变量 m&#xff0c;多线程对它进行增加操作&#xff0c;如何保证线程安全&#xff1f; 在多线程环境下对共享变量进行修改时&#xff0c;确保线程安全的关键是保证操作的原子性、可见性和有序性。以下是针对全局变量 m 的多线程自增操作的线程安全解决方案&am…

CSS关系选择器详解

CSS关系选择器详解 学习前提什么是关系选择器&#xff1f;后代选择器&#xff08;Descendant Combinator&#xff09;语法示例注意事项 子代选择器&#xff08;Child Combinator&#xff09;语法示例注意事项 邻接兄弟选择器&#xff08;Adjacent Sibling Combinator&#xff0…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户注册

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;项目基本介绍 &#x1f6a6;项…

Microsoft Power BI:融合 AI 的文本分析

Microsoft Power BI 是微软推出的一款功能强大的商业智能工具&#xff0c;旨在帮助用户从各种数据源中提取、分析和可视化数据&#xff0c;以支持业务决策和洞察。以下是关于 Power BI 的深度介绍&#xff1a; 1. 核心功能与特点 Power BI 提供了全面的数据分析和可视化功能&…

电控三周速成计划参考

第1周&#xff1a;基础搭建与GPIO控制 学习目标&#xff1a;建立开发环境&#xff0c;掌握最基础的硬件控制能力 每日学习&#xff08;2-3小时&#xff09;&#xff1a; 环境搭建&#xff08;2天&#xff09; 安装Keil MDK-ARM STM32CubeMX使用CubeMX创建第一个工程&#xf…

[SAP ABAP] 在ABAP Debugger调试器中设置断点

在命令框输入/H&#xff0c;点击回车以后&#xff0c;调试被激活&#xff0c;点击触发任意事件进入ABAP Debugger调试器界面 点击按钮&#xff0c;可以在Debugger调试器中新增临时断点 我们可以从ABAP命令、方法、功能、表单、异常、消息、源代码等多个维度在Debugger调试器中设…

【NEXT】网络编程——上传文件(不限于jpg/png/pdf/txt/doc等),或请求参数值是file类型时,调用在线服务接口

最近在使用华为AI平台ModelArts训练自己的图像识别模型&#xff0c;并部署了在线服务接口。供给客户端&#xff08;如&#xff1a;鸿蒙APP/元服务&#xff09;调用。 import核心能力&#xff1a; import { http } from kit.NetworkKit; import { fileIo } from kit.CoreFileK…

RssWebAll:抓取任意网页的内容生成 RSS 订阅源

RssWebAll&#xff1a;抓取任意网页的内容生成 RSS 订阅源 RssWebAll 是一个强大的工具&#xff0c;可以帮助用户抓取任意网页的内容&#xff0c;并生成相应的 RSS 订阅源&#xff0c;让用户随时随地获取他们感兴趣的内容更新。 功能亮点 简单易用&#xff1a;所见即所得&…

从一到无穷大 #43:Presto History Based Optimizer,基于PlanNode粒度统计的查询计划选择策略

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言MotivationArchitectureHBO ScenarioExperiments结束语 引言 过年回家这件事在挚…