在python中对整个句子进行Lematizing是行不通的

问题描述 投票:1回答:1

我在python的NLTK包中使用WordNetLemmatizer()函数来对电影评论数据集的整个句子进行词形变换。

这是我的代码:

from nltk.stem import LancasterStemmer, WordNetLemmatizer
lemmer = WordNetLemmatizer()

def preprocess(x):

    #Lemmatization
    x = ' '.join([lemmer.lemmatize(w) for w in x.rstrip().split()])

    # Lower case
    x = x.lower()

    # Remove punctuation
    x = re.sub(r'[^\w\s]', '', x)

    # Remove stop words
    x = ' '.join([w for w in x.split() if w not in stop_words])    
    ## EDIT CODE HERE ## 

    return x

df['review_clean'] = df['review'].apply(preprocess)

df中的评论是我想要处理的文本评论栏

在df上使用预处理函数后,新列review_clean包含已清理的文本数据,但它仍然没有词形文本。例如。我可以看到很多单词以-ed,-ing结尾。

提前致谢。

python pandas scikit-learn nltk text-mining
1个回答
1
投票

你必须将'v'(动词)传递给lemmatize:

x = ' '.join([lemmer.lemmatize(w, 'w') for w in x.rstrip().split()])

例:

In [11]: words = ["answered", "answering"]

In [12]: [lemmer.lemmatize(w) for w in words]
Out[12]: ['answered', 'answering']

In [13]: [lemmer.lemmatize(w, 'v') for w in words]
Out[13]: ['answer', 'answer']
© www.soinside.com 2019 - 2024. All rights reserved.