Afinabot - бот для сервиса Discord, который позволяет автоматизировать процесс модерации пользовательских сообщений, содержащих обсценную лексику. В основе бота лежат нейросетевые технологии, обрабатывающие последовательности слов и символов.
Датасет формировался из 10 000 наиболее используемых в интернете слов, а также набора нецензурных слов, суммарно набор содержит больше 1500 различных вариантов написания обсценной лексики. Из 10 000 наиболее используемых слов формировались последовательности слов случайной длины, часть из которых содержали нецензурную лексику. Суммарно было сформированно 300 000 различных предложений Для проверки качества работы моделей использовались реальные предложения, содержащие и не содержащие нецензурную лексику На этапе разработки была выдвинута гипотеза: Использование n-грамм вместо цельных слов позволит улучшить качество модели персептрона и позволить обеспечить большую универсальность в обнаружении нецензурной лексики. На основе данной гипотезы персептрон обучались на двух датасетах:
- Набор данных содержит в себе последовательность слов
- Набор данных содержит в себе последовательность 3-грамм
Модель LSTM обучалась на последовательность слов, с предварительным разбиением всех слов на символы
Для решения задачи классификации предложений были реализованы две нейронные сети
- Персептрон (количество обучаемых параметров - 1.5 млн)
- Сеть LSTM (количество обучаемых параметров - 5 млн)
Архитектуры моделей
Все модели обучались 10 эпох
Модель | Представление данных | Точность | Ошибка |
---|---|---|---|
Персептрон | Последовательность слов | 0.97 | 0.07 |
Персептрон | Последовательность 3-грамм | 0.96 | 0.11 |
LSTM | Последовательность символов | 0.99 | 0.006 |
Наилучшие результаты во время обучения показала модель LSTM
Во время тестирования моделей в Discord каналах набольшую стабильность и наилучшее качество работы также показала модель LSTM