装饰的功能@staticmethod和装饰的功能有什么区别@classmethod?
我正在尝试预处理单词以删除诸如“un”和“re”之类的常见前缀,但是 nltk 的所有常见词干分析器似乎都完全忽略了前缀:
from nltk.stem import PorterStemmer, SnowballStemmer, LancasterStemmer
PorterStemmer().stem('unhappy')
# u'unhappi'
SnowballStemmer('english').stem('unhappy')
# u'unhappi'
LancasterStemmer().stem('unhappy')
# 'unhappy'
PorterStemmer().stem('reactivate')
# u'reactiv'
SnowballStemmer('english').stem('reactivate')
# u'reactiv'
LancasterStemmer().stem('reactivate')
# 'react'
Run Code Online (Sandbox Code Playgroud)
删除常见前缀和后缀不是词干分析器工作的一部分吗?是否有另一个词干分析器可以可靠地做到这一点?
目前,我将创建一个基于机器学习的自动映射类别的代码。
在那之前我会做自然语言处理。
有几个单词列表。
sent ='The laughs you two heard were triggered
by memories of his own high j-flying
moist moisture moisturize moisturizing '.lower().split()
Run Code Online (Sandbox Code Playgroud)
我做了以下代码。我参考了这个网址。NLTK:词形还原器和 pos_tag
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
def lemmatize_all(sentence):
wnl = WordNetLemmatizer()
for word, tag in pos_tag(word_tokenize(sentence)):
if tag.startswith("NN"):
yield wnl.lemmatize(word, pos='n')
elif tag.startswith('VB'):
yield wnl.lemmatize(word, pos='v')
elif tag.startswith('JJ'):
yield wnl.lemmatize(word, pos='a')
words = ' '.join(lemmatize_all(' '.join(sent)))
Run Code Online (Sandbox Code Playgroud)
结果值如下所示。
laugh heard be trigger memory own high j-flying moist moisture moisturize …Run Code Online (Sandbox Code Playgroud)