This model is a fine-tuned version of microsoft/Phi-4-mini-instruct optimized for entity extraction from Dutch text, trained as part of the WIM (Wikipedia to Knowledge Graph) pipeline.
Model Details
Model Description
Developed by: UWV InnovatieHub
Model type: Causal Language Model with LoRA fine-tuning
Entity Extraction: Extract named entities, concepts, and relationships from Dutch text
Knowledge Graph Construction: First step (N1) in the WIM pipeline for converting text to structured data
Information Extraction: Identify people, organizations, locations, dates, and other entities
Limitations
Optimized for Dutch Wikipedia-style text
Best performance on encyclopedic content
May require adaptation for domain-specific entity types
Context window limited to 16K tokens
How to Use
Option 1: Using the Merged Model (Recommended)
python
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3import json
45# Load the merged model (ready to use)6model = AutoModelForCausalLM.from_pretrained(7"UWV/wim-n1-phi4-mini-merged",8 torch_dtype=torch.bfloat16,9 device_map="auto",10 trust_remote_code=True11)12tokenizer = AutoTokenizer.from_pretrained("UWV/wim-n1-phi4-mini-merged")1314# Prepare input15text ="""
16De Schijfwereld is een fantasiewereld uit de boeken van Terry Pratchett. Het is een
17platte planeet die op de ruggen van vier reusachtige olifanten rust: Berilia, Tubul,
18Groothuis T'Phon en Jerakeen. Deze olifanten staan op hun beurt op de rug van de
19Groot A'Tuin, een enorme schildpad die door de kosmos zwemt.
20"""2122messages =[23{24"role":"system",25"content":"Je bent een expert in het extraheren van entiteiten uit tekst."26},27{28"role":"user",29"content":f"""Analyseer de gegeven Nederlandse tekst en voer de volgende taken uit:
30311. Geef eerst een beknopte samenvatting van waar de tekst over gaat (maximaal 2 zinnen).
32332. Identificeer alle belangrijke entiteiten in de tekst. Voor elke entiteit:
34 - Gebruik de exacte naam zoals vermeld in de tekst
35 - Bepaal het meest specifieke type/class dat bij deze entiteit past
36 - Geef een korte beschrijving van wat dit type/class vertegenwoordigt
37383. Identificeer de relaties tussen de gevonden entiteiten.
3940Hier zijn enkele voorbeelden van output van entiteiten en relaties. Het pijp-karakter (|) wordt gebruikt om velden te scheiden. BELANGRIJK: Zorg ervoor dat het TYPE/CLASS zowel SPECIFIEK als CORRECT is.
4142### Voorbeeld van entiteiten
43<entiteiten>
44De Koe | Straat | Een straat
45Amsterdam | Stad | Een stad of dorp
46Pedro Nunesplein | Plein | Een plein of open ruimte in een stad
47Statue of Pedro Nunes | Monument | Een gedenkteken, standbeeld of herdenkingsstructuur
48Pedro Nunes | Persoon | Portugese wiskundige, kosmograaf en professor
49Municipality of Amsterdam | Overheidsorganisatie | Een lokale overheidsinstantie of gemeente
50Universiteit Leiden | Onderwijsinstelling | Een universiteit, hogeschool of andere onderwijsinstantie
511502 | Datum | Een specifieke datum of jaartal
521578 | Datum | Een specifieke datum of jaartal
53Portugal | Land | Een land of natie
54Germany | Land | Een land of natie
55</entiteiten>
5657### Voorbeeld van relaties
58<relaties>
59Pedro Nunesplein | genoemd naar | Pedro Nunes
60Statue of Pedro Nunes | staat op | Pedro Nunesplein
61Statue of Pedro Nunes | afbeeldt | Pedro Nunes
62Pedro Nunes | geboren in | 1502
63Pedro Nunes | gestorven in | 1578
64Pedro Nunes | nationaliteit | Portugal
65Pedro Nunes | werkte bij | Universiteit Leiden
66</relaties>
6768Zoals je ziet wordt de format gebruikt van: [Entiteit naam] | [Type/Class] | [Beschrijving]
69Voor relaties: [Entiteit 1] | [relatie type] | [Entiteit 2]
7071Tekst om te analyseren:
72{text}"""73}74]7576# Apply chat template and generate77prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)78inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=16384)79inputs ={k: v.to(model.device)for k, v in inputs.items()}8081with torch.no_grad():82 outputs = model.generate(83**inputs,84 max_new_tokens=1000,85 temperature=0.1,# Low temperature for structured output86 do_sample=True,87 top_p=0.95,88 pad_token_id=tokenizer.pad_token_id,89 eos_token_id=tokenizer.eos_token_id,90)9192# Decode response93response = tokenizer.decode(outputs[0], skip_special_tokens=True)94# Extract just the assistant's response95if"assistant:"in response:96 response = response.split("assistant:")[-1].strip()9798print(response)
Option 2: Using the LoRA Adapter
python
1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
45# Load base model6base_model = AutoModelForCausalLM.from_pretrained(7"microsoft/Phi-4-mini-instruct",8 torch_dtype=torch.bfloat16,9 device_map="auto",10 trust_remote_code=True11)1213# Load adapter14model = PeftModel.from_pretrained(15 base_model,16"UWV/wim-n1-phi4-mini-adapter"17)18tokenizer = AutoTokenizer.from_pretrained("UWV/wim-n1-phi4-mini-adapter")1920# Use same inference code as above...
Expected Output Format
The model outputs structured text with entities and relations in a pipe-separated format:
<summary>
De tekst beschrijft de Schijfwereld, een fantasiewereld uit Terry Pratchett's boeken.
Het is een platte planeet die rust op vier olifanten, die op hun beurt op een
reusachtige schildpad staan.
</summary>
<entiteiten>
Schijfwereld | FictionalPlace | Een verzonnen wereld of locatie uit fictie
Terry Pratchett | Person | Een persoon
Berilia | FictionalCharacter | Een verzonnen personage of wezen
Tubul | FictionalCharacter | Een verzonnen personage of wezen
Groothuis T'Phon | FictionalCharacter | Een verzonnen personage of wezen
Jerakeen | FictionalCharacter | Een verzonnen personage of wezen
Groot A'Tuin | FictionalCharacter | Een verzonnen personage of wezen
</entiteiten>
<relaties>
Schijfwereld | gecreëerd door | Terry Pratchett
Schijfwereld | rust op | Berilia
Schijfwereld | rust op | Tubul
Schijfwereld | rust op | Groothuis T'Phon
Schijfwereld | rust op | Jerakeen
Berilia | staat op | Groot A'Tuin
Tubul | staat op | Groot A'Tuin
Groothuis T'Phon | staat op | Groot A'Tuin
Jerakeen | staat op | Groot A'Tuin
</relaties>