spam-detector/README.md
2024-11-02 21:51:09 +03:00

3.5 KiB
Raw Blame History

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 р/сут переобучивает модель