跳到主内容
快讯直播
AI智模界
AI 词典

词干提取与词形还原:running 和 ran 到底算不算一个词

一句话定义:词干提取(Stemming)和词形还原(Lemmatization)都是把同一个词的不同变形归并到同一个代表形式,好让程序把 running、runs、ran 当成一回事来处理。

为什么要做这件事?因为在计算机眼里,run、runs、running、ran 是四个完全不同的字符串。如果直接统计词频,一个概念就被拆成了四份;做搜索时用户搜 run,也可能搜不到写着 running 的文章。归并之后,这四个词会统一成一个形式,通常叫词元(lemma)或词干(stem)。

两种做法的激进程度完全不同。

词干提取是“砍”:按一套固定的规则把词尾削掉,不管削完还剩不剩下一个真正的词。running → runn,runs → run,studies → studi。它很快,不需要词典,也不需要懂句子结构,代价是会产生一堆字典里查不到的东西(runnt、studi)。经典算法 Porter Stemmer 就是这类思路,规则写死,几行代码就能跑。

词形还原是“查”:先判断这个词在句子里是什么词性,再去词典里找它的原形。所以 running 在“he is running”里还原成 run,在“running water”里可能仍按形容词处理;ran 因为是动词 run 的不规则过去式,也能被正确还原回 run,而词干提取对 ran 基本无能为力,因为不规则变化靠砍词尾解决不了。代价是慢,而且要依赖词性标注(POS tagging),词性标错就会还原错。

打个比方:词干提取像园丁拿大剪刀把一排灌木咔嚓剪齐,快是快,但会剪掉不该剪的枝;词形还原像查户籍,翻到本人的“本名”,准,但得先知道这人是谁(词性)。

维度词干提取 Stemming词形还原 Lemmatization
做法按规则截断词尾查词典和词性,还原成原形
速度快慢
输出可能不是真词(studi)一定是真词(study)
处理 ran通常失败能还原成 run
典型用途搜索索引、粗略聚类需要可读结果的场景

和相邻概念的区别:别把它和分词(tokenization)搞混。分词只是把句子切成一个个词元(token),不改变词形;词干提取和词形还原是在分词之后做的归一化。另外,今天的大模型普遍使用子词切分(subword tokenization,如 BPE),它按出现频率切碎片,目的是控制词表大小,跟“把 running 和 ran 归成一个词”是两回事。

实际意义:做搜索、推荐、日志分析、关键词统计时,归一化能明显提升召回,让搜 run 的人也能看到 running。但如果结果要展示给人看,就别用词干提取的输出,studi 很难看。工程上常见的折中是:索引用词干提取图快,展示和下游语义任务用词形还原。选哪个,取决于你要的是速度还是可解释性。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。