从数据到特征:NLP 文本预处理与特征工程
在 NLP 入门学习中,文本数据分析和特征工程是连接原始文本与模型训练的关键桥梁。今天我结合学习笔记,梳理了这两个核心环节的实操方法与核心原理,分享给正在入门 NLP 的小伙伴~
一、文本数据分析:先读懂你的数据
在动手构建模型前,我们必须先对文本数据做一次 “体检”,了解数据分布、发现潜在问题,这就是文本数据分析的核心价值。
1. 三大核心分析操作
- 标签数量分布:检查分类任务中各类别样本是否均衡。比如情感分类里,如果 “正面” 样本占比 80%,“负面” 仅占 20%,模型就会偏向预测多数类,需要通过重采样或类别权重来优化。
- 句子长度分布:统计数据集中句子的平均长度、最长 / 最短长度,这是后续设置模型输入
max_length的直接依据 —— 过长的句子会截断,过短的句子会填充,避免信息丢失或冗余计算。 - 词频统计与关键词云:快速排查无效噪声(比如评论区大量 “呵呵”“不方便” 等无意义词汇),同时挖掘高频主题词,辅助理解数据核心内容。
2. 可视化工具实操
在 Python 中,我们可以用seaborn库快速完成可视化:
python
运行
import seaborn as sns
import matplotlib.pyplot as plt
# 绘制标签分布直方图(离散值)
sns.countplot(x=labels)
plt.title("标签数量分布")
# 绘制句子长度分布直方图(连续值)
sns.histplot(x=sentence_lengths, bins=30)
plt.title("句子长度分布")
通过可视化,我们能直观看到数据是否存在倾斜、异常值等问题,为后续处理提供决策依据。
二、n-gram 特征:捕捉语序与局部语义
One-hot 或词袋模型会丢失语序信息,无法区分 “我喜欢学习” 和 “我讨厌学习” 的差异。而n-gram通过提取连续词语组合,完美解决了这个问题。
1. 什么是 n-gram?
n-gram 是指文本中连续 n 个词的组合,常见类型有:
- 1-gram(Unigram):单个词,如「我」「喜欢」「深度学习」
- 2-gram(Bigram):连续 2 个词,如「我喜欢」「喜欢深度」「深度学习」
- 3-gram(Trigram):连续 3 个词,如「我喜欢深度」「喜欢深度学习」
它的核心作用是保留局部语序信息,让模型能感知到词语间的顺序关系,更精准地理解语义。
2. 实战案例:2-gram 相似度计算
我们以两个句子为例:
- 句子 A:我喜欢深度学习
- 句子 B:我讨厌深度学习
步骤 1:构建 2-gram 特征
- 句子 A:
我喜欢、喜欢深度、深度学习 - 句子 B:
我讨厌、讨厌深度、深度学习
步骤 2:统计 TF 词频向量
统计每个 2-gram 在句子中的出现次数,生成词频向量:
表格
| 特征 | 我喜欢 | 喜欢深度 | 深度学习 | 我讨厌 | 讨厌深度 |
|---|---|---|---|---|---|
| 句子 A | 1 | 1 | 1 | 0 | 0 |
| 句子 B | 0 | 0 | 1 | 1 | 1 |
步骤 3:计算 Cosine 相似度
通过余弦相似度衡量两个句子的语义重叠度:Cosine(A,B)=∥A∥∥B∥A⋅B=12+12+12×12+12+121×0+1×0+1×1+0×1+0×1=331=31≈0.33(注:图中示例为简化计算,核心逻辑一致)这个分数说明两个句子共享部分语义(如 “深度学习”),但因 “喜欢” 和 “讨厌” 的差异,相似度并不高。
3. 应用场景
- 文本分类 / 情感分析:捕捉短语级语义,提升分类精度
- 搜索引擎:匹配连续关键词,优化搜索结果
- 语言模型:预测下一个词,辅助文本生成
三、文本长度规范:让模型 “吃得下” 数据
深度学习模型(如 RNN、Transformer)要求输入样本长度一致,否则无法批量训练。因此,我们需要对文本进行长度规范处理。
1. 核心操作:截断与填充
- 截断(Truncation):当句子长度超过设定的
max_length时,从开头或末尾删除多余词汇,保留核心信息。 - 填充(Padding):当句子长度不足
max_length时,在末尾补占位符(如<PAD>或数字 0),统一序列长度。
2. 实操示例
假设我们设定max_length=15,对以下长度不一的句子序列处理:
- 原始序列:
[20, 18, 10, 22] - 处理后:
[15, 15, 15, 15](超过的截断,不足的填充<PAD>)
通过这种方式,所有文本都能被规整为模型可接受的输入格式。
四、完整流程总结
从原始文本到模型输入,我们可以总结出一套标准流程:
- 文本数据分析:分布探查 → 发现问题 → 确定处理策略
- 特征工程:提取 n-gram 等特征 → 构建 TF/TF-IDF 向量
- 长度规范:截断 / 填充 → 统一句子长度
- 模型训练:送入神经网络完成下游任务(分类、NER 等)
这一套流程是 NLP 入门的基本功,掌握好它,你就能高效处理各类文本数据,为后续模型优化打下坚实基础。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)