1. 什么是 NLP?一句话就能说明白

让“机器”完成人类语言理解生成交互三大任务。
举个🌰:
输入“我今天不开心” → 机器输出“要不要听个笑话?”

2. NLP 常见任务地图(2025 版)

层级 任务 生活例子 主流模型
词法 分词、词性标注 “南京市长江大桥” 怎么切? jieba、HanLP、BERT-char
句法 依存句法分析 谁修饰谁,主谓宾在哪? DDParser、Stanza
语义 文本分类、NER 快递单里抽“地址+电话” BERT、RoBERTa、GPT
生成 摘要、翻译、对话 把 2000 字报告压成 200 字 BART、T5、GLM、ChatGLM3
多模态 看图说话、语音转文字 上传一张菜单→返回英文翻译 BLIP-2、Whisper

3. 中文 NLP 第一大坑:分词

3.1 为什么英文不需要分词?

空格天然切好;中文没有空格,“结婚的和尚未结婚的” 到底怎么切?

3.2 三大分词工具 1 行代码对比

import jieba, pkuseg, hanlp
txt = "南京市长江大桥"
print("jieba:", "/".join(jieba.lcut(txt)))
print("pkuseg:", "/".join(pkuseg.pkuseg().cut(txt)))
print("hanlp:", "/".join(hanlp.load('PKU_NAME_MERGED_SIX_MONTHS_CONVSEG')(txt)))

输出差异:
jieba: 南京市/长江大桥
pkuseg: 南京/市/长江/大桥
hanlp: 南京市/长江大桥

结论:领域语料决定一切,没有“最准”,只有“最适合”。

3.3 子词时代还要分词吗?

BERT 中文用 字符级 + Whole Word Masking,WCBPE(Word-Chinese BPE)同时兼顾词与字。
→ 2025 年主流:直接上预训练模型,分词退居二线


4. 文本预处理 Pipeline(一张图记住)


5. 从 Bag-of-Words 到 Transformer:5 分钟速通

时代 代表 核心思想 优缺点
2000s TF-IDF + SVM 词袋+权重 快,但无语序
2013 Word2Vec 稠密向量 有语义,但一词多义不行
2018 ELMo 双向 LSTM 上下文相关 训练慢,推理慢
2018 BERT Transformer Encoder 双向+Self-Attention 里程碑,下游任务屠榜
2020 GPT-3 Decoder Only 大模型+Prompt 生成能力爆炸
2023+ GPT-4/GLM-4 多模态+工具调用 懂文本+看图+调用 API 新范式:LLM as OS

6. 预训练模型怎么用?3 行代码跑中文分类

from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments

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

def encode(examples):
    return tokenizer(examples["text"], truncation=True, padding="max_length", max_length=128)

train_ds = load_dataset("waimai", split="train").map(encode, batched=True)
trainer = Trainer(model=model, args=TrainingArguments("ckpt"), train_dataset=train_ds)
trainer.train()

数据集:外卖评价二分类(好评/差评)
1 个 T4 GPU,3 分钟,Accuracy 96.1%。


7. 没有 GPU?3 种“白嫖”算力通道

  1. Google Colab:每周 30h T4,改下 runtime→GPU 即可;

  2. 阿里云 PAI-DSW:新用户 3 个月 8h P100;

  3. 百度 AI Studio:每日 16GB V100 单卡。


8. 评估指标百科全书(附代码)

任务 指标 公式/口诀 一行代码
分类 Accuracy 对/总 accuracy_score(y_true, y_pred)
不平衡 F1 调和平均 f1_score(y_true, y_pred, average='macro')
多标签 Hamming Loss 错签比例 hamming_loss(y_true, y_pred)
NER Entity F1 实体级对齐 seqeval.metrics.f1_score([true], [pred])
生成 BLEU n-gram 重合 sacrebleu.corpus_bleu(hyp, [ref])
摘要 ROUGE-L 最长公共子序列 rouge_scorer.RougeScorer(['rougeL'])

9. 部署:把模型做成 REST API,5 步搞定

  1. 保存模型

model.save_pretrained("ckpt")
tokenizer.save_pretrained("ckpt")
  1. FastAPI 推理

from fastapi import FastAPI
from transformers import pipeline
app = FastAPI()
cls = pipeline("text-classification", model="ckpt")

@app.post("/pred")
def pred(item: dict):
    return cls(item["text"])[0]
  1. Docker 打包

FROM tiangolo/uvicorn-gunicorn:python3.11
COPY ./app /app
RUN pip install transformers torch fastapi
  1. 镜像推阿里云容器镜像服务

  2. 函数计算/SAE 部署 → 获得公网 HTTPS 地址,支持 10 万调用/天免费额度。


10. 进阶路线:从“调包”到“懂原理”

阶段 目标 推荐资源
① 调包侠 能跑 SOTA 本文+ transformers 官方 doc
② 原理派 手推 Self-Attention 《Attention Is All You Need》+ 李沐视频
③ 炼丹师 改结构、提指标 Chinese-BERT-wwm 论文 + 复现
④ MLOps 自动化+监控 《Hands-On MLOps》+ Jenkins/GitHub Actions
⑤ 多模态 懂文本+图像 CLIP、BLIP-2 官方 Notebook

11. 2025 趋势速写(彩蛋)

  1. 大模型 小型化:4-bit/8-bit 量化 + 投机解码,RTX4060 笔记本跑 7B 模型;

  2. RAG(检索增强生成)= 私有知识库标配,LangChain、LlamaIndex 日活破百万;

  3. Agent 工作流:LLM 调用外部 API,自动写 SQL、画图表、发邮件;

  4. 中文开源爆发:ChatGLM3-6B、Qwen-14B、Yi-34B 屠榜 SuperCLUE;

  5. 数据合成:模型自己生成高质量语料,缓解版权争议。


12. 一键复现资源包

名称 地址 备注
本文所有 Notebook https://github.com/yourname/NLP-Zero2One 点个 ⭐ 再跑!
中文停用词表 https://github.com/goto456/stopwords 通用+百度+哈工大
中文 NER 数据集 MSRA、PeopleDaily、Weibo 开箱即用
分词 PK 可视化 https://github.com/yourname/cws-battle Streamlit 交互

13. 结语:NLP 没有黑魔法,只有“向量+概率+算力”

  • 把语言变成数学,是 NLP;

  • 把数学变回语言,是 NLG;

  • 让这套流程跑在生产环境,是工程。

“当你能自己搭一条端到端 NLP Pipeline,
就会发现——机器离‘理解’人类,近了一小步;你离‘自由’技术,进了一大步。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐