125 lines
3.9 KiB
Markdown
125 lines
3.9 KiB
Markdown
# 🧠 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 ✅
|
||
|
||
|
||
|