接着上一篇nltk的学习笔记,今天我们继续来看看nltk更多的内容~
Stopword 停用词:
停用词在文本中被视为噪音。文本可能包含停用词,例如is,am,are,this,a,an,the等。在用于删除停用词的NLTK中,我们需要创建停用词列表并从这些单词中过滤出标记列表。
我们可以试试看我们从nltk的语料库corpus里下载一下stopwords的词库:
然后,我们print一下,看看nltk给我们定义了什么stop word
接下来,我们就可以试试看从我们的句子里删除这些stop words~
我们要写一个for循环,让他循环我们句子里每一个词,看看有没有出现stop word,如果不是stop word,就让他append到我们新的list里面。
Stemming 词干提取
在英文中,会出现许多词语的不同词性,比如说,过去式,ing形式,分词形式,我们这个lexicon normalization可以让词语都回归到原来的形式,返璞归真!
我们用到的方法是 PorterStemmer.stem():
可以看到,stem后的词语都被打回原形,stem() 仿佛照妖镜!
Lemmatization 词性还原(stem升级版)
Lemmatization是将单词转换为其基本形式的过程。Lemmatization与stemming之间的区别在于,Lemmatization会考虑上下文并将单词转换为其有意义的基本形式,而stemming仅删除最后几个字符,通常会导致含义不正确和拼写错误。
看看下面的图,我们就明白了:
我们用到的方法是WordNetLemmatizer.lemmatize()
Wordnet是一个大型的,免费的,公共可用的英语词汇数据库,旨在建立单词之间的结构化语义关系。它也提供去词皮化功能,并且是最早,最常用的去词皮机之一,我们可以先安装它:nltk.download('wordnet')
然后,我们就可以来试试看词性还原了:
哇!厉害厉害,连better都可以变成good~
小伙伴们是不是注意到了词语后面的:“a”,“v”,“n”? 是什么意思呢?是词性的意思,他叫pos tag,可以规定lemmatize出来的词语是什么词性,如下图所示,a就是形容词,v是动词,n是名词~
nltk也有一个方法帮我们看词语的pos tag,这个方法是pos_tag():