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