zkt25/sk1/README.md

125 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧠 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.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](https://railway.app)
- 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](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](https://hate-backend-production.up.railway.app/api/history)
### Lokálne spustenie
**Požiadavky:**
- OS: Linux/macOS alebo WSL
- Docker + Docker Compose
```bash
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`](https://huggingface.co/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`](https://huggingface.co/datasets/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 ✅