| .. | ||
| backend | ||
| frontend | ||
| docker-compose.yaml | ||
| package-lock.json | ||
| package.json | ||
| prepare-app.sh | ||
| prepare-app.sh.save | ||
| README.md | ||
| remove-app.sh | ||
🧠 Detekcia nenávistnej reči
Webová aplikácia na klasifikáciu textov a detekciu nenávistnej alebo toxickej reči.
Č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.jsonspolu s časovou pečiatkou - Endpoint
/api/historyvracia 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ť
-
Otvor frontend:
https://hate-frontend-production.up.railway.app -
Zadaj text do vstupného poľa
-
Klikni na tlačidlo ✈️
-
Výsledok sa zobrazí a zároveň uloží do histórie
-
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 textuGET /api/history– výpis histórie všetkých analyzovaných textovGET /api/history/raw- surový obsah history.jsonPOST /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 ✅