【漫话机器学习系列】212.词干(Stemming Words)

【NLP基础】什么是词干提取(Stemming)?——从“tradit”谈起

在自然语言处理(NLP)中,我们经常遇到一个任务:如何将形态各异的单词转化为“标准形式”以便分析? 词干提取(Stemming)就是实现这一目标的一种基础技术手段。

如图所示,词干提取是指通过削减单词的某些部分(如词缀)来获得它的“词根”或“词干(stem)”。这项技术尽管可能会影响词语的可读性,却能大大提高文本处理时的可比性和归一性


一、什么是词干提取(Stemming)?

词干提取是一种将单词还原为其基本形式(词干)的算法。例如,将:

  • “connection”、

  • “connected”、

  • “connecting”

统一还原为词干形式 “connect”。

这项操作不考虑语义或词性,只是简单地按照规则“砍掉”后缀

图中示例:
英文单词 “tradition” 和 “traditional” 都可以被提取出相同的词干:“tradit”
尽管 “tradit” 并不是一个合法的英语单词,它却是一个用于计算机文本分析的有效“统一体”。


二、词干提取与词形还原(Lemmatization)的区别

项目词干提取(Stemming)词形还原(Lemmatization)
方法基于规则砍掉词缀基于词典查找词的原形
精确度较低,可能产生伪词较高,输出是合法词汇
示例“tradition” → “tradit”“better” → “good”
应用场景快速处理大量文本对语义分析要求较高的任务

三、常用词干提取算法

  1. Porter Stemmer
    最经典的英文词干提取算法,规则集小,运行快,效果中等。

  2. Lancaster Stemmer
    更激进,规则更多,词干更短,但误删可能性更高。

  3. Snowball Stemmer
    Porter 的改进版本,支持多语言,更灵活。


四、词干提取的优点与限制

优点

  • 提升文本匹配能力
    使“run”、“running”、“ran”都归为“run”,便于词频统计、关键词提取等任务。

  • 加快处理速度
    简单基于规则,适合海量数据快速处理。

  • 在信息检索中增强查准率/查全率

限制

  • 产生不可读伪词(如图中的 “tradit”)

  • 语义模糊(如“universe”和“university”可能会被误处理成相同词干)

  • 过度提取/欠提取问题

  • 对中文、韩文等语言效果有限(适用于屈折语,如英语、西班牙语等)


五、词干提取的应用场景

  1. 文本分类(如垃圾邮件识别)

  2. 搜索引擎索引

  3. 主题建模

  4. 社交媒体情感分析

  5. 问答系统


六、在 Python 中实现词干提取(以 NLTK 为例)

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()

words = ["tradition", "traditional", "traditionally"]
stems = [stemmer.stem(word) for word in words]

print(stems)
# 输出: ['tradit', 'tradit', 'tradit']


七、小结

词干提取是文本预处理中的重要环节,尽管它可能牺牲部分语言自然性,但在文本压缩、检索、分析等任务中,它提供了简单而有效的手段。

图中的例子简明直观地说明了词干提取的本质:不追求完整语义,而注重形式上的统一。这种“牺牲可读性,换取可比性”的方式,正是现代 NLP 实用主义精神的体现。


图解作者:Chris Albon
推荐阅读

  • Porter, M.F. (1980). An Algorithm for Suffix Stripping.

  • 《Speech and Language Processing》by Jurafsky & Martin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值