一、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