Лемматизировать целое предложение в Python не работает - PullRequest
0 голосов
/ 23 февраля 2019

Я использую функцию WordNetLemmatizer () в пакете NLTK в python для лемматизации всего предложения набора данных обзора фильмов.

Вот мой код:

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 голосов
/ 23 февраля 2019

Вы должны передать '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']
...