Un petit exemple d'utilisation des données ouvertes de l'Afnic

09 juillet 2019 - Par Stéphane Bortzmeyer

 

Quels noms de domaine dérivent d'un prénom ?

L'Afnic distribue des données ouvertes en https://opendata.afnic.fr/, données portant sur les noms de domaine en .fr. Voici un petit exemple d'utilisation de ces données, croisées avec d'autres données ouvertes, portant sur les prénoms attribués en France.

Les titulaires de noms de domaine ont un vaste choix pour leur nom. Ils peuvent faire dériver le nom de domaine de leur nom de famille, ou bien choisir un nom descriptif. Si Jean Dupont veut faire un site web sur le jardinage, il peut choisir jean-dupont.fr, ou dupont-jardinage.fr ou jean-jardinage.fr ou encore de très nombreux autres noms. Nous allons ici nous concentrer sur les noms de domaine issus d'un prénom.

Première question, comment les trouver ? La liste des noms de domaine .fr est disponible en https://opendata.afnic.fr/. On télécharge « A- noms de domaine en point fr.zip » (je ne vous donne pas le lien, il change à chaque fois), on dézippe, et on se retrouve avec un fichier au format CSV (en fait, les champs sont séparés par des points-virgules, pas par des virgules), les deux champs importants pour nous étant le premier (le nom de domaine) et le 11ème (la date de suppression ; si ce champ est présent, cela veut dire que le domaine n'existe plus). On a donc la liste des noms de domaine en .fr. Il reste à trouver ceux qui dérivent d'un prénom. (On va aussi recoder le fichier en UTF-8 car il utilise un vieil encodage de caractères.)

Existe-t-il une liste de prénoms en France, comme il existe une liste de noms de domaine ? Oui, l'INSEE distribue une telle liste. On récupère également un fichier zippé qui, une fois dézippé, nous donne une liste de prénoms. Il est recommandé de lire la documentation, car l'utilisation de ce fichier est un peu compliquée. Une première analyse nous montre que ce fichier contient 32 704 prénoms. Cherchons quels noms de domaine sont des prénoms.

Un premier programme trivial nous indique 13 518 noms de domaine ainsi formés, parmi lesquels les classiques marie.fr et jean.fr mais aussi mon prénom (stéphane.fr existe), ainsi que brunehilde.fr et lucrezia.fr. Mais c'est très insuffisant car ce programme ne détecte que les noms de domaine qui sont un prénom. On voudrait élargir et avoir les noms de domaine comprenant un prénom.

Je vous gâche la surprise tout de suite : ça ne va pas donner de bons résultats car beaucoup de prénoms sont tellement courts qu'on les trouve partout. Le fichier de l'INSEE comporte des prénoms comme Al ou Bo, mais aussi des lettres uniques (négligence de l'officier d'état civil ?) Il faut donc réduire la liste des prénoms. Commençons déjà par ne garder que les plus courants ; certains prénoms étant très rares. (La popularité des prénoms est une exponentielle décroissante). En n'acceptant que les prénoms donnés à plus de 1 000 personnes sur la période considérée, on réduit le nombre de prénoms à 3 042 mais, et c'est cela qui est important, cela fait encore 93,8 % des personnes.

Cette fois, on trouve bien trop de noms de domaine : 34,42 %. C'est dû au fait qu'il y a encore des prénoms assez courts, qui créent plein de faux positifs. Si lejardindelola.fr contient bien le prénom Lola, en revanche service-catholique-funerailles-boulogne-billancourt.fr est un faux positif (on y trouve le prénom Illan). Bref, il va falloir passer à un algorithme plus subtil.

Étape suivante, non seulement on ne garde que les 3 042 prénoms les plus courants utilisés à l'essai précédent mais on ne considère un nom de domaine comme dérivé d'un prénom que si une des conditions suivantes est remplie :

  • le nom de domaine est égal à un prénom (michèle.fr),
  • le prénom fait plus de six lettres et est au début du nom de domaine (charlesdegaulleroissyparkingaeroport.fr),
  • le nom de domaine commence par un prénom de moins de six lettres, qui est suivi d'un tiret (zora-création.fr).

Avec ces règles, on trouve que 147 094 noms de domaine, soit 4,31 % du total sont dérivés d'un prénom. Il reste des faux négatifs et des faux positifs (comme france-boissons.fr, où le premier mot désigne sans doute le pays et pas le prénom) mais rien n'est jamais parfait en analyse de données.

Notez qu'il reste encore des points qui pourraient être améliorés. Je n'ai pas cherché à faire de recherche floue, par exemple, donc le prénom Théophile ne sera pas trouvé dans theophile.fr. (Les données INSEE sont de qualité variable sur l'orthographe et, par exemple, contiennent ce prénom écrit parfois Théophile et parfois Theophile.) Autre piège, les prénoms sont très soumis à la mode et la base INSEE remonte à 1900. Il pourrait donc être intéressant de ne pas tenir compte des prénoms qui n'étaient donnés qu'autrefois.

Voilà, on pourrait maintenant se lancer dans des études sur l'histoire de ces noms de domaine fondés sur un prénom : ont-ils un taux de renouvellement meilleur que les autres, par exemple. Mais je me suis focalisé ici sur ce qui était disponible en données ouvertes.

Merci à Alexander Mayrhofer, du registre du .at (Autriche) pour l'idée, les explications et l'algorithme.

Le reste ne concerne que les programmeuses et programmeurs :

  • Les programmes ont été écrits en Python.
  • Les noms dans la base distribuée par l'Afnic sont encodés en Punycode (ainsi, stéphane.fr est écrit xn--stphane-cya.fr). Pour avoir le vrai nom, il faut faire une conversion encodings.idna.ToUnicode(domain).
  • L'algorithme trivial pour tester tous les prénoms avec tous les noms de domaine est d'emboîter les deux boucles. C'est évidemment horriblement inefficace, j'ai donc utilisé les expressions rationnelles avec le module Python re. On construit une expression offrant tous les prénoms et on l'applique successivement à chaque domaine.
Read this page in English Haut de page