zkt25/sk1/README.md

4.1 KiB
Raw Blame History

🧠 Detekcia nenávistnej reči

Webová aplikácia na klasifikáciu textov a detekciu nenávistnej alebo toxickej reči. Projekt bol vytvorený ako súčasť zadania na skúšku a spĺňa všetky požiadavky vrátane cloud nasadenia, API rozhrania a perzistentného ukladania výsledkov.


Čo aplikácia robí

  • Umožňuje používateľovi zadať text cez frontend (React)
  • Text sa odosiela na backend (Flask API), kde je analyzovaný pomocou ML modelu
  • Výsledok predikcie („Pravdepodobne toxický“ alebo „Neutrálny text“) sa zobrazí používateľovi
  • Každá požiadavka sa uloží do history.json spolu s časovou pečiatkou
  • Endpoint /api/history vracia históriu predikcií vo formáte JSON

Použité technológie

Cloud infraštruktúra Railway

  • Automatizované nasadenie z GitHub
  • Predkonfigurovaný HTTPS a verejná doména
  • Automatická správa buildov, reštartov a logovania

Docker

  • Backend kontajnerizovaný vlastným Dockerfile (Flask + model)
  • Frontend ako samostatná React služba (build cez Nixpacks alebo Docker)
  • Podpora manuálneho spustenia cez Docker Compose

Lokálna a dočasná perzistencia

  • history.json: lokálna databáza vo forme JSON
  • Uchováva: vstupný text, predikciu a čas
  • Endpoint: GET /api/history

Štruktúra projektu

.
├── backend/
│   ├── app.py              # Flask API endpointy
│   ├── Dockerfile          # Konfigurácia kontajnera pre backend
│   └── history.json        # Perzistencia predikcií
├── frontend/
│   └── vite.config.js      # Railway doménová konfigurácia
├── docker-compose.yaml     # Definuje služby pre frontend a backend
├── prepare-app.sh          # Spustenie Docker kontajnerov
├── remove-app.sh           # Zastavenie a odstránenie kontajnerov
└── README.md               # Dokumentácia projektu

Ako aplikáciu použiť

  1. Otvor frontend:
    https://hate-frontend-production.up.railway.app

  2. Zadaj text do vstupného poľa

  3. Klikni na tlačidlo ✈️

  4. Výsledok sa zobrazí a zároveň uloží do histórie

  5. Históriu si môžeš pozrieť cez:
    https://hate-backend-production.up.railway.app/api/history

Lokálne spustenie

Požiadavky:

  • OS: Linux/macOS alebo WSL
  • Docker + Docker Compose
chmod +x prepare-app.sh start-app.sh stop-app.sh remove-app.sh
./prepare-app.sh    # Build a príprava kontajnerov
./start-app.sh      # Spustenie aplikácie
./stop-app.sh       # Zastavenie aplikácie
./remove-app.sh     # Úplné vyčistenie aplikácie a odstránenie všetkých kontajnerov

API Endpointy

  • POST /api/predict predikcia toxickosti zadaného textu
  • GET /api/history výpis histórie všetkých analyzovaných textov
  • GET /api/history/raw - surový obsah history.json
  • POST /api/history/reset - resetovanie a vyčistenie histórie

Model strojového učenia

  • Názov: tetianamohorian/hate_speech_model
  • Architektúra: vlastný klasifikačný model trénovaný na báze Slovak-T5-base-small.Model bol vlastnoručne fine-tunovaný na binárnu klasifikáciu textov (toxický vs. neutrálny) s použitím dátovej množiny určenenej na detekciu nenávistnej reči TUKE-KEMT/hate_speech_slovak.
  • Typ: Encoder-decoder transformer, finetunovaný na binárnu klasifikáciu (toxický / neutrálny)

Použité knižnice

  • transformers práca s Hugging Face modelmi

  • torch tensorový backend

  • flask API backend

  • flask_cors povolenie CORS

  • flask_caching cache výsledkov

Funkcionality

Projekt demonštruje:

  • Nasadenie do cloudu (Railway)

  • HTTPS certifikát

  • Docker kontajnery pre frontend a backend

  • Ukladanie predikcií (JSON)

  • Automatické reštarty

  • API testovanie

  • Kvalitná dokumentácia