对 python 中的整个句子进行词形还原不起作用
Lemmatizing whole sentence in python does not work
我在 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中的review是我要处理的文字评论栏
在 df 上使用预处理功能后,新列 review_clean 包含经过清理的文本数据,但仍然没有词形还原文本。例如。我可以看到很多单词以 -ed、-ing 结尾。
提前致谢。
你必须通过 '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']
我在 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中的review是我要处理的文字评论栏
在 df 上使用预处理功能后,新列 review_clean 包含经过清理的文本数据,但仍然没有词形还原文本。例如。我可以看到很多单词以 -ed、-ing 结尾。
提前致谢。
你必须通过 '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']