AntiToxicBot — бот, распознающий токсичных пользователей в телеграм чатах. Немного об архитектуре нейросети бота.Часть 2

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Предыстория

Есть известная проблема с токсичными людьми в чатах. У модераторов чатов не всегда получается отслеживать и банить токсичных людей, хотелось бы автоматизировать процесс.

В прошлой статье было мало уделено архитектуре нейросети. Цель данной статьи рассказать больше об архитектуре сети и её компонентов, которые использует бот для определения токсичных сообщений.

Если вы не читали предыдущую статью, пожалуйста, ознакомьтесь.

Об архитектуре.

Архитектура нейросети CNN + GRU. Почему же выбрано CNN+GRU, а не просто GRU или CNN?

Нейросеть состоит из 3-х основных частей(CNN, GRU, Linear). Давайте рассмотрим каждую часть сети, чтобы понять, для чего они.

Архитектура нейронной сети
Архитектура нейронной сети
Гиперпараметры

(conv1): Conv1d(300, 512, kernel_size=(5,), stride=(1,), padding=(2,))

(conv2): Conv1d(512, 1024, kernel_size=(3,), stride=(1,), padding=(1,))

(conv3): Conv1d(1024, 2048, kernel_size=(5,), stride=(1,), padding=(2,))

(gru): GRU(2048, 512, batch_first=True)        

(fc1): Linear(in_features=512, out_features=256, bias=True)

(fc2): Linear(in_features=256, out_features=2, bias=True)

CNN – Convolution Neural Network

Обычно свёрточные слои используют для классификации изображений. Как и в классификации картинок, свёрточный слой выделяет “признаки”, но в нашем случае векторизированный текст. То-есть данная часть сети учится выделять признаки токсичных и позитивных сообщений.

GRU - Recurrent Neural Network

Текст – это последовательность слов или, в нашем случае, векторов, которую свёрточный слой обработал и выделил признаки. Чтобы обрабатывать последовательности произвольной длины, используют рекуррентные слои. В архитектуре используется рекуррентный слой GRU.

Linear – линейный слой

Данный слой учится делать заключительное решение по определению тональности текста на основе предыдущих слоями.

Об обучение нейросети и результатов

Подготовка данных

Для обучения нейросети нужен датасет. Датасет был взят с сайта kaggle. Около 14000 комментариев  с разметкой токсичное сообщение или нет. Но данный датасет имеет изъян – орфографические ошибки. Для решения данной проблемы была использована библиотека Yandex Speller, которая исправляет орфографические ошибки.

Дальше надо превратить текст в числа, т.к нейросети только с ними и работают.  Можно было обучить собственный Word2Vec на основе данного набора данных, но лучше взять уже обученный. Например: Navec. Модель обучали на русской литературе (~150gb), что говорит о более качественной векторизации текста.

Также надо разделить датасет на тренировочную и тестовую выборки.

Обучение нейросети

Для классификации используется обыкновенная функция потерь – кросс энтропия.

При обучении сети надо обращать внимание на основные параметры такие, как loss, precision и accuracy. Всего сеть пройдёт 5 эпох, т.к начиная с 5-ой эпохи нейронная сеть начинает переобучаться.

Результаты

После обучения сети мы имеем вот такие результаты на тестовой выборке:

loss

accuracy

precision

0.362

0.857

0.92

График точности
График точности
График loss функции
График loss функции

Вывод

Результаты обучения вполне хорошие, но хочется добиться результата получше, т.к на практике модель всё-таки ошибается, но не часто. В ~80% случаев нейросеть классифицирует тональность текста правильно.

Ссылки

Телеграм бот

Репозиторий проекта

Прошлая статья

Источник: https://habr.com/ru/post/652447/


Интересные статьи

Интересные статьи

Картинка для устрашения привлечения вниманияВ конце прошлого года искусственный интеллект ворвался в наше сознание интригующей статьёй с неожиданным финалом, где говорило...
На фоне борьбы за первенство мессенджеров, особенно в последнее время когда Whats Up так скомпрометировал себя, Телеграм стал заявлять себя как единственный независимый и...
С недавнего времени к нам начало поступать много ошибочных звонков. Люди звонили и хотели заказать такси, купить что-то в Озоне, спрашивали Почту России и прочие услуги, ...
В обновлении «Сидней» Битрикс выпустил новый продукт в составе Битрикс24: магазины. Теперь в любом портале можно создать не только лендинг или многостраничный сайт, но даже интернет-магазин. С корзино...
Всем привет! В современном мире крайне важна возможность масштабировать приложение по щелчку пальцев, ведь нагрузка на приложение может сильно отличаться в разное время. Наплыв клиентов, которы...