В данной статье хотелось бы поделиться основными принципами и методами NLP, применяемыми для подготовки текста перед использованием в машинном обучении.
Для начала импортируем все необходимые библиотеки:
В качестве примера будем использовать отрывок из произведения М.Ю. Лермонтова – «Бородино».
Считаем эти данные из текстового файла:
Первым шагом в обработке данных является приведение всех символов текста к нижнему регистру:
Далее из текста удаляются знаки пунктуации, различные небуквенные символы и цифры. Сделать это можно, применив функцию re.sub и указав в качестве параметра шаблон для поиска всех небуквенных символов:
Для применения последующих методов имеет смысл разбить каждую строку на список составляющих её слов. Для этого можно воспользоваться возможностями библиотеки nltk:
Существуют слова, которые в процессе применения алгоритмов машинного обучения добавляют шум и влияют на качество модели (стоп-слова). Список стоп-слов можно увидеть, воспользовавшись командой:
Теперь удалим стоп-слова из наших данных:
Обычно тексты содержат различные грамматические формы одного и того же слова либо однокоренные слова. Для приведения встречающихся словоформ к одной (нормальной форме) используется лемматизация.
Лемматизация – процесс, который использует морфологический анализ и словарь, для приведения слова к его канонической форме – лемме.
Для этой задачи будем применять библиотеку pymorphy2:
После всех преобразований, можно оценить слова в полученном документе. Для этого необходимо преобразовать обработанный текст в набор цифр. Именно эти данные можно использовать как входные данные для модели машинного обучения.
Сформированная последовательность (вектор) из нулей и единиц может использоваться в качестве набора фичей при обучении моделей.