Что меня побудило - это делать?
Есть известная проблема с токсичными людьми в чатах. У модераторов чатов не всегда получается отслеживать и банить токсичных людей, хотелось бы автоматизировать процесс.Стек проекта
Весь проект будет писаться на python, с использованием библиотек pytorch и pyTeleramBotApi.Разделение проекта на этапы
Я разделил проект на 3 этапа.1 этап - написать телеграм-бота, который ведёт статистику о токсичности пользователей, написать определение токсичности по простейшим правилам.
2 этап - найти датасет с токсичными комментариями, выбрать архитектуру нейросети, написать нейросеть, обучить нейросеть.
3 этап - отладить телеграм бота в большом чате.
1 Этап - написание бота
Сначала я написал обычного телеграм бота, который собирает и выводит статистику, и уведомляет админа чата о токсичных пользователях, если их рейтинг < -5. На первом этапе для определение токсичных предложений я решил использовать поиск матерных слов.Пример вывод статистики
Пример уведомления
2 Этап - написание и обучение нейросети
Перед тем, как начать писать и обучать нейросеть, я нашёл датасет на kaggle с токсичными комментариями. В датасете около 14000 сообщений и 2 класса(токсичный, позитивный)Следующий шаг. Надо выбрать архитектуру нейросети. Я остановился на CNN + GRU.
Архитектура нейросети
Дальше я поставил нейросеть обучаться на Google Colab`e. Нейросеть обучилась за 30-45 минут.
После обучения нейросети я построил табличку, где показано как справились други варианты классификации токсичных сообщений.
Имя | accuracy | precision | recall |
CNN+GRU | 0.9 | 0.9 | 0.85 |
CatBoost | 0.86 | 0.75 | 0.83 |
Rules (проверка на матные лова) | 0.66 | 0.69 | 0.53 |
3 этап - отладка проекта
Я запустил своего телеграм бота в чат с 65 людей. В течение 3 дней у бота были обнаружены не большие баги, которые были исправлены.Итог
Пример обработки сообщений
Бот более-менее справляется со своей задачей, но иногда нормальное сообщение определяет, как токсичное. Эта проблема решается, нахождением датасета побольше и усложнением архитектуры нейросети, но при усложнении архитектуры ресурсов Google Colab`а может не хватить.
Ссылки
Репозиторий проектаAntiToxic Bot — бот, распознающий токсичных пользователей в телеграм чатах
Что меня побудило это делать? Есть известная проблема с токсичными людьми в чатах. У модераторов чатов не всегда получается отслеживать и банить токсичных людей, хотелось бы автоматизировать процесс....
habr.com