Фон
Существует известная проблема с токсичными людьми в чатах.В прошлой статье мало было уделено архитектуре нейросети.Модераторы чатов не всегда могут отследить и забанить токсичных людей; Я хотел бы автоматизировать процесс.
Цель этой статьи — рассказать подробнее об архитектуре сети и ее компонентах, которые бот использует для выявления токсичных сообщений.
Если вы не читали предыдущую статья , пожалуйста прочти.
Об архитектуре.
Архитектура нейронной сети CNN + GRU. Почему был выбран CNN+GRU, а не просто GRU или CNN? Нейронная сеть состоит из 3-х основных частей (CNN, GRU, Linear).
Давайте посмотрим на каждую часть сети, чтобы понять, что они делают.
Архитектура нейронной сетиГиперпараметры (conv1): Conv1d(300, 512, kernel_size=(5,), шаг=(1), заполнение=(2)) (conv2): Conv1d(512, 1024, kernel_size=(3,), шаг=(1,), заполнение=(1,)) (conv3): Conv1d(1024, 2048, kernel_size=(5,), шаг=(1), заполнение=(2)) (гру): ГРУ (2048, 512, пакет_первый=Истина) (fc1): Линейный (in_features=512, out_features=256, смещение=True) (fc2): Линейный (in_features=256, out_features=2, смещение=True)
CNN — нейронная сеть свертки
Обычно сверточные слои используется для классификации изображений.Как и при классификации изображений, сверточный слой извлекает «особенности», но в нашем случае — векторизованный текст. То есть эта часть сети учится распознавать признаки токсичных и позитивных сообщений.
ГРУ — Рекуррентная нейронная сеть
Текст — это последовательность слов или, в нашем случае, векторов, которые сверточный слой обработал и извлек из них признаки.Для обработки последовательностей произвольной длины используйте повторяющиеся слои .
В архитектуре используется рекуррентный уровень.
ГРУ .
Линейный – линейный слой
Этот слой учится принимать окончательное решение по определению тона текста на основе предыдущих слоев.
Об обучении нейронной сети и результатах
Подготовка данных
Чтобы обучить нейронную сеть, вам нужен набор данных.Датасет взят с сайта болтать .
Около 14 000 комментариев отметили, является ли сообщение токсичным или нет. Но у этого набора данных есть недостаток — орфографические ошибки.
Для решения этой проблемы была использована библиотека Yandex Speller, исправляющая орфографические ошибки.
Далее нужно превратить текст в числа, потому что нейронные сети работают только с ними.
Вы могли бы тренировать свои собственные Word2Vec на основе этого набора данных, но лучше взять уже обученный.
Например: Навек .
Модель обучалась на русской литературе (~150Гб), что говорит о качественной векторизации текста.
Вам также необходимо разделить набор данных на обучающую и тестовую выборки.
Обучение нейронной сети
Для классификации используется обычная функция потерь – перекрестная энтропия .При обучении сети необходимо обращать внимание на основные параметры, такие как потери, точность И точность .
Всего сеть пройдет 5 эпох, потому что начиная с 5-й эпохи нейросеть начинает переобучаться.
Результаты
После обучения сети на тестовом наборе мы имеем следующие результаты:потеря | точность | точность |
0.362 | 0.857 | 0.92 |
Диаграмма точности
График функции потерь
Заключение
Результаты обучения неплохие, но хочется добиться лучших результатов, потому что на практике модель все равно допускает ошибки, но не часто.В ~80% случаев нейронная сеть правильно классифицирует тональность текста.
Ссылки
Телеграм-бот Репозиторий проекта Предыдущая статья Теги: #python #машинное обучение #обработка естественного языка #классификация #нейронная сеть #проект #токсичные сообщения-
Не Обновляйте Операционные Системы!
19 Oct, 24 -
Вебкам-Чат
19 Oct, 24 -
Баг В Ntfs, Или Как Заморозить Всю Систему
19 Oct, 24 -
Инвестиционный Жир Мешает Хорошему Стартапу
19 Oct, 24 -
Предполагаемый Автор Spyeye Арестован В Сша
19 Oct, 24