spam-detector/README.md

106 lines
3.8 KiB
Markdown
Raw Normal View History

2024-10-29 00:17:54 +03:00
# AntiSpam complex
Комплекс ПО для борьбы со спамом
## Компоненты
### Диаграмма компонентов
![c4model.png](docs/c4model.png)
### 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 }`
- response
- status code 200
- body `{ "status": "OK" }`
- POST `/restart` - служебный, перезапускает данный компонент
- auth: TOKEN
- request
- body: none
- response
- status code 200
- body `{ "status": "OK" }`
#### Sequence diagram
![sequence](docs/sequence.png)
### Model Updater
- добавляет в датасет новые тексты из базы дообучения
- запускается по графику, выполняет
- сделать бэкап модели
- запустить дообучение
- при успешном результате дообучения
- вызывает POST `/restart` компонента Decision Maker
### Transport
- используется [Rabbit MQ](https://rabbitmq.com/)
## Use cases
### Телеграм-бот
- приходит сообщение в группу в телегу
- бот его читает (не входит в данный комплекс)
- отправляет на проверку
- получает результат: спам/не спам
- если спам - бот удаляет сообщение
### На почте
- та же схема, только должен быть работающий клиент почты, который читает каждое сообщение, и если обнаружился спам, то помечать его спамом (помещать в категорию спам)
## Дообучение с учителем
### Сбор доп.текстов через Телеграм
- владелец бота в телеге встречает сообщение, которое является спамом, но не было удалено
- это сообщение отправляется в ТГ бот спам-определителя (не реализовано)
- сообщение помещается в базу для дообучения
### Сбор доп.текстов через почту
- спам-письмо можно отправить на почту, которую читает бот (не реализовано)
- бот кладет текст письма в базу дообучения
### Дообучение
- 1 р/сут происходит вычитывание всех сообщений из базы дообучения за день
- если в базе дообучения за день что-то есть, то
- датасет обновляется
- запускается процесс дообучения
- перезапускается модель