跳到主要内容

文本预处理

问题

NLP 中常见的文本预处理步骤有哪些?中英文分词有什么区别?

答案

一、预处理流程

二、分词

语言难点工具
英文简单空格分词即可NLTK, spaCy
中文无天然分隔符,需要分词模型jieba, pkuseg, LAC

分词方法

方法原理代表
词典匹配最大匹配/最短路径jieba
统计模型HMM、CRFpkuseg
SubwordBPE、WordPiece、UnigramGPT/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)

相关链接