Answer
t.me/python_tesstОтвет:
[nltk_data] Downloading package stopwords to
[nltk_data] C:\Users\SP\AppData\Roaming\nltk_data...
[nltk_data] Unzipping corpora\stopwords.zip.
[nltk_data] Downloading package punkt to
[nltk_data] C:\Users\SP\AppData\Roaming\nltk_data...
[nltk_data] Package punkt is already up-to-date!
Объяснение:
Попробуем разобрать некоторые строчки кода. Необходимо обработать текст - в нём нужно убрать знаки препинания, стоп-слова, выделить слова с одной основой и привести всё это в пригодный для машины вид. Чтобы убрать знаки препинания, а заодно и любые другие символы кроме русских букв, можно воспользоваться регулярными выражениями. Для отбора стоп-слов есть специальная библиотека nltk. А для приведения слов к своей основной форме можно пропустить их через стемминг.
Код:
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.stem.snowball import SnowballStemmer
import re
import tqdm
nltk.download('stopwords')
nltk.download('punkt')
# Функция обрабатывает тексты для дальнейшего использования
def process_text(texts):
stemmer = SnowballStemmer(language='russian')
stop_words = set(stopwords.words('russian'))
regex = re.compile('[^а-я А-Я]')
process_texts = []
for text in tqdm.tqdm(texts):
text = text.lower()
# Удаляет любые символы, кроме русских букв
text = regex.sub(' ', text)
# Разбивает текст на отдельные слова
word_tokens = word_tokenize(text)
# Убирает стоп слова и пропускаем через стемминг оставшиеся
filtered_sentence = [stemmer.stem(w) for w in word_tokens if not w in stop_words]
process_texts.append(' '.join(filtered_sentence))
return process_texts
df['textProcessed'] = process_text(df['textOriginal'])