文本预处理
概述
文本预处理(Text Preprocessing)是搜索引擎的核心前处理阶段,决定哪些词条被索引(影响召回率)、词条如何归一化(影响精确率)。黄金法则:索引时与查询时的预处理步骤必须完全一致。
关键内容
-
完整流水线(顺序固定):字符级清洗 → 分词(Tokenization)→ 大小写归一化 → 停用词过滤 → 词干提取/词形还原 → 同义词扩展(可选)。
-
分词(Tokenization):
- 空白分词:最简单,标点粘连问题
- 标准分词:Unicode 规则,处理缩写(U.S.A.)、连字符
- 中文分词:无天然空格,主流方法:基于词典前向最大匹配(jieba)、HMM(将分词视为 B/M/E/S 序列标注 + Viterbi 算法)、CRF(判别式版本,特征更丰富)、深度学习(BiLSTM-CRF,LTP/HanLP)
-
N-gram 分词:字符级 bigram 用于拼写容错,词级 bigram 用于短语匹配,但索引膨胀 5-50 倍
-
停用词过滤:高频低语义词(英文约 100-200 个,中文"的/了/是"等)。现代引擎更倾向IDF 自动识别:出现在所有文档中的词 IDF→0,自动获得极低权重,效果等同于被过滤。风险:不应过滤命名实体("The Office"、"to do list")。
-
词干提取(Stemming):启发式规则截断词根,速度极快但不精确:
- Porter Stemmer(经典,~5% 错误率)
- Snowball/Porter2(改进版,~3% 错误率)
- Lancaster(激进,~15% 错误率)
-
常见错误:过度截断(general/generalize→general,不同词合并)、截断不足
-
词形还原(Lemmatization):词典+词性分析,返回真实词典形式(lemma)。比词干提取慢但精确:better→good、geese→goose、went→go。搜索引擎通常优先速度,用词干提取;问答系统优先准确性,用词形还原。
-
同义词扩展:索引时扩展(索引膨胀)vs 查询时扩展(更灵活)。来源:WordNet、人工词典、Word2Vec 相似词、搜索日志挖掘。
来源
raw/articles/ai-engineering/search-retrieval/02_text_preprocessing.md— 传统搜索引擎深度解析系列 第2篇