如何阻止NLTK stemmer删除尾随的"e"?

kak*_*kyo 5 python nlp nltk

我正在使用NLTK词干分析器去除词干的语法变化.但是,Port或Snowball词干分析器删除了名词或动词的原始形式的尾随"e",例如,Profile变为Profil.

我怎样才能防止这种情况发生?我知道我可以用条件来防范这个.但显然它会在不同情况下失败.

是否有我想要的选项或其他API?

小智 7

我同意菲利普的观点,即阻塞器的目标只是保留杆.对于这种特殊情况,你可以尝试使用词形变换器而不是词干变换器,它应该保留更多的单词,并且意味着删除完全不同形式的单词,如'profiles' - >'profile'.NLTK中有一个类 - 从nltk.stem尝试WordNetLemmatizer().

要注意它仍然不完美(在处理文本时没什么),因为我曾经从'物理'中获得'物理'.


alv*_*vas 6

尝试:

>>> from nltk.stem import WordNetLemmatizer, PorterStemmer
>>> porter = PorterStemmer()
>>> wnl = WordNetLemmatizer()
>>> word = 'profile'
>>> porter.stem(word)
'profil'
>>> wnl.lemmatize(word)
'profile'
>>> wnl.lemmatize(word) if wnl.lemmatize(word).endswith('e') else porter.stem(word)
'profile'
Run Code Online (Sandbox Code Playgroud)