NLTK中的Stemmers

Stemmers

在英语中,一个单词常常是另一个单词的“变种”,如:happy=>happiness,这里happy叫做happiness的词干(stem)。在信息检索系统中,我们常常做的一件事,就是在Term规范化过程中,提取词干(stemming),即除去英文单词分词变换形式的结尾。

本文主要介绍nltk中Stemmer的用法

Porter Stemmer

应用最为广泛的、中等复杂程度的、基于后缀剥离的词干提取算法是波特词干算法,也叫波特词干器(Porter Stemmer)。

from nltk.stem.porter import *
stemmer = PorterStemmer()
plurals = ['caresses', 'flies', 'dies', 'mules', 'denied','died', 'agreed', 'owned', 'humbled', 'sized','meeting', 'stating', 'siezing', 'itemization','sensational', 'traditional', 'reference', 'colonizer','plotted']
singles = [stemmer.stem(plural) for plural in plurals]
print(' '.join(singles))

'''
output: caress fli die mule deni die agre own humbl size meet
state siez item sensat tradit refer colon plot
'''

Snowball stemmer

雪球词干算法(不知道该怎么翻译=.=)支持多种语言

>>> from nltk.stem.snowball import SnowballStemmer
>>> print(" ".join(SnowballStemmer.languages))
danish dutch english finnish french german hungarian italian
norwegian porter portuguese romanian russian spanish swedish

以英语为例:

>>> stemmer = SnowballStemmer("english")
>>> print(stemmer.stem("running"))
run

可以设置忽略停用词:

>>> stemmer2 = SnowballStemmer("english", ignore_stopwords=True)
>>> print(stemmer.stem("having"))
have
>>> print(stemmer2.stem("having"))
having

一般来说,SnowballStemmer("english")要比PorterStemmer()更准确。

>>> print(SnowballStemmer("english").stem("generously"))
generous
>>> print(SnowballStemmer("porter").stem("generously"))
gener

LancasterStemmer

也是一种词干提取器,直接看代码吧。

>>> from nltk.stem.lancaster import LancasterStemmer
>>> lancaster_stemmer = LancasterStemmer()
>>> lancaster_stemmer.stem(‘maximum’)
‘maxim’
>>> lancaster_stemmer.stem(‘presumably’)
‘presum’
>>> lancaster_stemmer.stem(‘presumably’)
‘presum’
>>> lancaster_stemmer.stem(‘multiply’)
‘multiply’
>>> lancaster_stemmer.stem(‘provision’)
u’provid’
>>> lancaster_stemmer.stem(‘owed’)
‘ow’

原文地址:https://www.cnblogs.com/Patrick-L/p/12251747.html

时间: 2024-10-03 00:44:26

NLTK中的Stemmers的相关文章

nltk中的三元词组,二元词组

在做英文文本处理时,常常会遇到这样的情况,需要我们提取出里面的词组进行主题抽取,尤其是具有行业特色的,比如金融年报等.其中主要进行的是进行双连词和三连词的抽取,那如何进行双连词和三连词的抽取呢?这是本文将要介绍的具体内容. 1. nltk.bigrams(tokens) 和 nltk.trigrams(tokens) 一般如果只是要求穷举双连词或三连词,则可以直接用nltk中的函数bigrams()或trigrams(), 效果如下面代码: 1 >>> import nltk 2 >

在nltk中调用stanfordparser处理中文

出现unicode decode error 解决办法是修改nltk包internals.py的java()下增加cmd的参数,cmd = ["-Dfile.encoding=UTF-8"] + cmd,(https://github.com/nltk/nltk/issues/929) 另外需要注意unicode和str的区别.

NLTK中的词性

NOUN n,VERB v ,ADJ a, ADV r, ADJ_SAT s NOUN: [('s', ''), ('ses', 's'), ('ves', 'f'), ('xes', 'x'), ('zes', 'z'), ('ches', 'ch'), ('shes', 'sh'), ('men', 'man'), ('ies', 'y')], VERB: [('s', ''), ('ies', 'y'), ('es', 'e'), ('es', ''), ('ed', 'e'), ('ed

Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器

http://www.52nlp.cn/python%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E5%AE%9E%E8%B7%B5-%E5%9C%A8nltk%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%96%AF%E5%9D%A6%E7%A6%8F%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E5%99%A8 原文地址:https://www.cnblogs.com/lhuser/p/

Python自然语言工具包(NLTK)入门

在本期文章中,小生向您介绍了自然语言工具包(Natural Language Toolkit),它是一个将学术语言技术应用于文本数据集的 Python 库.称为“文本处理”的程序设计是其基本功能:更深入的是专门用于研究自然语言的语法以及语义分析的能力. 鄙人并非见多识广, 语言处理(linguistic processing) 是一个相对新奇的领域.如果在对意义非凡的自然语言工具包(NLTK)的说明中出现了错误,请您谅解.NLTK 是使用 Python 教学以及实践计算语言学的极好工具.此外,计

【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理

干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开数据集.模型上提供了全面.易用的接口,涵盖了分词.词性标注(Part-Of-Speech tag, POS-tag).命名实体识别(Named Entity Recognition, NER).句法分析(Syntactic Parse)等各项 NLP 领域的功能.

【转帖】Python在大数据分析及机器学习中的兵器谱

Flask:Python系的轻量级Web框架. 1. 网页爬虫工具集 Scrapy 推荐大牛pluskid早年的一篇文章:<Scrapy 轻松定制网络爬虫> Beautiful Soup 客观的说,Beautifu Soup不完全是一套爬虫工具,需要配合urllib使用,而是一套HTML/XML数据分析,清洗和获取工具. Python-Goose Goose最早是用Java写得,后来用Scala重写,是一个Scala项目.Python-Goose用Python重写,依赖了Beautiful S

NLTK笔记1

1.链表的连接 list1+list2 list1.append("word") 2.链表的索引 list[10] list.index("word")//链表的第一个"word"的位置 list.count("word") 3.频率分布 fdist1 = FreqDist(text1) dist= FreqDist(samples) 创建包含给定样本的频率分布 fdist.inc(sample) 增加样本 fdist['mo

python+NLTK 自然语言学习处理四:获取文本语料和词汇资源

在前面我们通过from nltk.book import *的方式获取了一些预定义的文本.本章将讨论各种文本语料库 1 古腾堡语料库 古腾堡是一个大型的电子图书在线网站,网址是http://www.gutenberg.org/.上面有超过36000本免费的电子图书,因此也是一个大型的预料库.NLTK也包含了其中的一部分 .通过nltk.corpus.gutenberg.fileids()就可以查看包含了那些文本. ['austen-emma.txt', 'austen-persuasion.tx