文本预处理三件套 · 清洗 / 分词 / 去停用词

本文系统讲解NLP文本预处理核心三步:清洗(NFKC归一化、去噪)、分词(中文最大匹配/英文正则/subword粒度权衡)和去停用词(中英文词表、DF自动筛选及任务适配决策)。强调三步骤正交性与固定顺序,指出清洗消字符噪声、分词定单元边界、去停用词除语义冗余,并重点剖析去停用词在情感分析、检索、大模型等场景的适用性与风险,提供可开关、可配置的端到端流水线实现。

deep-dive · 系统性解析(定位:Python 文本基础 的「聚焦版」——那篇讲全链路 字符串→编码→正则→归一化→分词→N-gram;本篇把其中对建模最关键的「清洗 / 分词 / 去停用词」单独拎出来,并以**「去停用词」**为新增重点,串成一条可开关的标准预处理流水线)

一句话:模型吃的是「干净、离散、低噪声」的 token 序列。文本预处理三件套——① 清洗(消噪声)→ ② 分词(切单元)→ ③ 去停用词(消高频虚词)——就是数据进模型前必过的三道关。本篇每站配可交互演示(见同名 HTML 版)与可直接抄的 Python 代码,并给出「什么任务该去 / 不该去」的决策表。读完你能独立拼一条可配置的中文 / 英文预处理流水线。

目录


0 · 导读:三件套流水线

无论后面做文本分类、情感分析还是大模型微调,原始文本都不能直接喂。这三件套每一站都在回答:「这一站把什么不确定性 / 噪声消掉」。

原始文本 ──▶ ① 清洗 ──▶ ② 分词 ──▶ ③ 去停用词 ──▶ ④ (可选) N-gram / 词频
  (含噪声)     (消格式/标点   (切出离散      (消高频虚词     (统计共现 / 建词表)
                 /全半角/空白)    token 单元)    无区分度词)

[核心洞见] 清洗、分词、去停用词是三个正交动作:清洗处理「字符层面的脏」,分词处理「单元的边界」,去停用词处理「单元层面的冗余」。三者顺序基本固定(先清洗再分词,分词后再去停用词——因为停用词是按「词」判断的,没切词就没法去)。顺序错了,后面全错。

自测 0.1 对一句「The 猫,吃了【鱼】!🐱」,预判它依次要过哪几关:全角→半角?去标点?分词?去停用词?哪一步若跳过会让结果变差?


1 · 为什么要做文本预处理

模型输入是「离散符号序列 + 向量」,不是一段原始字符串。原始文本里混着大量模型不需要、甚至有害的东西:

噪声 / 冗余类型 例子 危害
编码不一致 UTF-8 / GBK 混用、\ufffd 乱码 解码报错或字符错乱
格式符号 HTML 标签、Markdown、\n\t 污染 token,虚高词表
标点 / 表情 ,。!🐱 对很多任务是无信息噪声
全半角 / 大小写 AI vs AI、Hello vs hello 同一词被当两个词
词的边界不清 中文无空格、英文缩写 切不出正确单元
高频虚词 的 / 了 / the / and 挤占统计权重、稀释信号

[中文 vs 英文差异] 英文天然有空格「大概」分隔词,难点在缩写、连字符;中文完全没有词边界,必须靠词典或模型切分——所以中文预处理里「分词」是硬门槛,英文则可以先用空格 + 正则将就。去停用词对两者都重要,但中文停用词表需要自己维护(见 §4)。

自测 1.1 为什么「大小写不统一」会让词表凭空翻倍?举一个你手机里因大小写 / 全半角导致「同一个东西被当成两个」的例子。


2 · 清洗 Cleaning:把噪声消掉

清洗目标:让「同一个意思」在字符层面长一样,并去掉无贡献的符号。四步最常用:

步骤 目的 Python
Unicode 归一化 全角→半角、兼容等价合并 unicodedata.normalize("NFKC", s)
转小写 合并英文大小写 s.lower()
去标点 / 噪声 清 HTML / URL / emoji / 标点 re.sub(r"[^\w\s一-龥]"," ",s)
折叠空白 多空格→一个、去首尾 re.sub(r"\s+"," ",s).strip()

[NFKC 是什么] unicodedata.normalize("NFKC", s) 把全角字母数字、全角标点、上下标等「兼容等价」地转成半角标准形式。处理中文网页 / PDF 文本时几乎必做,否则「AI」和「AI」会被当成不同词。深度正则 / 编码机制见 nlp-python-text-deep-dive §3–§4。

2.1 一个可开关的清洗函数

import re, unicodedata

def clean_text(s,
               nfkc=True, lower=True, drop_punct=True, drop_nonzh=True, fold_ws=True):
    if nfkc:        s = unicodedata.normalize("NFKC", s)   # 全角→半角
    if lower:       s = s.lower()                          # 小写
    if drop_punct:
        # 只保留:字母数字、空白、常用汉字(一-龥);其余清成空格
        pat = r"[^\w\s一-龥]" if not drop_nonzh else r"[^\w\s]"
        s = re
内容概要:本文详细阐述了基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型,旨在通过Simulink仿真平台有效解决光伏发电与储能系统在并网过程中产生的谐波电流问题。该模型融合虚拟同步发电机(VSG)技术,创新性地引入自适应虚拟谐波阬控制策略,以动态调节谐波阻抗特性,从而显著提升系统对特定次谐波的抑制能力,改善并网电能质量。文档强调该模型已实现“完美复现”,具备高度的可验证性和工程参考价值,适用于高水平学术论文复现与实际工程项目的仿真验证。内容涵盖系统建模、控制算法设计、仿真搭建、动态性能分析及关键参数优化等全过程,突出理论与实践的紧密结合。; 适合人群:具备电力电子、新能源并网、自动控制等相关领域基础知识,熟悉Matlab/Simulink仿真环境,从事电力系统仿真、VSG控制策略研究、电能质量治理方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展光储系统并网谐波治理关键技术的研究与方案可行性验证;②支撑高水平科研论文的复现工作,包括模型重建、数据对比与结果分析;③为VSG控制与电能质量协同优化提供可靠的仿真测试平台,服务于新型电力系统中谐波抑制算法的开发与优化。; 阅读建议:建议读者结合提供的Simulink模型文件与文档中的技术要点进行同步操作,重点理解自适应虚拟谐波阬的控制逻辑、参数整定方法及其在VSG系统中的集成方式。应通过调整工况与参数进行多次仿真,观察系统动态响应,深化对自适应控制机制与谐波抑制物理机理的理解,并推荐参考相关文献以拓宽技术视野。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reset2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值