Spam detecting software
.idea | ||
docs | ||
lib | ||
src | ||
.gitignore | ||
before-build.sh | ||
docker-compose.yaml | ||
Dockerfile | ||
pyproject.toml | ||
README.md | ||
requirements.txt | ||
spam.csv | ||
version |
Spam Detector
ПО для борьбы со спамом
Компоненты
Диаграмма компонентов
Dataset
- необходим первоначальный датасет (ham/spam) в формате CSV
Model
- использует датасет
- модели генерируются https://pypi.org/project/spam-detector-ai/
- naive_bayes_model.joblib
- random_forest_model.joblib
- svm_model.joblib
- logistic_regression_model.joblib
- xgb_model.joblib
Decision Maker
- компонент, который принимает решения
- представлен в виде Web-сервера
- реализует API
- POST
/check-spam
- открытый для пользователей- auth: none
- request
- body `{ "text": "SOME TEXT" }
- response
- status code 200
- body
{ "is_spam": true }
- POST
/update-model
- служебный, добавляет текст в датасет- auth: TOKEN
- request
- body:
{ "text": "SOME TEXT", "is_spam": true }
- body:
- response
- status code 200
- body
{ "status": "OK" }
- POST
/restart
- служебный, перезапускает данный компонент- auth: TOKEN
- request
- body: none
- response
- status code 200
- body
{ "status": "OK" }
- POST
Sequence diagram
Model Updater
- добавляет в датасет новые тексты из базы дообучения
- запускается по графику, выполняет
- сделать бэкап модели
- запустить дообучение
- при успешном результате дообучения
- вызывает POST
/restart
компонента Decision Maker
- вызывает POST
Transport
- используется Rabbit MQ
Use cases
Телеграм-бот
- приходит сообщение в группу в телегу
- бот его читает (не входит в данный комплекс)
- отправляет на проверку
- получает результат: спам/не спам
- если спам - бот удаляет сообщение
На почте
- та же схема, только должен быть работающий клиент почты, который читает каждое сообщение, и если обнаружился спам, то помечать его спамом (помещать в категорию спам)
Дообучение с учителем
Сбор доп.текстов через Телеграм
- владелец бота в телеге встречает сообщение, которое является спамом, но не было удалено
- это сообщение отправляется в ТГ бот спам-определителя (не реализовано)
- сообщение помещается в базу для дообучения
Сбор доп.текстов через почту
- спам-письмо можно отправить на почту, которую читает бот (не реализовано)
- бот кладет текст письма в базу дообучения
Дообучение
- 1 р/сут происходит вычитывание всех сообщений из базы дообучения за день
- если в базе дообучения за день что-то есть, то
- датасет обновляется
- запускается процесс дообучения
- перезапускается модель