Как лемматизировать столбец?
Пытаюсь подготовить текст!. Убрала все знаки препинания, стоп-слова, токенизировала. Но не могу лемматизировать. Подскажите, как это можно сделать? Пробовала nltk, но он работает только с английским, а что можно использовать для русского?
import pandas as pd
import re
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.max_colwidth', None)
data = pd.read_csv('1.csv')
data.head(10)
# Функция для очистки текста от лишних символов
def clean_text(text):
# приводим текст к нижнему регистру
text = text.lower()
# создаем регулярное выражение для удаления лишних символов
regular = r'[\*+\#+\№\"\-+\+\=+\?+\&\^\.+\;\,+\>+\(\)\/+\:\\+]'
# удаляем лишние символы
text = re.sub(regular, '', text)
# заменяем числа и цифры на ' NUM '
text = re.sub(r'(\d+\s\d+)|(\d+)',' NUM ', text)
# удаляем лишние пробелы
text = re.sub(r'\s+', ' ', text)
# возвращаем очищенные данные
return text
# создаем список для хранения очищенных данных
cleaned_text = []
tokens = []
stop_words = stopwords.words('russian')
# создаем список для хранения данных без стоп-слов
stopwords_cleaned = []
lemmas = []
# для каждого сообщения text из столбца data['Message']
for text in data['Message']:
# очищаем данные
text = clean_text(text)
# добавляем очищенные данные в список cleaned_text
cleaned_text.append(text)
preprocess_text(text)
text = word_tokenize(text)
tokens.append(text)
text = [word for word in text if word not in stop_words]
stopwords_cleaned.append(text)
text = [lemmatizer.lemmatize(word) for word in text]
lemmas.append(text)
# записываем очищенные данные в новую колонку 'Cleaned_msg'
data['Cleaned_msg'] = cleaned_text
data['Tokens_msg'] = tokens
data['noStopwords_msg'] = stopwords_cleaned
data['Lemmas_msg'] = lemmas
Вот как выглядит текст для обработки после функции clean_text:
0 запах бомбический одна из лутших в моем списке желаний покупкой полностью удовлетворен
1 вода пришла без защитной пленки на коробке в самой коробке отсутствовала подставка