Python在语料库建设中的应用:文本收集、数据清理与文件名管理

一、问题的提出

在日常语言学习与教学中,语料库是一个不可或缺的工具。它可以帮助我们查找高频词,获取搭配信息、例句信息、关键词信息等。由于建库过程操作步骤多,有时还要用到图片识别、格式转化、文本清理等技巧,很多人往往都止步在第一个环节。

今天我们就一步一步来学习建立一个四级语料库,用于四级考试的备考和教学。我们手头已经准备好一些四级考试的真题 Word 版,需要将它们从一个个文件夹中提取出来,清理加工后,以 txt 格式保存在一个文件夹下面。这个过程中,我们可能会遇到下面的问题:

  • 文件夹里层级过多,不便于统一管理;
  • 文件名不规范,夹杂着多余的信息或无关的符号;
  • 文本内部存在冗余,如段首段尾空格、大量空行等;

手工处理文本耗时耗力,如果用多个工具处理又可能导致软件之间的不兼容性而产生误差,影响后面的数据分析结果。这时,我们完全可以借助 Python 这个“瑞士军刀”来批量处理这些问题,可以让语料库建设更高效、更专业。本文将结合实践,介绍如何用 Python 的 pathlib 和正则表达式来完成:

  • 批量收集 Word 文本并转化为 txt;
  • 清理语料文本的冗余信息;
  • 自动化重命名文件,保持一致性和可读性。

二、批量收集、转化和清理 Word 文件

在语料库建设中,我们常常需要将 docx 转化为 txt 进行存储,以便进行后续的分词、词频统计。现在的情况是四级真题在多个子目录当中,且与试题解析、真题 PDF 文件混在一起,我们现在就要把一个个真题 docx 文件提取、转化、清理、保存。

四级真题文件夹

现在有了 DeepSeek 等大模型的加持,我们只需详细描述我们的要求,就可以轻松让 DeepSeek 生成我们想要的代码,比如我们给出了下面的提示词:

Python 代码,用 pathlib,遍历 backup 文件夹下的目录和子目录,提取其中的 docx 文件,文件名包括【四级】这个关键词,但不包括【解析】这个关键词,提取到当前四级 word 文件夹下,再转化为 txt 同名文件,清除其中的段前空格,段尾空格,空段等内容。

提示词展示

大模型给我们很快展示出一串代码,我们可以复制、下载到本地,粘贴到四级真题文件夹下面,运行这段程序,Python 会遍历 backup 文件夹及其子目录,提取包含“四级”,但不包含“解析”的 docx 格式文件,输出到【四级 word】文件夹下面,并转化为 txt 格式,在转化过程中顺便删除了段前段尾的空格、空段,进行初步的文本整理。代码展示如下:

from pathlib import Path
from docx import Documentdef clean_text(text: str) -> str:"""去除段前段尾空格"""return text.strip()def docx_to_txt(docx_path: Path, txt_path: Path):"""将 docx 转换为 txt"""try:doc = Document(docx_path)lines = []for para in doc.paragraphs:cleaned = clean_text(para.text)if cleaned:  # 去掉空行lines.append(cleaned)txt_content = "\n".join(lines)with open(txt_path, "w", encoding="utf-8") as f:f.write(txt_content)print(f"转换成功: {docx_path.name} -> {txt_path.name}")except Exception as e:print(f"转换失败: {docx_path} 错误: {e}")def main():base_dir = Path("backup")  # 要遍历的根目录out_dir = Path("四级word")  # 输出目录out_dir.mkdir(exist_ok=True)# 遍历所有子目录for docx_file in base_dir.rglob("*.docx"):name = docx_file.nameif "四级" in name and "解析" not in name:txt_path = out_dir / (docx_file.stem + ".txt")docx_to_txt(docx_file, txt_path)if __name__ == "__main__":main()

一段代码可以完成多个流程的操作,大大节省了我们的时间,避免复制粘贴过程中的误操作。效果展示如下:

代码运行展示

三、文件名的规范统一

在收集到所有四级真题文本的 txt 格式后,我们发现文件名不统一,需要进行统一的修改,如果一个人工改很容易出题,此时我们仍然可以借助大模型生成 Python 代码来解决。比如,我们想删除所有文件名中【英语】这个词,就可以采用下面大模型生成的代码:

from pathlib import Path
def rename_txt_files():for txt_file in Path(".").glob("*.txt"):old_name = txt_file.stem  # 不带后缀new_name = old_name.replace("英语", "")  # 去掉关键词“四级”new_file = txt_file.with_name(new_name + txt_file.suffix)if txt_file != new_file:txt_file.rename(new_file)print(f"{txt_file.name} -> {new_file.name}")
if __name__ == "__main__":
rename_txt_files()

建成的初步效果如下:

又如,我们还想把不规则的日期 2020 年 12 月试卷.txt 统一改成 2020.12 试卷.txt。我们仍然向大模型清楚地表达我们的要求,得到了如下代码,轻松实现文件夹的遍历,文件名的批量修改,文件的最终保存,最终形成命名规范、格式统一的小型四级真题语料库。

import re
from pathlib import Path
def rename_txt_files():for txt_file in Path(".").glob("*.txt"):old_name = txt_file.stem# 去掉英文new_name = re.sub(r"[A-Za-z]", "", old_name)# 替换“2020年12月”成“2020.12”new_name = re.sub(r"(\d{4})年(\d{1,2})月",lambda m: f"{m.group(1)}.{int(m.group(2)):02d}",new_name)new_file = txt_file.with_name(new_name + txt_file.suffix)if txt_file != new_file:txt_file.rename(new_file)print(f"{txt_file.name} -> {new_file.name}")if __name__ == "__main__":rename_txt_files()

文件名统一

程序运行后效果展示:

四、语料库文本的清洗

收集到文本后,我们下一步还要继续清理每一个文本,此时可以用 Emeditor 或者 EditPad 来进行正则替换,也可以继续使用 Python 来清理文本。

文本内容展示


比如:我要清除每一个文本中以中文开头的一行,因为这一行往往是中文文件名,然后清理以【温馨提示】开头的段落。于是,就有了下面的提问:

文本格式清理

给出的代码如下,可以看出人工智能通过 re 正则模块实现了文本批量清理,我们甚至连一行代码都不需要写,就可以完成这项任务。

from pathlib import Path
import re
def clean_txt_file(txt_path: Path):"""清理文本文件"""lines = []with open(txt_path, "r", encoding="utf-8") as f:for line in f:stripped = line.strip()if not stripped:continue  # 跳过空行# 如果以中文开头,跳过这一行if re.match(r"^[\u4e00-\u9fff]", stripped):continue# 如果以【温馨提示】开头,跳过这一行if stripped.startswith("温馨提示"):continuelines.append(stripped)# 写回文件with open(txt_path, "w", encoding="utf-8") as f:f.write("\n".join(lines))
def main():folder = Path("四级word")for txt_file in folder.glob("*.txt"):clean_txt_file(txt_file)print(f"已清理: {txt_file.name}")
if __name__ == "__main__":main()

通过这个案例可以看到,在大模型的辅助下,我们可以编写高效的 Python 代码辅助我们进行文本的收集、清理和归档等操作,全程不需要其它软件的介入。有些步骤甚至可以一次性完成,无需拆分操作。

文件在经过 Python 脚本处理后,层级更清晰、命名更规范,段落紧凑,适合直接进入语料库工具进行分析。

整个过程自动化,研究者只需准备描述自己的请求,明确操作的对象、位置、任务信息,就可以一次运行脚本,就能完成大量繁琐的手工工作。

这正体现了 Python 在翻译技术和语料库建设中的价值:让研究者把精力放在语言和翻译问题本身,而不是文件管理的细枝末节。

让我们摒弃编程难学的偏见,积极拥抱技术,提升我们语言学习和教学中的信息素养!

关注我,一起学习 Python 在语言学习和翻译教学中的应用!

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

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

相关文章

STL——priority_queue的使用(快速入门详细)

目录 前言 一、基本知识 二、使用 前言 priority_queue是在queue库里的,所以使用的时候要包含queue头文件。使用方法和堆类似,因为它的底层其实就是大根堆。 一、基本知识 优先队列优先级队列是一种容器适配器,根据一些严格的弱排序标准&…

MATLAB中函数的详细使用

一、函数基本知识function语法: function [,...,] myfun(,...,), …

服务器初始化流程***

前言在云计算与自动化运维日益成熟的今天,快速、批量地部署服务器已成为常态。然而,一台新构建的云服务器或新安装的物理服务器,仅仅是一个可运行的操作系统内核,远未达到投入生产环境或开发测试的标准。一个缺乏标准化配置的“裸…

Python实现电商Excel读取进行可视化分析

目录专栏导读项目简介功能特性📊 数据处理功能📈 统计分析功能🎨 可视化功能📋 报告生成项目结构安装和使用环境要求安装步骤使用自己的数据依赖包说明输出文件说明静态图表(PNG格式)交互式图表&#xff08…

肌肉力量训练

健身一年多瘦了十几斤,没有像上次一样吃轻食哦。每天早晨跑步或者做力量训练,中午和晚上吃完饭遛遛弯,坚持下来就好了。 但力量训练一直没有请教练,自己也没查资料,算是瞎练吧。最近发现了一本好书,讲解如何…

微服务-27.配置管理-什么是配置管理

一.配置管理到目前为止我们已经解决了微服务相关的几个问题:微服务远程调用微服务注册、发现微服务请求路由、负载均衡微服务登录用户信息传递不过,现在依然还有几个问题需要解决:我们发现很多微服务中的配置文件里的配置都是重复的。修改编辑…

【RAGFlow代码详解-13】RAG 管道

管道架构概述 RAG 管道由多个处理阶段组成,这些阶段将文本内容转换为适合智能检索的结构化知识表示:文档到知识图谱工作流程 主要处理工作流程通过 run_graphrag 功能将单个文档块转换为统一的知识图谱:GraphRAG 处理方法 RAGFlow 支持两种不…

深度学习——模型训练

以Pytorch自带的手写数据集为例。我们已经构建了一个输入层(28*28),两个隐藏层(128和256),一个输出层(10)的人工神经网络。并且结合非线性激活函数sigmoid定义前向传播的方向。class…

使用Kiro智能开发PYTHON应用程序

文章目录使用Kiro智能开发PYTHON应用程序1. 什么是KIRO?2. 获取KIRO3. 安装KIRO4. 用KIRO开发智能应用程序6. 推荐阅读使用Kiro智能开发PYTHON应用程序 By JacksonML KIRO是AWS亚马逊云科技旗下的独立AI产品,是用来开发生产级应用程序的AI IDE。 本文简…

UNIX网络编程笔记:高级套接字编程12-19

IPv4与IPv6互操作性:技术解析与实践指南 在网络协议演进进程中,IPv4向IPv6的过渡是绕不开的关键阶段。尽管IPv6凭借海量地址、更优扩展性成为发展方向,但IPv4设备与网络的广泛存在,使得二者的互操作性成为保障网络平滑演进、业务持…

同类软件对比(一):Visual Studio(IDE) VS Visual Studio Code

文章目录前言一、Visual Studio(IDE)是什么?二、Visual Studio Code 是什么?三、两者的相同点四、两者的不同点五、实战选择建议总结前言 Visual Studio 和 Visual Studio Code,它们一个是微软旗下的老牌霸主&#xf…

数据结构初阶:详解单链表(一)

🔥个人主页:胡萝卜3.0 🎬作者简介:C研发方向学习者 📖个人专栏: 《C语言》《数据结构》 《C干货分享》 ⭐️人生格言:不试试怎么知道自己行不行 目录 顺序表问题与思考 正文 一、单链表 1.…

塞尔达传说 旷野之息 PC/手机双端(The Legend of Zelda: Breath of the Wild)免安装中文版

网盘链接: 塞尔达传说 旷野之息 免安装中文版 名称:塞尔达传说 旷野之息 PC/手机双端 免安装中文版 描述:忘记你所知道的关于塞尔达传说游戏的一切。在《塞尔达传说:旷野之息》中步入一个充满发现、探索和冒险的世界&#xff0…

【分享开题答辩过程】一辆摩托车带来的通关副本攻略----《摩托车网上销售系统》开题答辩!!

一、开题陈述 各位评委老师好,我是A同学。 本次我设计与实现的是基于ASP.NET的摩托车网上销售系统,该系统以 MySQL 为后台数据库,主要解决当前社会背景下用户线下看车购车困难的问题,同时顺应摩托车网络营销的发展趋势&#xff…

python + unicorn + xgboost + pytorch 搭建机器学习训练平台遇到的问题

1.背景前段时间,使用 python unicorn xgboost pytorch 写了一个机器学习训练平台的后端服务,根据公司开发需要,需具备两种需求:1. 可以本地加载使用;2.支持web服务,2. 使用本地加载使用2.1 问题针对第一…

Odoo 非标项目型生产行业解决方案:专业、完整、开源

概述您眼前的这张应用蓝图,是由 Odoo 官方金牌服务商——开源智造 (OSCG) 凭借多年在非标项目型制造领域的深厚积累,精心设计的 Odoo 解决方案核心流程图。它不仅体现了我们对行业复杂业务场景的深刻理解,更彰显了我们将先进的管理理念与强大…

OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测

编者按: OpenAI 首次发布的开源大模型 gpt-oss 系列为何在基准测试中表现亮眼,却在实际应用后发现不如预期? 我们今天为大家带来的这篇文章,作者推测 OpenAI 的新开源模型本质上就是微软 Phi 模型的翻版,采用了相同的合…

Linux / 宝塔面板下 PHP OPcache 完整实践指南

Linux / 宝塔面板下 PHP OPcache 完整实践指南 OPcache 是 PHP 官方提供的字节码缓存扩展,通过缓存 PHP 脚本的编译结果,提高 PHP 执行效率。本文讲解从 检测 → 开启 → 使用 → 清理 → 排查问题 的全流程,同时针对宝塔面板界面不实用或无法…

Linux(从入门到精通)

Linux概述 Linux内核最初只是由芬兰人林纳斯托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的。 Linux特点 首先Linux作为自由软件有两个特点:一是它免费提供源代码,二是爱好者可以根据自己的需要自由修改、复制和发布源码 Linux的各个发行版本 Linux 的发行版说简单…

链表相关题目---19、删除链表的倒数第N个节点

题目链接:删除链表的倒数第N个节点 这道题 很常规的思路就是 先拷贝两次头结点 然后一个先走N步 然后同时开始走,直到先走N步的节点为空后,就停止,此时另一个没提前走的节点的下一个就是要删除的节点。不过需要注意的是&#xff0…