Простой DataFrame, и я применяю к нему лемматизацию.
Некоторые слова остались без изменений, поэтому я ищу, если умный способ настроить лемматизацию.
import pandas as pd
samples = ["mike discussed the project",
"kate visited jack",
"tom received greetings",
"let them discuss",
"regular visits"]
train = pd.DataFrame(samples)
train[0] = train[0].apply(lambda x: " ".join(x.lower() for x in x.split()))
# Lemmatization
from textblob import Word
train[0] = train[0].apply(lambda x: " ".join([Word(word).lemmatize() for word in x.split()]))
freq = pd.Series(' '.join(train[0]).split()).value_counts()
print freq.to_string()
Вывод:
kate 1
them 1
the 1
visited 1
visit 1
tom 1
jack 1
let 1
regular 1
project 1
greeting 1
discussed 1
discus 1
mike 1
received 1
Некоторые слова остались без изменений: посещены, обсуждены, получены
(и «обсуждение» было изменено на «диск»)
Я могу добавить строки ниже до лемматизации.
Но какой способ лучше? Можно ли настроить лемматизацию?
# train[0] = train[0].str.replace('discussed', 'discuss')
# train[0] = train[0].str.replace('visited', 'visit')
# train[0] = train[0].str.replace('received', 'receive')
Кстати, попробовал WordNetLemmatizer от NLTK, он такой же. и я прочитал Python NLTK Лемматизация слова «далее» с помощью wordnet , но все еще не имею понятия.