Как говорят опытные дата саентисты: “Ваша модель может быть настолько хороша, насколько хороши данные для нее.”



Вот несколько пунктов, выполнение которых с высокой вероятностью увеличит точность при решении задач обработки естественного языка (NLP).



1️⃣Перевод всех букв в нижний или верхний регистр. В большинстве задач заглавные буквы являются ненужным признаком, который путает модель.



2️⃣Удаление цифр, чисел или перевод в текстовый эквивалент. Легко можно сделать с помощью регулярных выражений

'\b\d+(?:\.\d+)?\s+'

- для удаления цифр

'[^\w\s]'

- для удаления пунктуации



3️⃣Токенизация - разбиение текстового документа на отдельные слова(токены). Казалось бы, можно разбивать по пробелам или по знакам препинания, но как быть например с сокращениями?(к.т.н. и другие). Поэтому не все так просто,но к счастью есть готовые решения например в библиотеке nltk.



4️⃣Удаление стоп слов. Стоп слова, это слова которые не несут особого смысла и важности для решения задачи. Например, при классификации обращений пользователей, первое слово сообщения “Здравствуйте” не несет полезной информации для решения задачи. Существует готовый список из стоп слов, так же в библиотеке nltk, он содержит такие слова как

и, в, во, не, что, он, на, я, с, со

и другие. Слова в этот список можно как добавить так и удалить, в зависимости от решаемой задачи.



5️⃣Стемминг - процесс нахождения основы слова. Например “вечерний” ->”вечер”. Упрощает жизнь модели и помогает агрегировать похожие по смыслу слова.Основа слова не обязательно совпадает с морфологическим корнем слова.



6️⃣Лемматизация - приведение слова к начальной форме. Является альтернативой стемминга. Для существительных это именительный падеж, единственное число, для прилагательных - именительный падеж, единственное число, мужской род, для глаголов, причастий, деепричастий - глагол в инфинитиве несовершенного вида.