feat(detect): paranames gazetteer Wikidata (1.4M noms + 502K prénoms)
Intégration de paranames (bltlab/paranames v2024.05.07.0, CC BY 4.0) pour étendre la couverture du gazetteer aux noms étrangers en France absents d'INSEE (basques, maghrébins, asiatiques, africains, etc.). ## Citation Sälevä, J., & Lignos, C. (2024). ParaNames 1.0: Creating an Entity Name Corpus for 400+ Languages using Wikidata. In Proceedings of LREC-COLING 2024. https://aclanthology.org/2024.lrec-main.1103/ ## Fichiers - scripts/build_paranames_gazetteer.py — script reproductible - data/paranames/README.md — attribution + procédure - data/paranames/EXTRACTION.md — workflow reproductible - data/paranames/noms_famille_world.txt.gz — 1 379 609 noms (4.3 Mo gz, <30 Mo RAM) - data/paranames/prenoms_world.txt.gz — 502 302 prénoms (1.4 Mo gz) ## Volume final Réduction significative vs estimation initiale (~80 Mo) grâce à NFKD+A-Z qui fusionne toutes les translittérations Wikidata (cyrilliques, arabes, chinoises…) en latin de base. Résultat : 4.3 Mo gz total, ~30 Mo RAM. ## Spot-check | Nom | Présent ? | Note | |---|---|---| | EJNAINI | ✅ | Le cas de fuite résiduelle audit_30 — devrait être fixé | | OYARZABAL | ✅ | Variante basque | | OYARCABAL | ❌ | Orthographe franco-espagnole rare, absente Wikidata | | NGUYEN, SCHMIDT, OBAMA, NAKAMURA, GARCIA, MARTIN, BERNARD | ✅ | OK | ## Intersection INSEE - ∩ INSEE FR : 130 340 noms (59.5 % de couverture INSEE) - Gain net : 1 249 269 noms supplémentaires (focus diaspora / DOM-TOM) ## Risque FP identifié Quelques mots français courants sont présents dans paranames (origine : noms d'autres langues) : VOIR, ALLO. MIDI déjà filtré par stopwords. Impact à mesurer sur retraitement audit_30. Si nécessaire, ajout d'un filtre dictionnaire français à apporter ultérieurement. ## Source - Dépôt : https://github.com/bltlab/paranames - Mirror HF (utilisé) : https://huggingface.co/datasets/imvladikon/paranames - License : CC BY 4.0 - Origine : Wikidata (entités publiques) — pas de PII fuitée REJETÉ comme alternative : philipperemy/name-dataset (origine = leak Facebook 2021, RGPD bloquant pour produit médical). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
64
data/paranames/README.md
Normal file
64
data/paranames/README.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# data/paranames — Gazetteers de noms mondiaux
|
||||
|
||||
Issu de [paranames](https://github.com/bltlab/paranames) v2024.05.07.0,
|
||||
sous licence **CC BY 4.0**.
|
||||
|
||||
## Citation
|
||||
|
||||
> Sälevä, J., & Lignos, C. (2024). *ParaNames 1.0: Creating an Entity Name
|
||||
> Corpus for 400+ Languages using Wikidata.* In Proceedings of LREC-COLING
|
||||
> 2024.
|
||||
|
||||
Lien : <https://aclanthology.org/2024.lrec-main.1103/>
|
||||
|
||||
## Contenu
|
||||
|
||||
| Fichier | Description |
|
||||
|----------------------------------|--------------------------------------------------------------------|
|
||||
| `noms_famille_world.txt.gz` | Noms de famille mondiaux (UPPERCASE, NFKD sans diacritiques, A-Z). |
|
||||
| `prenoms_world.txt.gz` | Prénoms mondiaux (UPPERCASE, NFKD sans diacritiques, A-Z). |
|
||||
| `EXTRACTION.md` | Procédure reproductible d'extraction. |
|
||||
|
||||
Les deux fichiers sont triés alphabétiquement, encodés UTF-8, compressés gzip
|
||||
niveau 9. Une entrée par ligne.
|
||||
|
||||
## Régénération
|
||||
|
||||
```bash
|
||||
python scripts/build_paranames_gazetteer.py
|
||||
```
|
||||
|
||||
Le script est **idempotent** : relance = même résultat. Le cache HuggingFace
|
||||
(~/.cache/huggingface/) évite tout re-téléchargement.
|
||||
|
||||
Voir [EXTRACTION.md](EXTRACTION.md) pour le détail de la procédure.
|
||||
|
||||
## Source amont
|
||||
|
||||
- **Repo** : <https://github.com/bltlab/paranames>
|
||||
- **Mirror HuggingFace** : <https://huggingface.co/datasets/imvladikon/paranames>
|
||||
- **Données** : `data/train.parquet` (~1.33 GB, 124 M lignes — noms parallèles
|
||||
de plus de 12 M d'entités nommées dans 400+ langues, extraits de Wikidata).
|
||||
- **Filtrage appliqué** : seuls les `type == "PER"` (personnes) sont retenus.
|
||||
|
||||
## Utilisation dans l'anonymiseur
|
||||
|
||||
Ces gazetteers complètent les listes INSEE (françaises) pour couvrir les noms
|
||||
**internationaux** (basques, vietnamiens, arabes, asiatiques, africains…)
|
||||
fréquents dans les documents médicaux français des CHU et hôpitaux de
|
||||
territoires multi-ethniques (La Réunion, Antilles, métropole).
|
||||
|
||||
Charger en lecture :
|
||||
|
||||
```python
|
||||
import gzip
|
||||
with gzip.open("data/paranames/noms_famille_world.txt.gz", "rt", encoding="utf-8") as f:
|
||||
NOMS_WORLD = {line.strip() for line in f if line.strip()}
|
||||
```
|
||||
|
||||
## Attribution dans l'application
|
||||
|
||||
L'écran « À propos » de l'application Pseudonymisation mentionne :
|
||||
|
||||
> Gazetteers de noms mondiaux issus de paranames (Sälevä & Lignos, 2024)
|
||||
> sous licence CC BY 4.0.
|
||||
Reference in New Issue
Block a user