在python中将整个句子合法化是行不通的

时间:2019-02-23 20:19:16

标签: python pandas scikit-learn nltk text-mining

我正在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结尾。

谢谢。

1 个答案:

答案 0 :(得分:1)

您必须传递“ v”(动词)以进行词形化

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']