F FisherHub Docs

自然语言处理

NLP 的核心挑战

自然语言处理(Natural Language Processing,NLP)是 AI 中最具挑战性的领域之一。人类语言充满歧义、依赖上下文、有无限的可能性组合,且蕴含文化背景和常识知识。

文本预处理

分词

将连续文本切分为有意义的单元。中文分词比英文复杂得多,因为词与词之间没有空格分隔。

常用工具:jieba(中文)、spaCy、NLTK。

import jieba

text = "人工智能正在改变世界"
tokens = list(jieba.cut(text))
print(tokens)
# 输出: ['人工智能', '正在', '改变', '世界']

其他预处理步骤

  • 去除停用词 — 过滤”的”、“了”等高频无意义词
  • 词干提取/词形还原 — 将单词还原为基本形式
  • 文本清洗 — 去除 HTML 标签、特殊字符等噪声

词向量

机器无法直接理解词语,需要将词语映射为数值向量。

One-Hot 表示

最简单的方式,但维度高且无法表达词语间的语义关系。

分布式表示

  • Word2Vec(2013) — 通过上下文预测目标词(CBOW)或通过目标词预测上下文(Skip-gram)
  • GloVe(2014) — 利用词共现矩阵进行分解
  • FastText(2016) — 引入子词信息,能处理未登录词
from gensim.models import Word2Vec

sentences = [["人工智能", "是", "未来"], 
             ["深度学习", "改变", "世界"]]
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)
similarity = model.wv.similarity("人工智能", "深度学习")
print(f"相似度: {similarity:.3f}")

序列到序列模型

Seq2Seq 模型由编码器和解码器组成,用于处理输入输出长度不固定的任务。

  • 编码器 — 将输入序列编码为上下文向量
  • 解码器 — 从上下文向量逐步生成输出序列

注意力机制

注意力机制让解码器在生成每个输出时关注输入序列的不同位置,大幅提升了长序列的处理能力。Bahdanau Attention 和 Luong Attention 是两种经典实现。

# 简化的注意力计算
def compute_attention(decoder_hidden, encoder_outputs):
    # decoder_hidden: [batch, d_model]
    # encoder_outputs: [batch, seq_len, d_model]
    scores = torch.matmul(encoder_outputs, decoder_hidden.unsqueeze(-1))
    scores = scores.squeeze(-1)  # [batch, seq_len]
    weights = F.softmax(scores, dim=-1)
    context = torch.matmul(weights.unsqueeze(1), encoder_outputs)
    return context.squeeze(1)

预训练语言模型

BERT

BERT(Bidirectional Encoder Representations from Transformers)使用双向 Transformer 编码器,通过掩码语言模型(MLM)和下一句预测(NSP)两个任务进行预训练。

优势在于下游任务只需要在预训练模型上加一个简单的分类头,做少量微调即可取得优异效果。

from transformers import BertTokenizer, BertForSequenceClassification

tokenizer = BertTokenizer.from_pretrained("bert-base-chinese")
model = BertForSequenceClassification.from_pretrained("bert-base-chinese")

text = "这部电影非常精彩"
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)

GPT

GPT(Generative Pre-trained Transformer)使用单向 Transformer 解码器,通过预测下一个词进行预训练。GPT 的核心能力在于文本生成,而 GPT-3 和 GPT-4 在此基础上展示了惊人的少样本学习和推理能力。

其他重要模型

  • T5 — 将所有 NLP 任务统一为文本到文本的形式
  • RoBERTa — BERT 的优化版本
  • ChatGLM — 针对中文优化的对话模型
  • LLaMA — Meta 开源的大语言模型

NLP 典型应用

  • 文本分类(垃圾邮件检测、情感分析)
  • 命名实体识别(提取人名、地名等)
  • 机器翻译
  • 自动摘要
  • 问答系统
  • 文本生成

从词向量到预训练大模型,NLP 在短短十年间经历了翻天覆地的变化,现在的大语言模型已经在许多任务上接近人类水平。