NER multilingue : défis de la détection des données personnelles
Mis à jour pour 2026
L'écart de précision
Les modèles NER entraînés sur l'anglais atteignent 85–92 % de F1 sur les tests standard. Appliquez ces mêmes modèles à des textes en arabe ou en chinois. La précision chute à 50–70 %.
Pour la détection des données personnelles, cet écart est critique. Un taux de détection de 70 % signifie que 30 % des données sensibles restent non protégées.
Les causes ne sont pas des bugs. Elles viennent des différences entre systèmes d'écriture.
Quatre causes profondes
1. Délimitation des mots
L'anglais sépare les mots par des espaces. La tokenisation est simple.
Le chinois n'a pas d'espaces du tout.
"张伟住在北京"
→ Segmenter d'abord : ["张伟", "住在", "北京"]
Un modèle ne peut pas étiqueter ce qu'il ne trouve pas. La segmentation doit précéder le NER.
L'arabe relie les lettres à l'intérieur d'un mot. Les voyelles courtes sont omises. Le texte se lit de droite à gauche.
"محمد يعيش في دبي"
→ Pas de voyelles courtes, droite à gauche, lettres liées
2. Morphologie
Les verbes anglais changent de quelques façons prévisibles. L'arabe utilise un système de racines. Une racine crée des dizaines de mots.
كتب (k-t-b, « écrire »)
→ كاتب (écrivain), كتاب (livre), مكتبة (bibliothèque)
Le NER doit analyser les racines pour trouver des noms dans les formes dérivées.
3. Conventions de nommage
Les noms latins suivent l'ordre Prénom puis Nom. Les noms dans les langues RTL enchaînent les liens familiaux.
محمد بن عبد الله
(Muhammad fils-de Abdullah)
Les noms chinois placent le nom de famille en premier. La plupart des noms font deux ou trois caractères.
张伟 (Zhang Wei) — 2 caractères
欧阳修 (Ouyang Xiu) — 3 caractères
Un modèle construit sur des conventions occidentales manquera ces structures.
4. Direction du texte
Certaines langues s'écrivent de droite à gauche. Quand un texte RTL contient un nom anglais, l'ordre visuel et l'ordre logique divergent. On appelle cela le texte BiDi. Il nécessite une analyse minutieuse.
Scores F1 par système d'écriture
| Langue | Système d'écriture | Plage F1 | Niveau |
|---|---|---|---|
| Anglais | Latin | 85–92 % | Faible |
| Allemand | Latin | 82–88 % | Faible |
| Français | Latin | 80–87 % | Faible |
| Espagnol | Latin | 81–86 % | Faible |
| Russe | Cyrillique | 75–83 % | Moyen |
| Arabe | Abjad | 55–75 % | Élevé |
| Chinois | Hanzi | 60–78 % | Élevé |
| Japonais | Mixte | 65–80 % | Élevé |
| Thaï | Thaï | 50–70 % | Très élevé |
| Hindi | Devanagari | 60–75 % | Élevé |
Les systèmes non latins et l'absence de délimitation des mots abaissent les scores de façon constante.
Solution en trois niveaux
Nous utilisons trois niveaux pour couvrir 48 langues et systèmes d'écriture.
Niveau 1 : spaCy — 25 langues
Pour les langues disposant de modèles solides et éprouvés. Cela couvre l'anglais, l'allemand, le français, l'espagnol, l'italien, le portugais, le néerlandais, le polonais, le russe et le grec.
Niveau 2 : Stanza — Langues complexes
Stanford Stanza gère l'arabe, le chinois, le japonais et le coréen. Il effectue des découpages et des analyses de racines avant le NER.
Niveau 3 : XLM-RoBERTa — Langues à faibles ressources
Pour les langues sans modèles dédiés. Le thaï, le vietnamien, l'hindi, le bengali, l'hébreu, le turc et le farsi y sont inclus. Il traite les textes mixtes sans indicateur de langue explicite.
RTL et BiDi
Le texte de droite à gauche nécessite des étapes supplémentaires au-delà de la segmentation.
Notre pipeline :
- Normalise le texte dans l'ordre logique.
- Exécute le NER dans cet ordre.
- Remet les positions des entités dans l'ordre visuel.
Nous supprimons les préfixes attachés avant le NER et les rajoutons après.
"محمد" — nom seul
"لمحمد" — « à Muhammad » (préfixe présent)
Code-switching
Les documents réels mélangent souvent les langues en une seule ligne.
"El meeting con John es at 3pm"
"我今天跟John去shopping"
Notre pipeline divise par langue. Il exécute le bon modèle sur chaque partie. Puis il fusionne les résultats avec un mappage de positions.
Benchmarks internes
Résultats de tests internes sur des données multilingues :
| Scénario | F1 |
|---|---|
| Anglais uniquement | 91 % |
| Allemand uniquement | 88 % |
| Arabe uniquement | 79 % |
| Chinois uniquement | 81 % |
| Mélange anglais-arabe | 83 % |
| Mélange anglais-chinois | 84 % |
| Mélange anglais-allemand | 89 % |
Notes de configuration
L'application de bureau détecte automatiquement la langue par document. Pour les fichiers mixtes, elle traite chaque segment avec le bon modèle. Aucune étape manuelle n'est nécessaire.
Définissez la langue dans l'API quand vous la connaissez :
{
"text": "محمد بن عبد الله",
"language": "ar"
}
Utilisez la détection automatique dans le cas contraire :
{
"text": "محمد بن عبد الله",
"language": "auto"
}
Les schémas personnalisés doivent couvrir les chiffres spécifiques à la locale :
# ID employé latin
EMP-[0-9]{6}
# ID employé arabe (inclut les chiffres arabes-indiens)
موظف-[٠-٩0-9]{6}
Voir la liste complète des entités. Pour la configuration de l'API, visitez la page des fonctionnalités API. Notre guide de conformité RGPD explique comment les lacunes de détection affectent le droit à la protection des données.
anonym.legal utilise une pile NER à trois niveaux — spaCy, Stanza et XLM-RoBERTa — pour couvrir 48 langues avec une détection PII cohérente.