arlo-score / README.md
joranvnbeekAI's picture
Documenteer meertalige werking
e2bec46 verified
|
Raw History Blame Contribute Delete
5.55 kB
---
language: nl
license: mit
base_model: microsoft/mdeberta-v3-base
pipeline_tag: text-classification
tags:
- text-classification
- regression
- scoring
- dutch
- nederlands
- multilingual
---
# Arlo Score 1.0
**Arlo** is een Nederlandse modelfamilie voor snelle, getypeerde beslissingen.
Waar een taalmodel tekst genereert die je daarna moet interpreteren, geeft Arlo
direct een waarde terug waar software mee kan werken — altijd met een confidence
score.
Dit model dekt het **Score**-primitief: tekst beoordelen tegen een rubric en
daar een getal tussen 0 en 1 voor teruggeven.
## Arlo in actie
<video controls loop muted playsinline src="https://huggingface.co/NoaberAI/arlo-score/resolve/main/demo.mp4"></video>
## Wat dit model onderscheidt
Het rubric geef je pas op het moment van gebruik mee. Hetzelfde model scoort
klanttevredenheid, kwaliteit van dienstverlening of semantische gelijkenis —
afhankelijk van het criterium dat je meestuurt. Je hoeft niet per maatstaf een
apart model te trainen.
Daarnaast voorspelt het model naast de score ook zijn eigen onzekerheid. Die
komt niet uit een truc achteraf, maar uit de training zelf: het model is
getraind met heteroscedastic regressie, waarbij het per voorbeeld zowel de
waarde als de spreiding leert. Een lage confidence betekent dus echt dat het
model twijfelt — bruikbaar om te bepalen wat automatisch door kan en wat naar
een mens moet.
## Gebruik
```python
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("NoaberAI/arlo-score", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("NoaberAI/arlo-score")
model.score(tokenizer,
"Geweldige service, binnen een dag alles geregeld.",
"klanttevredenheid (0-1)")
# {"score": 0.86, "confidence": 1.00}
```
## Voorbeelden
```python
model.score(tokenizer,
"Vriendelijke bediening, eten kwam snel, prima ervaring.",
"algemene tevredenheid over het restaurantbezoek (0-1)")
# {"score": 0.81, "confidence": 0.99}
model.score(tokenizer,
"De trein naar Amsterdam vertrekt om 14:32 uur.",
'semantische gelijkenis (0-1) met: "Om 14:32 vertrekt de trein richting Amsterdam."')
# {"score": 0.97, "confidence": 1.00}
```
## Een goed rubric schrijven
De kwaliteit van de score hangt af van hoe concreet je het criterium
formuleert. Geef het schaaluiteinden en een situationele betekenis:
```python
# scherp
"klanttevredenheid op schaal 0-1, waarbij 0 = zeer ontevreden en 1 = zeer tevreden"
# vaag
"hoe goed is dit"
```
Heeft een beoordeling meerdere onafhankelijke aspecten, splits die dan op in
losse vragen en combineer de uitkomsten zelf — dat levert scherpere en beter
uitlegbare scores op dan één samengesteld oordeel.
## Ook op andere talen
Het model is op Nederlands getraind, maar de backbone (`mdeberta-v3-base`) is
multilingual en dat blijft merkbaar. Hetzelfde rubric — in het Nederlands —
werkt op anderstalige tekst:
```python
rubric = "klanttevredenheid (0-1)"
model.score(tok, "Geweldige service, binnen een dag alles geregeld.", rubric)
# {"score": 0.86, "confidence": 1.00}
model.score(tok, "Excellent service, everything sorted within a day.", rubric)
# {"score": 0.83, "confidence": 0.99}
model.score(tok, "Ausgezeichneter Service, alles innerhalb eines Tages geregelt.", rubric)
# {"score": 0.85, "confidence": 0.99}
```
Je hoeft je rubric dus niet per taal te herschrijven.
## De Arlo-familie
Arlo bestaat uit drie modellen die samen een complete laag vormen voor
gestructureerde beslissingen. Ze delen dezelfde backbone-architectuur en
hetzelfde output-contract — een waarde plus een confidence — en zijn
onafhankelijk of gecombineerd te gebruiken.
| Model | Primitieven | Waarvoor |
|---|---|---|
| [arlo-classify](https://huggingface.co/NoaberAI/arlo-classify) | Choice, Noul | categoriseren, routeren, waarheidsvragen |
| **[arlo-score](https://huggingface.co/NoaberAI/arlo-score)** | Score | numeriek beoordelen tegen een rubric |
| [arlo-extract](https://huggingface.co/NoaberAI/arlo-extract) | Extraction | getypeerde velden uit tekst halen |
Score is de natuurlijke aanvulling op de andere twee: `arlo-classify` bepaalt
wáár iets over gaat, `arlo-extract` haalt de feiten eruit, en `arlo-score` geeft
er een maat aan. Samen leveren ze uit één stuk vrije tekst een compleet
gestructureerd record op — label, velden én beoordeling.
```python
tekst = "Vriendelijke bediening, eten kwam snel, prima ervaring."
classify.choice(tokenizer_c, tekst, ["compliment", "klacht", "vraag"])
# [{"label": "compliment", "confidence": 0.62}, ...]
classify.noul(tokenizer_c, tekst, "De klant is tevreden.")
# {"truth": 0.93}
score.score(tokenizer_s, tekst, "algemene tevredenheid over het restaurantbezoek (0-1)")
# {"score": 0.81, "confidence": 0.99}
```
## Technische details
- **Backbone**: `microsoft/mdeberta-v3-base` (~280M parameters)
- **Kop**: regressie met twee outputs — voorspelde waarde en voorspelde
log-variantie (heteroscedastic regressie, Gaussian NLL-loss)
- **Taal**: Nederlands
- **Trainingsdata**: Nederlandstalige data uit meerdere domeinen —
productbeoordelingen, servicekwaliteit en semantische gelijkenis — zodat het
model rubric-beoordeling in brede zin leert in plaats van alleen sentiment
- **Hardware**: getraind op een NVIDIA A100
- **Licentie**: MIT
Gemaakt door [NoaberAI](https://huggingface.co/NoaberAI).