文本预处理
问题
NLP 中常见的文本预处理步骤有哪些?中英文分词有什么区别?
答案
一、预处理流程
二、分词
| 语言 | 难点 | 工具 |
|---|---|---|
| 英文 | 简单空格分词即可 | NLTK, spaCy |
| 中文 | 无天然分隔符,需要分词模型 | jieba, pkuseg, LAC |
分词方法
| 方法 | 原理 | 代表 |
|---|---|---|
| 词典匹配 | 最大匹配/最短路径 | jieba |
| 统计模型 | HMM、CRF | pkuseg |
| Subword | BPE、WordPiece、Unigram | GPT/BERT Tokenizer |
Subword 分词 vs 传统分词
LLM 使用 Subword(如 BPE),而非传统词级分词。这在 Tokenization 中详细讨论。
三、文本标准化
| 步骤 | 说明 | 示例 |
|---|---|---|
| 小写化 | 统一大小写 | "Hello" → "hello" |
| 词干化 | 去后缀取词干 | "running" → "run" |
| 词形还原 | 还原词典形式 | "better" → "good" |
| 去停用词 | 移除 the/a/is 等 | 根据停用词表 |
| 去特殊字符 | HTML 标签、URL 等 | 正则清洗 |
四、LLM 时代的变化
LLM 时代的文本预处理
使用 LLM 时,大部分传统预处理不再需要:
- ❌ 不需要手动分词、去停用词、词干化
- ✅ LLM 的 Tokenizer 自动处理
- ✅ 可能仍需要:HTML 清洗、长度截断、编码处理
常见面试问题
Q1: jieba 分词的原理?
答案:
- 生成 DAG 图:基于词典生成所有可能的分词组合(有向无环图)
- 动态规划:找到概率最大的分词路径
- HMM 新词发现:对词典中未收录的词汇用隐马尔可夫模型识别
Q2: 为什么 LLM 不用传统分词而用 BPE?
答案:
- 开放词汇:BPE 不依赖固定词典,任何文本都能编码
- 多语言:同一套 Tokenizer 处理中英文
- 稀有词处理:未知词拆成子词,不会 OOV(Out-of-Vocabulary)