Instructions to use martin0925/council-voting with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use martin0925/council-voting with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="martin0925/council-voting")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("martin0925/council-voting") model = AutoModelForSequenceClassification.from_pretrained("martin0925/council-voting", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Klasifikátor tematických oblastí bodů programu zastupitelstev
Fine-tunovaná RobeCzech pro multi-label klasifikaci bodů programu zastupitelstev českých měst do 17 tematických oblastí.
Korpus, ruční anotace, kontrolní sady a interaktivní demo jsou v doprovodném Space. Data jsou pod CC BY 4.0, tedy otevřená — nekomerční omezení níže se týká jen vah tohoto modelu.
K čemu to je
Česká města zveřejňují materiály ze zasedání zastupitelstev bez struktury a bez tematických štítků, takže na otázku přesahující jeden dokument se z nich odpovědět nedá. Model přiřazuje bodu programu oblasti, kterých se věcně týká, a tím je zpřístupní pro dotazy a analýzu.
Je určen pro výzkum a analýzu otevřených dat. Výstupy jsou analytické odhady dědící chyby modelu — nejsou autoritativním záznamem toho, čím se zastupitelstvo zabývalo, a nehodí se jako podklad pro rozhodnutí o konkrétních osobách.
Použití
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
MODEL = "martin0925/council-voting"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForSequenceClassification.from_pretrained(MODEL).eval()
title = "Návrh prodeje pozemku p.č. 441/29 v k.ú. Třebeš"
annotation = "Zastupitelstvo schvaluje prodej pozemku o výměře 312 m2…"
enc = tok(f"{title}\n\n{annotation}", truncation=True, max_length=512,
return_tensors="pt")
with torch.no_grad():
probs = torch.sigmoid(model(**enc).logits)[0]
for i, p in enumerate(probs):
if p >= 0.65: # globální práh, viz níže
print(f"{model.config.id2label[i]:32s} {p:.3f}")
Vstup je název bodu + "\n\n" + anotace a nic jiného. Návrh usnesení ani
důvodová zpráva se nepoužívají, protože při inferenci nejsou napříč městy
spolehlivě k dispozici.
Prahy
inference_config.json nese dvě varianty:
per_class_thresholds— výchozí pro nasazení, ladené na validačním splitu, rozsah 0,3–0,85 podle třídythreshold: 0.65— jediný globální práh; všechna čísla níže používají tento, aby srovnání napříč modely, systémy a městy stálo na jednom rozhodovacím pravidle
Bod, u něhož žádná třída práh nepřesáhne, je veden jako nezařazený.
nezarazeno není třída modelu.
Třídy
majetek · doprava · finance_rozpocet · skolstvi · sport ·
kultura_cestovni_ruch · zivotni_prostredi · socialni_oblast ·
zdravotnictvi · bydleni · bezpecnost · komunalni_sluzby ·
uzemni_planovani · rozvoj_verejneho_prostranstvi · informacni_technologie ·
mezinarodni_spoluprace · legislativa_vnitrni_predpisy
Bod má typicky 1–3 oblasti. finance_rozpocet a majetek se přidávají
i tam, kde je hlavní téma jiné, pokud je finanční mechanismus nebo majetková
dispozice věcným obsahem bodu.
Trénování
| Data | 2 113 ručně anotovaných bodů Zastupitelstva města Brna |
| Split | 1 685 / 215 / 213, iterativní stratifikace nad množinami štítků |
| Epochy | 18, nejlepší checkpoint v epoše 15 podle validačního micro F1 |
| Optimalizátor | AdamW, lr 2e-5, weight decay 0,01, linear decay po 10 % warmupu |
| Loss | binary cross-entropy, pos_weight = inverzní frekvence štítků |
| Batch | 16, dynamický padding, max_length 512 |
| Seed | 42 |
Výsledky
In-domain (Brno, test $n=213$), globální práh 0,65:
| metrika | hodnota |
|---|---|
| micro F1 | 0,903 |
| macro F1 | 0,893 |
| precision | 0,881 |
| recall | 0,926 |
95% bootstrapový interval na micro F1 je ±2,8 bodu (10 000 resamplů).
S per-class prahy vychází micro F1 0,896. Šestnáct ze sedmnácti tříd je nad
0,80; nejslabší je informacni_technologie s pěti pozitivy v testu (F1 0,600).
Přenos na města mimo trénink, proti slepě anotovaným gold setům:
| $n$ | micro F1 (95 % CI) | macro | P | R | |
|---|---|---|---|---|---|
| Brno (in-domain) | 213 | 0,903 [0,874 – 0,930] | 0,893 | 0,881 | 0,926 |
| Hradec Králové | 93 | 0,820 [0,768 – 0,868] | 0,837 | 0,857 | 0,786 |
| Most | 100 | 0,784 [0,725 – 0,839] | 0,728 | 0,781 | 0,786 |
Srovnání s jinými přístupy na týchž 213 položkách a týchž gold štítcích:
| systém | micro F1 | cena / 1 000 položek |
|---|---|---|
| TF-IDF + logistická regrese | 0,812 | 0 |
| TF-IDF + LinearSVC | 0,861 | 0 |
| Qwen2.5 7B, lokálně | 0,760 | 0 |
| Gemini 2.5 Flash-Lite | 0,824 | $0,18 |
| Claude Haiku 4.5 | 0,847 | $2,01 |
| Claude Sonnet 5 | 0,888 | $1,18 |
| RobeCzech (tento model) | 0,903 | 0 |
Rozdíl proti Sonnetu je +0,016, CI [−0,014, +0,044] — data ho nerozliší.
Proti oběma levnějším komerčním modelům a proti otevřenému modelu je rozdíl
významný. Per-item výstupy všech běhů jsou v
data/eval/llm_runs/.
Omezení
- Trénováno na jediném městě. Brno je po Praze největší zastupitelstvo v zemi; na menších obcích ani na jiných systémech správy dokumentů model takhle neuvidíte. Výkon mimo Brno klesá o 8–12 bodů.
- Hlavní chyba v přenosu je
finance_rozpocet— recall padá z 0,90 v Brně na 0,733 (HK) a 0,711 (Most). Hranice té třídy je napříč městy vedená jinak. - Žánr vstupu. Model je trénován na popisné anotaci psané před zasedáním. Na textu usnesení, který má jiný registr, se spíš zdrží odpovědi — v Mostu nevrátil žádný štítek u 14 ze 100 položek.
- Taxonomie má měkké hranice. Při kontrolní studii na 50 položkách se čtyři anotátoři shodli na Krippendorffově α 0,511 (MASI) a 0,594 (Jaccard); po třídách od 0,24 u dopravy do 0,78 u školství. To je strop toho, co tu může jakýkoli klasifikátor dosáhnout.
- Jen čeština a jen bod programu zastupitelstva. Na jiné správní dokumenty nebyl testován.
Licence a citace
Váhy jsou pod CC BY-NC-SA 4.0, protože základní model
ufal/robeczech-base je pod ní
a klauzule ShareAlike nedovoluje ji zvolnit. Nekomerční použití při uvedení
zdroje a zachování licence; komerční vyžaduje předchozí písemný souhlas autora.
Data v doprovodném Space jsou naopak pod CC BY 4.0, tedy použitelná i komerčně. Omezení výše platí pro tyto váhy, ne pro korpus — kdo si na těch datech natrénuje model z jiného základu, není jím vázán.
@misc{janecek2026councilvoting,
author = {Jane{\v c}ek, Martin},
title = {Klasifik{\'a}tor tematick{\'y}ch oblast{\'i} bod{\r u} programu
zastupitelstev},
year = {2026},
url = {https://huggingface.co/martin0925/council-voting}
}
Kontakt: Martin Janeček, xjanec31@vutbr.cz
- Downloads last month
- 23
Model tree for martin0925/council-voting
Base model
ufal/robeczech-base