词干提取与词形还原区别:Stemming、Lemmatization 和 Python 示例
系列进度
自然语言处理入门 · 第 9 / 30 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
词形归一能减少词表稀疏,但也可能把不同含义的词合并。英文任务中尤其要区分粗糙词干和更准确的词形还原。
我会比较归一前后的词表和样例句。词表变小是好事,但不能牺牲关键语义。
在文本预处理的过程中,词干提取与词形还原是两个重要的步骤。这两个技术帮助我们将单词归一化,以提高后续文本分析的效果。接下来,我们将详细探讨这两种技术的原理、实现方法及其应用案例。
词干提取
定义
比较 Stemming 和 Lemmatization 时,先看语言、词性、速度要求和是否需要保留真实词形。
词干提取是指将词语还原到其词干形式的过程。词干通常是单词的基本形式,可以认为是词语去掉后缀的结果。例如,单词“running”、“runner”和“ran”都可以归约为它们的词干“run”。词干提取的目的是将不同形式的相同词汇合并为一个统一的表示。
原理
词干提取通常依赖于一些启发式规则,使用下述算法,如:
- Porter算法:这一经典算法通过一系列的规则来去除词语中的后缀。
- Lancaster算法:更激进的算法,去除词语后缀的规则较多。
实现示例
以下是一个使用Python中的NLTK库进行词干提取的示例:
import nltk
from nltk.stem import PorterStemmer
# 初始化词干提取器
stemmer = PorterStemmer()
# 待处理的词汇
words = ["running", "runner", "ran", "easily", "fairly"]
# 进行词干提取
stems = [stemmer.stem(word) for word in words]
print("原始词汇:", words)
print("词干提取结果:", stems)
输出结果
原始词汇: ['running', 'runner', 'ran', 'easily', 'fairly']
词干提取结果: ['run', 'runner', 'ran', 'easi', 'fairli']
从输出可以看到,running和easily的词干被提取为相应的基本形式,但runner和fairly并没有完全去掉后缀。这也正是词干提取的局限性,它有时可能无法返回完全合理的词语。
词形还原
定义
看完《词干提取与词形还原区别:Stemming、Lemmatization...》后,建议用一分钟复盘:关键概念是否分清、练习步骤是否可复现、结论能不能换成自己的话。
词形还原指的是将单词转换为其基本形式(或原型)的过程,通常涉及到语法和词义的分析。在这个过程中,running会被还原为run,而better会被还原为good。与词干提取不同,词形还原注重语义而非形式。
原理
词形还原通常依赖于丰富的词汇库,以便判断不同形态的单词之间的关系。主要算法包括:
- WordNet词典:广泛应用于词形还原,支持多种语言的词汇。
- SpaCy库:强大的自然语言处理库,具有内置的词形还原功能。
实现示例
以下是一个使用Python中的SpaCy库进行词形还原的示例:
import spacy
# 加载英文模型
nlp = spacy.load("en_core_web_sm")
# 待处理的词汇
words = ["running", "ran", "better", "good"]
# 进行词形还原
lemmas = [token.lemma_ for token in nlp(" ".join(words))]
print("原始词汇:", words)
print("词形还原结果:", lemmas)
输出结果
原始词汇: ['running', 'ran', 'better', 'good']
词形还原结果: ['run', 'run', 'good', 'good']
从输出结果可以明显看出,词形还原不仅将形式相似的单词还原为相同的基础形式,还可以处理更复杂的词汇变化,例如将better还原为good。
复习《词干提取与词形还原区别:Stemming、Lemmatization 和 Python 示例》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《词干提取与词形还原区别:Stemming、Lemmatization 和 Python 示例》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
小结
在文本预处理阶段,词干提取和词形还原都有其独特的重要性。词干提取关注词语的形态变化,而词形还原则更倾向于语义一致性。选择哪个方法取决于具体的任务需求。
随着我们深入了解文本预处理的其他技术,比如词向量的词袋模型,我们将能够更好地理解文本数据,并为后续的分析做好准备。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
词干提取与词形还原区别:Stemming、Lemmatization 和 Python 示例适合谁读?
这是 自然语言处理入门 系列第 9 / 30 篇,适合正在学习自然语言处理入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇自然语言处理入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读