自然语言处理

自然语言处理(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 基础上的增强模块,用来让模型在解码时更关注输入序列中真正重要的部分,从而缓解长序列信息丢失的问题。