无论如何,是否可以不使用POS标记将两个词(观看者和观看者)词干“观看”?
from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()
wordnet_lemmatizer.lemmatize('watchers', pos='n')
wordnet_lemmatizer.lemmatize('watching', pos='v')
下面提到的这个和英语Stemmer都返回(“观察者”,“观察”)。我只需要使用nltk或spacy返回(“观看”)。
from nltk.stem.snowball import EnglishStemmer
stemmer = EnglishStemmer()
stemmer.stem('watchers') , stemmer.stem('watching')
这可能吗?
答案 0 :(得分:2)
Lancaster 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 结尾的动词,例如 sever , aver 等, Lancaster Stemmer 均失败。 br /> verbs that end in -er
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