自然语言处理

从文本预处理到大语言模型,掌握 NLP 的核心技术与工程实践。

概述

自然语言处理(Natural Language Processing, NLP)是人工智能的重要分支,研究如何让计算机理解、处理和生成人类语言。从搜索引擎到智能助手,NLP 技术无处不在。

NLP 的主要挑战:

文本预处理

文本预处理是 NLP 流水线的第一步,常见操作包括:

  1. 分词(Tokenization):将文本切分为词语或子词单元
  2. 清洗:去除 HTML 标签、特殊字符、多余空格
  3. 标准化:统一大小写、繁简转换
  4. 停用词过滤:移除「的」「是」「在」等高频低信息词
  5. 词干提取/词形还原:将词语还原为基本形式
💡 中文分词

中文没有天然的词边界,分词更具挑战性。常用工具包括 jieba、HanLP、LAC 等。现代大模型通常使用 BPE(字节对编码)进行子词分词。

词向量与文本表示

将文本转换为计算机可处理的数值表示,是 NLP 的基础。

Word2Vec

2013 年提出的经典词向量方法,基于「上下文相似的词,语义也相似」的假设:

现代表示方法

方法特点代表
静态词向量一词一向量,无法处理多义Word2Vec, GloVe
上下文词向量根据上下文动态生成表示ELMo, BERT
子词表示处理未登录词,跨语言共享BPE, SentencePiece

预训练语言模型

预训练 + 微调的范式已成为 NLP 的主流方法:

BERT(Encoder 模型)

双向 Transformer,通过掩码语言模型(MLM)预训练,擅长理解类任务:文本分类、命名实体识别、问答等。

GPT 系列(Decoder 模型)

自回归语言模型,通过预测下一个词预训练,擅长生成类任务:文本续写、对话、摘要等。

T5 / BART(Encoder-Decoder 模型)

将各类 NLP 任务统一为「文本到文本」格式,适合翻译、摘要等序列到序列任务。

大语言模型(LLM)

大语言模型是近年来 AI 领域最重要的突破,核心特点:

Prompt Engineering

通过精心设计输入提示来引导模型输出,常用技巧:

RAG(检索增强生成)

结合外部知识库检索与 LLM 生成,解决模型知识过时和幻觉问题:

  1. 将文档切分并建立向量索引
  2. 用户提问时检索相关文档片段
  3. 将检索结果作为上下文注入 Prompt
  4. LLM 基于检索内容生成回答

常见 NLP 任务

任务描述应用
文本分类判断文本所属类别情感分析、垃圾邮件检测
命名实体识别识别人名、地名、机构名信息抽取、知识图谱
机器翻译将文本从一种语言翻译为另一种跨语言交流
文本摘要生成文本的简短概括新闻摘要、会议纪要
问答系统根据问题生成答案智能客服、搜索引擎
对话系统进行多轮自然对话聊天机器人、虚拟助手

代码实战:情感分析

Python · Transformers
from transformers import pipeline

# 加载预训练情感分析模型
classifier = pipeline(
    "sentiment-analysis",
    model="uer/roberta-base-finetuned-jd-binary-chinese"
)

# 分析文本情感
texts = [
    "这个产品非常好用,强烈推荐!",
    "质量太差了,完全不值这个价格。",
    "一般般吧,没有特别惊喜。"
]

for text in texts:
    result = classifier(text)[0]
    label = "正面" if result["label"] == "positive" else "负面"
    print(f"文本: {text}")
    print(f"情感: {label} (置信度: {result['score']:.2%})\n")