机器学习之NLP常见函数整理

一、nltk包函数

1.1 词干提取

当遇到两个或两个以上单词具有共同根源的情况。 例如,agreed, agreeing 和 agreeable这三个词具有相同的词根。 涉及任何这些词的搜索应该把它们当作是根词的同一个词。所以需要进行词干提取。在NLTK库中有一些方法来完成这个链接,并给出显示根词的输出。 以下程序使用Porter Stemming算法进行词干提取。

from nltk.stem.porter import PorterStemmer
stemmer=PorterStemmer() #词干提取函数
print(stemmer.stem('flowers'))
print(stemmer.stem('zeros'))
print(stemmer.stem('stemmer'))
print(stemmer.stem('sixties'))
print(stemmer.stem('sixty'))
print(stemmer.stem('goes'))
print(stemmer.stem('go'))
#结果
flower
zero
stemmer
sixti
sixti
goe
go

次干提取函数适用于很多函数,但不是万能的。

1.2 词形还原

简单说来,词形还原就是去掉单词的词缀,提取单词的主干部分,通常提取后的词汇会是字典中的单词,不同于词干提取(stemming),提取后的单词不一定会出现在词汇中。比如,单词“cups”词形还原后的单词为“cup”,单词“ate”词形还原后的单词为“eat”。在下面的程序中,使用WordNet词法数据库进行词形化。

import nltk
nltk.download('wordnet') #第一次进行词性还原时,需要下载wordnet
from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer=WordNetLemmatizer() #词形还原
print(wordnet_lemmatizer.lemmatize('flowers'))
print(wordnet_lemmatizer.lemmatize('zeros'))
print(wordnet_lemmatizer.lemmatize('stemmer'))
print(wordnet_lemmatizer.lemmatize('sixties'))
print(wordnet_lemmatizer.lemmatize('sixty'))
print(wordnet_lemmatizer.lemmatize('goes'))
print(wordnet_lemmatizer.lemmatize('go'))
#结果
flower
zero
stemmer
sixty
sixty
go
go
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐