相关疑难解决方法(0)

3360
推荐指数
24
解决办法
73万
查看次数

Python nltk 词干分析器永远不会删除前缀

我正在尝试预处理单词以删除诸如“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)

删除常见前缀和后缀不是词干分析器工作的一部分吗?是否有另一个词干分析器可以可靠地做到这一点?

python nlp stemming porter-stemmer nltk

3
推荐指数
1
解决办法
1775
查看次数

NLTK Lemmatizer,提取有意义的词

目前,我将创建一个基于机器学习的自动映射类别的代码。

在那之前我会做自然语言处理。

有几个单词列表。

      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)

nlp nltk lemmatization python-3.x

0
推荐指数
1
解决办法
2313
查看次数