Spam detecting software
Go to file
2024-11-02 21:51:09 +03:00
.idea updater and web server are separated in two docker containers 2024-11-01 15:19:44 +03:00
docs initial commit 2024-10-29 00:19:26 +03:00
lib updater and web server are separated in two docker containers 2024-11-01 15:19:44 +03:00
src communication is ok 2024-11-02 21:39:44 +03:00
.gitignore updater and web server are separated in two docker containers 2024-11-01 15:19:44 +03:00
before-build.sh updater and web server are separated in two docker containers 2024-11-01 15:19:44 +03:00
docker-compose.yaml communication over rabbitmq 2024-11-01 23:35:45 +03:00
Dockerfile communication over rabbitmq 2024-11-01 23:35:45 +03:00
pyproject.toml communication over rabbitmq 2024-11-01 23:35:45 +03:00
README.md readme updated 2024-11-02 21:51:09 +03:00
requirements.txt communication over rabbitmq 2024-11-01 23:35:45 +03:00
spam.csv communication is ok 2024-11-02 21:39:44 +03:00
version initial commit 2024-10-29 00:17:54 +03:00

Spam Detector

ПО для борьбы со спамом

Компоненты

Диаграмма компонентов

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

Model Updater

  • добавляет в датасет новые тексты из базы дообучения
  • запускается по графику, выполняет
    • сделать бэкап модели
    • запустить дообучение
    • при успешном результате дообучения
      • вызывает POST /restart компонента Decision Maker

Transport

Use cases

Телеграм-бот

  • приходит сообщение в группу в телегу
  • бот его читает (не входит в данный комплекс)
  • отправляет на проверку
  • получает результат: спам/не спам
  • если спам - бот удаляет сообщение

На почте

  • та же схема, только должен быть работающий клиент почты, который читает каждое сообщение, и если обнаружился спам, то помечать его спамом (помещать в категорию спам)

Дообучение с учителем

Сбор доп.текстов через Телеграм

  • владелец бота в телеге встречает сообщение, которое является спамом, но не было удалено
  • это сообщение отправляется в ТГ бот спам-определителя (не реализовано)
  • сообщение помещается в базу для дообучения

Сбор доп.текстов через почту

  • спам-письмо можно отправить на почту, которую читает бот (не реализовано)
  • бот кладет текст письма в базу дообучения

Дообучение

  • читает из RabbitMQ и дописывает в конец dataset CSV
  • 1 р/сут переобучивает модель