Arlo Extract 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 Extraction-primitief: getypeerde velden uit vrije tekst halen. Datums, bedragen, kenmerken, locaties, namen — je stelt per veld een vraag en krijgt de letterlijke waarde uit de tekst terug.

Arlo in actie

Wat dit model onderscheidt

Het model wijst een stuk van de originele tekst aan als antwoord. Het verzint dus niets: wat je terugkrijgt staat er letterlijk, op de positie waar het model het gevonden heeft. En staat het gevraagde veld er niet in, dan zegt het model dat — value is dan None in plaats van een plausibel klinkende gok.

Dat laatste is waar veel extractie-oplossingen op stukloopt. Een ontbrekend veld moet leeg blijven, niet ingevuld worden met het dichtstbijzijnde stukje tekst.

Gebruik

from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("NoaberAI/arlo-extract", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("NoaberAI/arlo-extract")

model.extract(tokenizer,
    "Melding: kapotte straatverlichting aan de Julianalaan ter hoogte van "
    "huisnummer 42, gemeld op 3 september 2026.",
    "Waar is het probleem?")
# {"value": "Julianalaan", "confidence": 1.00}

Meerdere velden tegelijk

model.extract_fields(tokenizer,
    "Factuur 4471 van Bakkerij Jansen, totaalbedrag 47 euro 50, "
    "vervaldatum 15 oktober 2026.",
    {
        "factuurnummer": "Wat is het factuurnummer?",
        "bedrag": "Wat is het totaalbedrag?",
        "vervaldatum": "Wat is de vervaldatum?",
    })
# {"factuurnummer": {"value": "4471",            "confidence": 1.00},
#  "bedrag":        {"value": "47 euro 50",      "confidence": 0.84},
#  "vervaldatum":   {"value": "15 oktober 2026", "confidence": 1.00}}

Een veld dat er niet in staat

model.extract(tokenizer,
    "Het pakket wordt morgen bezorgd door PostNL.",
    "Wat kost de bezorging?")
# {"value": None, "confidence": 0.93}

Hoe het werkt

Het model voorspelt voor elke positie in de tekst hoe waarschijnlijk het is dat daar een antwoord begint en eindigt. De beste combinatie daarvan is de kandidaat-span.

Die kandidaat wordt vervolgens afgewogen tegen een aparte "geen antwoord"-score. Alleen als de beste span duidelijk sterker is dan die drempel, wordt hij teruggegeven. De drempel (null_bias) is gekalibreerd op een validatieset en zit in de modelconfiguratie — je hoeft er zelf niets aan te doen.

Vraagformulering

Hoe specifieker de vraag, hoe scherper het antwoord. Vraag je "Waar is het probleem?" dan krijg je de locatie; vraag je "Wat is er kapot?" dan krijg je het object. Twee vragen op dezelfde tekst leveren dus netjes twee verschillende velden op:

model.extract_fields(tokenizer,
    "Kapotte lantaarnpaal aan de Julianalaan ter hoogte van huisnummer 42.",
    {"object": "Wat is er kapot?", "locatie": "Aan welke straat is het probleem?"})
# {"object":  {"value": "lantaarnpaal", "confidence": 1.00},
#  "locatie": {"value": "Julianalaan",  "confidence": 1.00}}

Ook op andere talen

Het model is op Nederlands getraind, maar de backbone (mdeberta-v3-base) is multilingual en dat blijft merkbaar. Dezelfde factuur in drie talen, met de vraag in de taal van het document:

model.extract(tok, "Invoice 8842 from Baker Jones, due date March 3rd 2027.",
              "What is the due date?")
# {"value": "March 3rd 2027", "confidence": 1.00}

model.extract(tok, "Rechnung 8842 von Bäcker Jones, Fälligkeitsdatum 3. März 2027.",
              "Was ist das Fälligkeitsdatum?")
# {"value": "3. März 2027", "confidence": 1.00}

model.extract(tok, "Facture 8842 de Boulanger Jones, date d'échéance 3 mars 2027.",
              "Quelle est la date d'échéance?")
# {"value": "3 mars 2027", "confidence": 1.00}

Handig voor administraties die ook buitenlandse facturen verwerken.

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 Choice, Noul categoriseren, routeren, waarheidsvragen
arlo-score Score numeriek beoordelen tegen een rubric
arlo-extract Extraction getypeerde velden uit tekst halen

Extraction wordt sterker in combinatie met de andere twee: arlo-classify bepaalt wat voor soort document je voor je hebt, en op basis daarvan stel je gericht de juiste extractievragen. Een factuur vraagt om andere velden dan een bezwaarschrift.

soort = classify.choice(tokenizer_c, tekst, ["factuur", "bezwaarschrift", "melding"])
velden = VELDEN_PER_SOORT[soort[0]["label"]]
resultaat = extract.extract_fields(tokenizer_e, tekst, velden)

Technische details

  • Backbone: microsoft/mdeberta-v3-base (~280M parameters)
  • Kop: extractive question answering (start/eind-posities)
  • Taal: Nederlands
  • Trainingsdata: Nederlandstalige extractieve QA-data, aangevuld met domeinspecifieke voorbeelden in de stijl van meldingen, aanvragen en formele correspondentie — inclusief vragen waarop géén antwoord in de tekst staat
  • Hardware: getraind op een NVIDIA A100
  • Licentie: MIT

Gemaakt door NoaberAI.

Downloads last month
85
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for NoaberAI/arlo-extract

Finetuned
(301)
this model