Что меня побудило - это делать?
Есть известная проблема с токсичными людьми в чатах. У модераторов чатов не всегда получается отслеживать и банить токсичных людей, хотелось бы автоматизировать процесс.Стек проекта
Весь проект будет писаться на python, с использованием библиотек pytorch и pyTeleramBotApi.Разделение проекта на этапы
Я разделил проект на 3 этапа.1 этап - написать телеграм-бота, который ведёт статистику о токсичности пользователей, написать определение токсичности по простейшим правилам.
2 этап - найти датасет с токсичными комментариями, выбрать архитектуру нейросети, написать нейросеть, обучить нейросеть.
3 этап - отладить телеграм бота в большом чате.
1 Этап - написание бота
Сначала я написал обычного телеграм бота, который собирает и выводит статистику, и уведомляет админа чата о токсичных пользователях, если их рейтинг < -5. На первом этапе для определение токсичных предложений я решил использовать поиск матерных слов.![Пример вывод статистики Пример вывод статистики](https://habrastorage.org/r/w1560/getpro/habr/upload_files/7cd/1ee/d86/7cd1eed861cc70cee712d11a3607cfa1.png)
Пример вывод статистики
![Пример уведомления Пример уведомления](https://habrastorage.org/r/w1560/getpro/habr/upload_files/437/e58/fee/437e58fee2b3bc39811d3e4f0d32a839.png)
Пример уведомления
2 Этап - написание и обучение нейросети
Перед тем, как начать писать и обучать нейросеть, я нашёл датасет на kaggle с токсичными комментариями. В датасете около 14000 сообщений и 2 класса(токсичный, позитивный)Следующий шаг. Надо выбрать архитектуру нейросети. Я остановился на CNN + GRU.
![Архитектура нейросети Архитектура нейросети](https://habrastorage.org/r/w1560/getpro/habr/upload_files/1af/6d9/236/1af6d923676246d841c17ca02c68ed5b.png)
Архитектура нейросети
Дальше я поставил нейросеть обучаться на 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 дней у бота были обнаружены не большие баги, которые были исправлены.Итог
![Пример обработки сообщений Пример обработки сообщений](https://habrastorage.org/r/w1560/getpro/habr/upload_files/1ef/eff/237/1efeff237f2fe8ca7ff10da03ea4331f.png)
Пример обработки сообщений
Бот более-менее справляется со своей задачей, но иногда нормальное сообщение определяет, как токсичное. Эта проблема решается, нахождением датасета побольше и усложнением архитектуры нейросети, но при усложнении архитектуры ресурсов Google Colab`а может не хватить.
Ссылки
Репозиторий проекта![habr.com](https://habrastorage.org/getpro/habr/upload_files/41a/9c7/a4c/41a9c7a4c960c03922909e8298edb60c.png)
AntiToxic Bot — бот, распознающий токсичных пользователей в телеграм чатах
Что меня побудило это делать? Есть известная проблема с токсичными людьми в чатах. У модераторов чатов не всегда получается отслеживать и банить токсичных людей, хотелось бы автоматизировать процесс....
![habr.com](https://assets.habr.com/habr-web/img/favicons/favicon-16.png)