Požari SDŽ

Za znatiželjne · nije nužno za pokretanje

Obilazak koda

Prolazak kroz svaku datoteku koda u projektu, običnim jezikom. Ako želiš samo pokrenuti stvari, dovoljna je stranica Kako pokrenuti — ovdje je „ispod haube".

1. Mini-rječnik koda (za čitanje snippeta)

Kod je pisan u Pythonu. Nekoliko pojmova dovoljno je da razumiješ isječke ispod:

U kodu pišeZnači
# neštoKomentar — poruka za čovjeka; računalo ga preskače.
import pandas„Učitaj alat" (paket) koji ćemo koristiti.
x = 5Varijabla — spremljena vrijednost pod imenom x.
def ime(...):Funkcija — imenovani „recept" koji nešto obavi kad ga pozoveš.
for r in lista:Petlja — ponovi isti posao za svaki element u listi.
if uvjet:Uvjet — napravi nešto samo ako je istina.
DataFrameTablica u memoriji (kao list u Excelu), iz alata pandas.

2. Struktura projekta

Ovako je posložena glavna mapa C:\GIT\selena:

selena\
├─ dokumentacija\            ← OVE web-stranice (upute)
├─ doprinos1_geolokacija\    ← NAŠ novi kod (regex vs LLM)
│  ├─ putanje.py             ← sve putanje do podataka
│  ├─ geolokator_regex.py    ← regex geolokator (mjesto + vrijeme)
│  ├─ napravi_gold_set.py    ← pravi Excel za označavanje
│  └─ rezultati\             ← izlazi (gold_set_...xlsx)
├─ splitech\                 ← podaci + stari notebookovi (analiza)
├─ vatrogasci\               ← podaci + karta naselja (.shp)
├─ .venv\                    ← Python okruženje (ne dirati ručno)
├─ requirements.txt          ← popis potrebnih paketa
├─ provjera_okruzenja.py     ← provjeri da sve radi
├─ pokreni_jupyter.bat       ← dupli klik = pokreni Jupyter
└─ otvori_upute.bat          ← dupli klik = otvori ovu dokumentaciju

3. Kod okruženja (postavljanje)

requirements.txt — popis alata

Obična lista paketa koje projekt treba. Naredba pip install -r requirements.txt ih sve instalira odjednom:

pandas          # rad s tablicama
geopandas       # rad s kartama (shapefile)
scikit-learn    # statistika, normalizacija
prophet         # predviđanje vremenskih nizova
regex           # napredni regularni izrazi
# anthropic     # (kasnije) LLM za Doprinos 1

provjera_okruzenja.py — je li sve spremno?

Skripta koja redom pokuša učitati svaki paket i pročitati jednu tablicu i jednu kartu. Srce je jednostavna petlja:

paketi = ["pandas", "numpy", "geopandas", "prophet", ...]
for ime in paketi:
    try:
        modul = __import__(ime)          # pokušaj učitati paket
        print("OK ", ime, modul.__version__)
    except Exception:
        print("XX ", ime, "NEDOSTAJE")   # ako ne uspije, javi

Na kraju pročita kartu naselja da potvrdi da i to radi:

import geopandas as gpd
gdf = gpd.read_file("vatrogasci/CROATIA_HR_Naselja_ADMIN3.shp")
print(len(gdf), "naselja")   # ispiše: 6758 naselja

Ako skripta na kraju ispiše „SVE RADI", okruženje je ispravno postavljeno.

Pomoćne .bat datoteke — dupli klik

Da osoba ne mora pisati naredbe, dvije male datoteke rade to umjesto nje. pokreni_jupyter.bat sadrži:

cd /d "%~dp0"                        <- uđi u mapu gdje je ova datoteka
call ".venv\Scripts\activate.bat"    <- uključi Python okruženje
jupyter notebook                     <- pokreni Jupyter

otvori_upute.bat je još jednostavniji — samo otvori ovu dokumentaciju u pregledniku:

start "" "%~dp0dokumentacija\index.html"

4. Kod geolokacije

putanje.py — gdje su podaci

Stari kod (Google Colab) imao je putanje poput /content/drive/MyDrive/... koje ovdje ne rade. Zato su sve putanje na jednom mjestu i računaju se automatski od mape projekta:

from pathlib import Path

# KORIJEN = glavna mapa projekta (dva nivoa iznad ove datoteke)
KORIJEN = Path(__file__).resolve().parent.parent

NASELJA_SHP = KORIJEN / "vatrogasci" / "CROATIA_HR_Naselja_ADMIN3.shp"
HVZ_CSV     = KORIJEN / "splitech"   / "posts_hvz2022.csv"

Zašto je ovo dobro: ako se cijela mapa premjesti na drugo računalo, putanje i dalje rade — ništa se ne mora ručno mijenjati.

geolokator_regex.py — glavni algoritam

Ovo je „mozak" regex pristupa (izvlači mjesto i vrijeme iz teksta). Detaljno je objašnjen, red-po-red, na stranici Doprinos 1 → Regex pristup. Ukratko radi u tri koraka: nađi riječi velikim slovom → usporedi s kartom od 6758 naselja → uzmi najmanje/najsličnije.

5. Kod gold seta

napravi_gold_set.py — priprema Excela za označavanje

Uzme uzorak tekstova, upiše regex prijedloge i sve spremi u lijep Excel. Dva ključna dijela:

Prepoznavanje požarnih objava (jednostavno, po ključnim riječima):

KLJUCNE = ["požar", "vatra", "intervenc", "dim", "teren", ...]

def je_pozar(tekst):
    # vrati True ako tekst sadrži bilo koju ključnu riječ
    return any(k in tekst for k in KLJUCNE)

Nasumični, ali ponovljivi uzorak (uvijek isti zahvaljujući „sjemenu" 42):

hvz = hvz.drop_duplicates(subset=["opis"])     # makni duplikate
uzorak = hvz.sample(n=90, random_state=42)     # nasumično 90 izvješća

Napomena: baš ovaj je_pozar po ključnim riječima lovi i lažne pozitive (nogomet „Vatreni"). To je jedan od razloga zašto uspoređujemo s LLM-om koji razumije kontekst.

6. Naslijeđeni notebookovi (stari rad)

U folderima splitech\ i vatrogasci\ su Jupyter notebookovi (.ipynb) iz ranijeg rada. Oni sadrže izvornu analizu (statistika, korelacije, predviđanje), ali su pisani na Google Colabu, pa im putanje počinju s /content/drive/....

Ti stari notebookovi neće raditi „iz prve" dok se putanje ne prilagode lokalnima. Njihov koristan kod postupno prebacujemo u čiste, komentirane .py module (kao geolokator_regex.py). Za pregled što koji notebook radi vidi Mapu projekta.

Svaka .py datoteka i iznutra je bogato komentirana na hrvatskom — otvori je u bilo kojem uređivaču teksta ako želiš vidjeti puni kod.