NER Juridique Tunisien (FR + AR) — v2
Modèle de Reconnaissance d'Entités Nommées spécialisé pour les documents juridiques tunisiens bilingues (français + arabe). Fine-tuné depuis xlm-roberta-base sur un corpus FAKC (Ferchiou & Associés Knowledge Center) de ~9 500 chunks annotés.
Entités reconnues (14)
| Tag | Description | Exemples |
|---|---|---|
PER |
Personne | Mohamed Ghannouchi, محمد الغنوشي |
ORG |
Organisation / institution | Ministère des Finances, وزارة التربية |
LOC |
Lieu | Tunis, القيروان |
DATE |
Date | 23 février 2011, 16 جويلية 2011 |
MONEY |
Montant | 50.000 dinars, عشرة آلاف دينار |
REF_LOI |
Référence à une loi | loi n° 2021-34 du 19 juillet 2021, قانون عدد 18 لسنة 1963 |
REF_DECR |
Référence à un décret | décret n° 2010-3152 du 1er décembre 2010, الأمر عدد 38 لسنة 2011 |
REF_ART |
Référence à un article | article premier, الفصل الأول |
REF_JORT |
Journal Officiel | Journal Officiel de la République Tunisienne, الرائد الرسمي للجمهورية التونسية |
TRIBUNAL |
Juridiction | Tribunal de Première Instance de Tunis, محكمة التعقيب |
NUM_AFF |
Numéro d'affaire | 2024-1547 |
PARTIE |
Partie au litige | la société demanderesse |
CLAUSE |
Clause contractuelle | clause de non-concurrence |
STATUT |
Statut juridique | SARL, شركة محدودة المسؤولية |
Performances
- F1 (bronze test set) : 98.25%
- Précision vs rule annotator (20 docs réels OOD) : 92.6%
- Recall vs rule annotator (20 docs réels OOD) : 93.4%
- Évalué sur 264 docs FR + 153 docs AR extraits du corpus FAKC
Le modèle généralise au-delà des règles : il trouve par exemple décret gouvernemental n° 2020-210 que les patterns regex n'attrapent pas.
Utilisation
from transformers import AutoTokenizer, AutoModelForTokenClassification
import torch
model_id = "maloukafer/ner-juridique-tunisien-v2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForTokenClassification.from_pretrained(model_id)
text = "Vu la loi n° 2021-34 du 19 juillet 2021, le Tribunal de Première Instance de Tunis..."
inputs = tokenizer(text, return_tensors="pt", return_offsets_mapping=True)
offsets = inputs.pop("offset_mapping")[0].tolist()
with torch.no_grad():
logits = model(**inputs).logits[0]
pred_ids = logits.argmax(-1).tolist()
labels = [model.config.id2label[p] for p in pred_ids]
for tok, lbl, (s, e) in zip(tokenizer.convert_ids_to_tokens(inputs["input_ids"][0]), labels, offsets):
if lbl != "O" and s != e:
print(f"{text[s:e]:30s} → {lbl}")
Pour une inférence production-ready (sliding window long doc, alignement subword→caractère, strip ponctuation, support FR+AR), voir le NERPipeline du dépôt source.
Détails d'entraînement
- Base :
xlm-roberta-base(277M params) - Données : 9 472 chunks bronze rule-annotés à partir de 422 documents FAKC réels (PDF natifs + scannés OCR Tesseract)
- Tagging : IOB2, 29 labels
- Hyperparamètres : lr=2e-5, batch=16, epochs=10, max_length=256
- Hardware : 1× GPU CUDA, ~43 min
- Langue : ~60% français, ~40% arabe
Limitations
- Bronze (rule-annotated) : le modèle apprend largement les patterns regex de l'annotateur ; les boundaries et certaines entités rares peuvent être imparfaites.
- Pour ORG / PER complexes (noms multi-mots ambigus), le rappel est plus faible.
- Phase suivante prévue : 500 chunks human-reviewed (Label Studio) → silver dataset → re-fine-tuning visant >95% F1 réel.
Crédits
Développé pour Ferchiou & Associés (cabinet d'avocats, Tunis) dans le cadre d'une plateforme IA juridique on-premise.
- Downloads last month
- 43
Model tree for maloukafer/ner-juridique-tunisien-v2
Base model
FacebookAI/xlm-roberta-base