自然语言处理(Natural Language Processing, 简称NLP)就是让计算机能够理解、处理并生成人类日常使用的语言,从而实现人机之间顺畅沟通的人工智能技术。
文本预处理的步骤
文本预处理是将原始非结构化文本通过清洗、分词、去停用词及标准化等步骤,转化为计算机可高效处理且保留核心语义的规范化数据的过程。
其中分词常用结巴分词库
jieba.lcut(content)
文本张量的表示方法
文本向量表示
├── 稀疏表示
│ └── One-hot、BoW、TF-IDF
└── 稠密表示(Embedding)
├── 静态词嵌入
│ └── Word2Vec、GloVe、FastText
└── 上下文词嵌入
└── BERT、GPT、ELMo
离散稀疏表示
- One-hot
- Bag of Words(词袋)
- TF-IDF:词频 - 逆文档频率,这篇文章出现的多更重要 - 所有文章中出现的次数少更具区分度
- N-gram
特点:词和词之间没有语义关系,维度通常等于词表大小,向量稀疏。
静态词嵌入
- Word2Vec:
- CBOW:连续词袋模式。使用两边的词预测中间的内容
- Skip-gram:跳词模式。使用中间的词预测两边的内容
- GloVe:全局词嵌入
- FastText:快速文本分类器
- 可训练的 Embedding Layer
特点:对多义词处理效果不佳。将每个词映射成低维稠密向量。同一个词在任何语境中的向量都相同。
动态词嵌入(动态上下文表示/预训练语言模型)
- ELMMo
- BERT
- GPT 等 Transformer 模型的隐藏状态
特点:能够根据语义变化而变化。对词的上下文信息更友好。同一个词在不同上下文中可以得到不同向量,能够处理一词多义
文本数据分析
文本数据分析的目的是快速了解语料质量,为后续模型训练做准
主要做三件事:
标签数量分布:检查样本是否均衡,不均衡则增减数据
句子长度分布:确定截断或补齐的基准长度
词频统计与词云:统计词汇总量、通过词云发现脏数据
文本特征处理
文本特征处理主要做两件事:
N-Gram 特征:将连续 n 个相邻词组合为新特征,如 bi-gram (2-gram) 的"我爱",提升模型对上下文的理解
文本长度规范:对超长文本截断、不足补齐,确保模型输入尺寸统一
循环神经网络
RNN 是最基础的循环神经网络结构,也是 LSTM、GRU 等变体的原型。它的核心思想是:在每个时间步接收当前输入 $x_t$ 和上一时刻的隐藏状态 $h_{t-1}$,计算得到当前隐藏状态 $h_t$,从而将历史信息逐步传递下去。
LSTM模型
LSTM(长短期记忆网络)是RNN的改进变体,核心区别在于引入了门控机制(遗忘门、输入门、输出门)和细胞状态。这些设计让LSTM能主动筛选和保留重要信息,有效解决RNN的长期依赖问题,更适合处理长序列任务(如机器翻译、语音识别),但结构更复杂、计算成本略高。
简言之:RNN简单但记性差;LSTM通过“智能开关”强化记忆能力,专治RNN的长期依赖缺陷。
Bi-LSTM:双向 LSTM,同时从前往后和从后往前处理序列,提取更丰富的信息。
GRU模型
GRU(Gated Recurrent Unit)也称门控循环单元结构, 它也是传统RNN的变体, 同LSTM一样能够有效捕捉长序列之间的语义关联, 缓解梯度消失或爆炸现象. 同时它的结构和计算要比LSTM更简单.
Bi-GRU:双向 GRU,同时从前往后和从后往前处理序列,提取更丰富的信息。
注意力机制
Seq2Seq是一种序列到序列的模型架构,结构是 Encoder-Decoder(编码器-解码器)。RNN、LSTM、GRU是编码器和解码器内部常用的基础单元,可以把 Seq2Seq 理解成“房子”,把它们理解成“砖块”。- 注意力机制(Attention Mechanism)是在 Seq2Seq 基础上的增强模块,用来让模型在解码时更关注输入序列中真正重要的部分,从而缓解长序列信息丢失的问题。