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
英文地址,請注明出處:http://en.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…