《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.5 词干提取

简介:

本节书摘来异步社区《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书中的第2章,第2.5节,作者:Nitin Hardeniya,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 词干提取

所谓词干提取(stemming),顾名思义就是一个修剪枝叶的过程。这是很有效的方法,通过运用一些基本规则,我们可以在修剪枝叶的过程中得到所有的分词。词干提取是一种较为粗糙的规则处理过程,我们希望用它来取得相关分词的各种变化。例如eat这个单词就会有像eating、eaten、eats等变化。在某些应用中,我们是没有必要区分eat和eaten之间的区别的,所以通常会用词干提取的方式将这种语法上的变化归结为相同的词根。由此可以看出,我们之所以会用词干提取方法,就是因为它的简单,而对于更复杂的语言案例或更复杂的NLP任务,我们就必须要改用词形还原(lemmatization)的方法了。词形还原是一种更为健全、也更有条理的方法,以便用于应对相关词根的各种语法上的变化。

下面,我们就来看一段词干提取的具体过程:

>>>from nltk.stem import PorterStemmer # import Porter stemmer
>>>from nltk.stem.lancaster import LancasterStemmer
>>>from nltk.stem.Snowball import SnowballStemmer
>>>pst = PorterStemmer()   # create obj of the PorterStemmer
>>>lst = LancasterStemmer() # create obj of LancasterStemmer 
>>>lst.stem("eating")
eat
>>>pst.stem("shopping")
shop

一个拥有基本规则的词干提取器,在像移除-s/es、-ing或-ed这类事情上都可以达到70%以上的精确度,而Porter词干提取器使用了更多的规则,自然在执行上会得到很不错的精确度。

我们创建了不同的词干提取器对象,并在相关字符串上调用了 stem()方法。结果如你所见,当用一个简单实例来查看时,它们之间并没有太大的差别,但当多种词干提取算法介入时,就会看到它们在精准度和性能上的差异了。关于这方面的更多细节,你可以去看看 http://www.nltk. org/api/nltk.stem.html 页面上的相关信息。通常情况下,我们使用的是Porter词干提取器,如果是在英语环境中工作,这个提取器已经够用了。当然,还有Snowball提取器这一整个提取器家族,可分别用于处理荷兰语、英语、法语、德语、意大利语、葡萄牙语、罗马尼亚语和俄语等语言。特别地,我也曾经遇到过可用来处理印地文的轻量级词干提取器:http://research.variancia.com/hindi_stemmer

注意 小技巧: 

我们会建议那些希望对词干提取进行更深入研究的人去看看关于所有词干提取器的相关研究http://en.wikipedia. org/wiki/Stemming[2]

但是,对大多数用户而言,Porter和Snowball这两种词干提取器就足以应付大量的相关用例了。在现代的NLP应用中,人们有时候会将词干提取当作是一种预处理步骤从而将其忽略掉,因此这往往取决于我们所面对的具体领域和应用。在这里,我们想告诉你一个事实,即如果你希望用到某些NLP标注器,如词性标注(POS)、NER或某种依赖性解析器中的某些部分,那么就应该避免进行词干提取操作,因为词干提取会对相关分词进行修改,这有可能会导致不同的结果。

当讨论到一般标注器时,我们还会进一步对此展开讨论。

相关文章
|
2天前
|
机器学习/深度学习 人工智能 TensorFlow
机器学习项目实战:使用Python实现图像识别
在AI时代,Python借助TensorFlow和Keras实现图像识别,尤其在监控、驾驶、医疗等领域有广泛应用。本文通过构建CNN模型识别MNIST手写数字,展示图像识别流程:安装库→加载预处理数据→构建模型→训练→评估。简单项目为深度学习入门提供基础,为进一步探索复杂场景打下基础。
12 5
|
2天前
|
机器学习/深度学习 存储 算法
【机器学习】深入探索机器学习:线性回归算法的原理与应用
【机器学习】深入探索机器学习:线性回归算法的原理与应用
10 0
|
4天前
|
机器学习/深度学习 算法 Python
介绍文本分类的基本概念、常用方法以及如何在Python中使用机器学习库进行文本分类
【6月更文挑战第13天】文本分类是机器学习在数字化时代的关键应用,涉及文本预处理、特征提取和模型训练等步骤。常见方法包括基于规则、关键词和机器学习,其中机器学习(如朴素贝叶斯、SVM、深度学习)是主流。在Python中,可使用scikit-learn进行文本分类,例如通过TF-IDF和朴素贝叶斯对新闻数据集进行处理和预测。随着技术发展,未来将深入探索深度学习和多模态数据在文本分类中的应用。
8 2
|
4天前
|
机器学习/深度学习 边缘计算 TensorFlow
Python机器学习工具与库的现状,并展望其未来的发展趋势
【6月更文挑战第13天】本文探讨了Python在机器学习中的核心地位,重点介绍了Scikit-learn、TensorFlow、PyTorch等主流库的现状。未来发展趋势包括自动化、智能化的工具,增强可解释性和可信赖性的模型,跨领域融合创新,以及云端与边缘计算的结合。这些进展将降低机器学习门槛,推动技术在各领域的广泛应用。
9 3
|
5天前
|
机器学习/深度学习 算法 数据挖掘
机器学习新手也能飞:Python+Scikit-learn让你轻松入门!
【6月更文挑战第12天】Python和Scikit-learn降低了机器学习的门槛,让初学者也能轻松涉足。Python以其易用性及丰富的库支持成为机器学习首选语言,而Scikit-learn作为开源机器学习库,提供多种算法和工具。通过简单示例展示了如何使用两者处理鸢尾花数据集进行分类,体现其在实践中的高效便捷。掌握这两者,能助你在机器学习领域不断探索和创新。
|
5天前
|
机器学习/深度学习 数据采集 算法
机器学习入门:scikit-learn库详解与实战
本文是面向初学者的scikit-learn机器学习指南,介绍了机器学习基础知识,包括监督和无监督学习,并详细讲解了如何使用scikit-learn进行数据预处理、线性回归、逻辑回归、K-means聚类等实战操作。文章还涵盖了模型评估与选择,强调实践对于掌握机器学习的重要性。通过本文,读者将学会使用scikit-learn进行基本的机器学习任务。【6月更文挑战第10天】
26 3
|
5天前
|
机器学习/深度学习 人工智能 运维
智能化运维:AI与机器学习在IT管理中的应用
【6月更文挑战第11天】随着技术的不断进步,智能化运维已成为提升IT系统效率和稳定性的关键。本文深入探讨了人工智能(AI)和机器学习如何革新传统的运维模式,通过实际案例分析,揭示这些先进技术如何帮助企业实现自动化监控、故障预测、性能优化以及安全防护,从而确保业务的连续性和可靠性。
|
6天前
|
机器学习/深度学习 存储 算法
PHP中的数据结构及其在机器学习中的应用
本文探讨了PHP在机器学习中的作用,强调了数据结构的重要性。文中列举了PHP中的常见数据结构,如数组、对象、字典、链表、树和图,并解释了它们在机器学习场景下的应用。例如,数组用于特征向量,对象封装模型,字典存储特征映射,链表和树实现特定算法。通过示例代码展示了如何使用这些数据结构进行特征标准化和模型预测。文章总结指出,PHP的数据结构为机器学习提供了有效工具,随着技术发展,PHP在数据处理领域的应用将持续扩展。
15 4
|
7天前
|
机器学习/深度学习 算法 大数据
【机器学习】朴素贝叶斯算法及其应用探索
在机器学习的广阔领域中,朴素贝叶斯分类器以其实现简单、计算高效和解释性强等特点,成为了一颗璀璨的明星。尽管名字中带有“朴素”二字,它在文本分类、垃圾邮件过滤、情感分析等多个领域展现出了不凡的效果。本文将深入浅出地介绍朴素贝叶斯的基本原理、数学推导、优缺点以及实际应用案例,旨在为读者构建一个全面而深刻的理解框架。
11 1
|
7天前
|
机器学习/深度学习 数据采集 TensorFlow
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
【6月更文挑战第10天】Python和深度学习驱动的医学影像诊断正在革新医疗行业。借助TensorFlow等库,开发人员能轻松构建CNN等模型,自动提取影像特征,提升疾病诊断准确性。已在肿瘤检测等领域取得显著成果,但也面临数据质量和模型解释性等挑战。随着技术进步,深度学习有望在医学影像诊断中发挥更大作用。