AntiToxic Bot — бот, распознающий токсичных пользователей в телеграм чатах

Kate

Administrator
Команда форума

Что меня побудило - это делать?​

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

Стек проекта​

Весь проект будет писаться на python, с использованием библиотек pytorch и pyTeleramBotApi.

Разделение проекта на этапы​

Я разделил проект на 3 этапа.

1 этап - написать телеграм-бота, который ведёт статистику о токсичности пользователей, написать определение токсичности по простейшим правилам.

2 этап - найти датасет с токсичными комментариями, выбрать архитектуру нейросети, написать нейросеть, обучить нейросеть.

3 этап - отладить телеграм бота в большом чате.

1 Этап - написание бота​

Сначала я написал обычного телеграм бота, который собирает и выводит статистику, и уведомляет админа чата о токсичных пользователях, если их рейтинг < -5. На первом этапе для определение токсичных предложений я решил использовать поиск матерных слов.

Пример вывод статистики


Пример вывод статистики
Пример уведомления


Пример уведомления

2 Этап - написание и обучение нейросети​

Перед тем, как начать писать и обучать нейросеть, я нашёл датасет на kaggle с токсичными комментариями. В датасете около 14000 сообщений и 2 класса(токсичный, позитивный)

Следующий шаг. Надо выбрать архитектуру нейросети. Я остановился на CNN + GRU.

Архитектура нейросети


Архитектура нейросети

Дальше я поставил нейросеть обучаться на Google Colab`e. Нейросеть обучилась за 30-45 минут.

После обучения нейросети я построил табличку, где показано как справились други варианты классификации токсичных сообщений.

Имяaccuracyprecisionrecall
CNN+GRU0.90.90.85
CatBoost0.860.750.83
Rules (проверка на матные лова)0.660.690.53
Осталось, только интегрировать нейросеть в бота.

3 этап - отладка проекта​

Я запустил своего телеграм бота в чат с 65 людей. В течение 3 дней у бота были обнаружены не большие баги, которые были исправлены.

Итог​

Пример обработки сообщений


Пример обработки сообщений

Бот более-менее справляется со своей задачей, но иногда нормальное сообщение определяет, как токсичное. Эта проблема решается, нахождением датасета побольше и усложнением архитектуры нейросети, но при усложнении архитектуры ресурсов Google Colab`а может не хватить.

Ссылки​

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

 
Сверху