在 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+12​1×0+1×0+1×1+0×1+0×1​=3​3​1​=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>

通过这种方式,所有文本都能被规整为模型可接受的输入格式。


四、完整流程总结

从原始文本到模型输入,我们可以总结出一套标准流程:

  1. 文本数据分析:分布探查 → 发现问题 → 确定处理策略
  2. 特征工程:提取 n-gram 等特征 → 构建 TF/TF-IDF 向量
  3. 长度规范:截断 / 填充 → 统一句子长度
  4. 模型训练:送入神经网络完成下游任务(分类、NER 等)

这一套流程是 NLP 入门的基本功,掌握好它,你就能高效处理各类文本数据,为后续模型优化打下坚实基础。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐