
Автор статьи: Жанна Боташева
Выпускница курса Machine Learning. Professional
Всем привет! Хочу поделиться своей проектной работой, которую написала в рамках курса OTUS «Machine Learning. Professional».
Повсеместное распространение смартфонов позволяет людям сообщать о чрезвычайной ситуации, которую они наблюдают, в режиме реального времени. По этой причине все больше агентств (например, организации по оказанию помощи при стихийных бедствиях и информационные агентства) заинтересованы в программном мониторинге социальной сети X (бывший Twitter). Но не всегда ясно, действительно ли слова человека объявляют о катастрофе.
В данной работе я хотела бы рассказать, как с помощью обработки естественного языка (NLP) можно разработать систему, способную точно определять контекст твита.
Цель работы — создать модель, которая будет обрабатывать серию твитов и выявлять, относится ли твит к реальной катастрофе.
Для данной работы я использовала набор данных из 10 000 твитов, которые были классифицированы вручную. Набор данных включал в себя:
-
id — уникальный идентификатор для каждого твита;
-
text — текст твита;
-
location — место, откуда был отправлен твит;
-
keyword — определенное ключевое слово из твита;
-
target — информацию посвящен ли твит реальной катастрофе (1) или нет (0).

Предоработка и анализ
Столбец location содержит много пропусков, исходя из этого, делать какие-то выводы о вероятности катастрофы с местом, откуда был отправлен твит, некорректно.

Полагаться на ключевые слова (столбец keyword), такие как «взрыв» или «пожар» не стоит, так как не всегда слова человека объявляют о катастрофе, и они могут нести переносный смысл. Столбец id для дальнейшей работы не пригодится, так как не содержит никакой важной информации. После проведенного анализа, я удалила данные столбцы и оставила для дальнейшей работы только text и target. Приступим к очистке текста.
Твиты о катастрофе написаны более формально и содержат более длинные слова по сравнению с твитами, не связанными с катастрофой, возможно из-за того, что о них узнают от информационных агентств. Твиты, не связанные с катастрофой, содержат больше опечаток, чем твиты о катастрофе.
Датасет был очищен от нерелевантных символов (любые символы, не относящиеся к цифро-буквенным) с помощью регулярных выражений, были удалены стоп-слова (слова, которые не несут смысловой нагрузки, например, артикли, союзы и т.д.,), проведена лемматизация (процесс приведения словоформы к лемме — её нормальной (словарной) форме) и токенезация (процесс разделения предложений на слова-компоненты).
После предоработки получилось, что:
-
всего слов — 66587, при объеме словарного запаса — 14236;
-
максимальная длина предложения — 23 слова .

Векторные представления
Естественным способом представления текста для компьютеров является кодирование каждого символа по отдельности. Для преобразования входных данных из их исходного формата в векторы действительных чисел я использовала следующие техники:
1. Bag of Words (мешок слов) — модель представляет собой неупорядоченный набор слов, входящих в обрабатываемый текст. Модель представляют в виде матрицы, в которой строки соответствуют отдельному тексту, а столбцы — входящие в него слова.

2. TF-IDF (Term Frequency-Inverse Document Frequency) — статистическая мера, используемая для оценки важности слова в контексте документа, являющегося частью коллекции документов или корпуса.

3. Word2Vec — это искусственная нейронная сеть, которая обрабатывает текст, преобразуя его в числовые “векторизованные” слова. Векторы слов расположены в пространстве векторов таким образом, что слова с общим контекстом располагаются в этом многомерном пространстве в непосредственной близости друг от друга. Проще говоря, слова, близкие по значению, будут помещены рядом. Эта модель фиксирует синтаксическое и семантическое сходство между словами.

Для визуализации оптимальности разделения твитов и их причастности катастрофам (класс `Катастрофа` — target=1 и класс `Не катастрофа` — target=0) был использован метод главных компонент (PCA).

По графикам видно, что классы не очень четко разделены, возможно, это просто эффект сокращения размерности.
Обратимся к топу-10 слов, которые модель считает наиболее важными при классификации причастности к катастрофе: имеет ли твит отношение к бедствию или нет.

Выбранные топ-10 слов для каждого векторного представления выглядят релевантными. Можно увидеть, что некоторые слова такие как «bombing», «typhoon», «wildfire» присутствуют в разных эмбеддингах.
Моделирование
Для сравнения были использованы модели LogisticRegression и CatBoostClassifier.
Также была обучена BertForSequenceClassification, модель из Huggingface, которая позволяет легко настроить предварительно обученный режим BERT для задачи классификации. Для данной модели, сохраняются все стоп-слова для предоставления достаточной контекстной информации, например, слова отрицания (not, nor, never), которые считаются стоп-словами.
Для оценки эффективности моделей я использовала матрицу ошибок. Несмотря на то, что F1 Score практически одинаковый для данных моделей, предсказание False Negative намного меньше у BertForSequenceClassification, что в данной работе имеет большое значение.

По итогам проекта делаем следующие выводы:
-
Сложность не всегда лучше: в этой работе простая модель логистической регрессии превзошла по производительности очень сложные нейронные сети, причем за короткое время.
-
Для улучшения оценки f1 можно попробовать другие нейросетевые модели, но для определения показателя успешности в задачах классификации необходимо использовать матрицу ошибок.
Код по данной работе можно найти здесь.
Спасибо за внимание 🙂
ссылка на оригинал статьи https://habr.com/ru/articles/815449/
Добавить комментарий