郭震 AI公众号:郭震AI

6 文本清理——从零学NLP系列教程

发布日期:

最近更新:

分类: NLP小白

预计阅读: 3 分钟

阅读次数: 0

系列进度

自然语言处理入门 · 第 6 / 30

预计阅读3 分钟
结构重点7 个
图文要点6 张
正文规模1.2k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 7 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

文本清理流程图查看大图
文本清理流程图

文本清理不是越干净越好。URL、数字、标点、表情和大小写有时是噪声,有时又是重要信号。

文本清理实操核对图查看大图
文本清理实操核对图

我会保留清理前后样本对照,并记录删掉了什么。没有对照,很容易把有用信息一起洗掉。

在上篇的内容中,我们对NLP(自然语言处理)的基本概念和各种技术进行了概述,为了更好地进入NLP的世界,理解文本预处理是至关重要的一步。本篇文章将专注于文本预处理中的一个重要环节——文本清理。文本清理是为后续分词、特征提取和模型训练打下基础的关键步骤。

什么是文本清理?

文本清理的目的是通过去除不必要的字符、标点、不相关的信息等,使得文本更为干净和一致。这个过程通常涉及多个步骤,以下是常见的文本清理步骤:

文本清理流程判断卡查看大图
文本清理流程判断卡

做文本清理时,先检查编码、标点、HTML、重复文本、停用词和异常字符。清理规则要服务后续任务。

  1. 去除HTML标签
  2. 去除标点符号和特殊字符
  3. 小写化处理
  4. 去除停用词
  5. 词干提取与词形还原

1. 去除HTML标签

在处理网页抓取的数据时,常常会出现HTML标签。为了提取纯文本,我们需要去除这些标签。可以使用正则表达式来实现这一点。

import re

def remove_html_tags(text):
    """
    去除HTML标签
    """
    clean_text = re.sub(r'<.*?>', '', text)
    return clean_text

# 示例
sample_html = "<p>Hello, this is a <b>test</b>.</p>"
print(remove_html_tags(sample_html))  # 输出: "Hello, this is a test."

2. 去除标点符号和特殊字符

除了HTML标签,文本中可能还包含许多标点和特殊字符,这些在大多数NLP任务中都是无用的。

def remove_punctuation(text):
    """
    去除文本中的标点符号
    """
    return re.sub(r'[^\w\s]', '', text)

# 示例
sample_text = "Hello, world! This is a test: #NLP."
print(remove_punctuation(sample_text))  # 输出: "Hello world This is a test NLP"

3. 小写化处理

将文本统一转为小写,有助于减少词汇的多样性。例如,"Apple""apple"应当被视作同一词。

def lowercase_text(text):
    """
    将文本转为小写
    """
    return text.lower()

# 示例
print(lowercase_text("Hello World!"))  # 输出: "hello world!"

4. 去除停用词

停用词是指在文本中经常出现但对大部分任务没有实际意义的词,例如“的”、“是”、“在”等。去除停用词有助于减少噪声。

from nltk.corpus import stopwords

# 确保下载停用词库
import nltk
nltk.download('stopwords')

def remove_stopwords(text):
    """
    去除停用词
    """
    stop_words = set(stopwords.words('english'))
    word_tokens = text.split()
    return ' '.join([word for word in word_tokens if word not in stop_words])

# 示例
sample_text = "This is a test sentence for NLP."
print(remove_stopwords(sample_text))  # 输出: "test sentence NLP."

5. 词干提取与词形还原

词干提取和词形还原旨在将词汇归一化,减少其派生形式。例如,"running""ran""runs"可能都被归为"run"

词干提取

使用NLTK中的PorterStemmer进行词干提取。

from nltk.stem import PorterStemmer

def stemming(text):
    """
    词干提取
    """
    ps = PorterStemmer()
    word_tokens = text.split()
    return ' '.join([ps.stem(word) for word in word_tokens])

# 示例
sample_text = "running runner ran"
print(stemming(sample_text))  # 输出: "run run ran"

词形还原

词形还原被认为是更加高级的归一化技术,利用上下文信息将词还原为其基本形式。

from nltk.stem import WordNetLemmatizer

# 确保下载WordNet库
nltk.download('wordnet')

def lemmatization(text):
    """
    词形还原
    """
    lemmatizer = WordNetLemmatizer()
    word_tokens = text.split()
    return ' '.join([lemmatizer.lemmatize(word) for word in word_tokens])

# 示例
sample_text = "running ran"
print(lemmatization(sample_text))  # 输出: "running ran" (仅在更复杂的文本中有所不同)
文本清理——从零学NLP系列教程应用复盘卡查看大图
文本清理——从零学NLP系列教程应用复盘卡

学完《文本清理——从零学NLP系列教程》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。

文本清理——从零学NLP系列教程应用检查卡查看大图
文本清理——从零学NLP系列教程应用检查卡

如果想把《文本清理——从零学NLP系列教程》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。

小结

通过以上步骤,我们能够对文本数据进行有效的清理。这为后续的分词、特征提取奠定了良好的基础。记住,文本清理并不是固定的步骤,具体的应用场景可能会要求我们根据需要选择性地执行这些步骤。

自然语言处理阅读地图卡查看大图
自然语言处理阅读地图卡

进入《文本清理——从零学NLP系列教程》正文前,可以先扫一遍配图:它在问什么、要分清哪些概念、哪一步值得动手、最后用什么标准验收。

接下来,我们将进入文本预处理的另一个重要部分——分词。分词是将清理后的文本分割为单独的词语,这一过程对于后续的模型训练和特征提取至关重要。请继续关注!

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

文本清理——从零学NLP系列教程适合谁读?

这是 自然语言处理入门 系列第 6 / 30 篇,适合正在学习自然语言处理入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇自然语言处理入门教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...