返回不带 POS 标记的基本单词



无论如何都可以在不使用POS标记的情况下将两个词(观看者和观察者(都"观看"起来?

from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()
wordnet_lemmatizer.lemmatize('watchers', pos='n')
wordnet_lemmatizer.lemmatize('watching', pos='v')

这和下面提到的英语词干都返回('watcher', 'watch'(。我只需要使用 nltk 或 spacy 返回("手表"(。

from nltk.stem.snowball import EnglishStemmer
stemmer = EnglishStemmer()
stemmer.stem('watchers') , stemmer.stem('watching')

这可能吗?

NLTKLancaster Stemmer将返回所需的结果。NLTK中有很多词干分析器,它们通过它们使用的规则进行区分。

from nltk.stem import LancasterStemmer
stemmer = LancasterStemmer()
print stemmer.stem("watching"), stemmer.stem("watchers")
>watch watch

从NLTK-Lancaster_Stemmer可以看出,规则是:

"re2>",      # -er > -

Lancaster Stemmer不同,Snowball Stemmer不使用此规则,因此在这些词干分析器中从不同的角度处理-er 后缀。 例如,当-er出现在元音之后时,两者都正确。兰开斯特词干器对于大多数以辅音 + -er 结尾的动词失败,例如以 -er 结尾的severaver等动

from nltk.stem.snowball import SnowballStemmer
from nltk.stem import LancasterStemmer
snowball_stemmer = SnowballStemmer("english")
lancaster_stemmer = LancasterStemmer()
print snowball_stemmer.stem("beer"), lancaster_stemmer.stem("beer")
>beer beer
print snowball_stemmer.stem("aver"), lancaster_stemmer.stem("aver")
>aver av

最新更新