Sous le capot du géocodeur addok

Géocodage ?

Les éléments de départ sont en général une simple chaîne de caractères avec parfois la position géographique de l’utilisateur.

  • des fautes de frappes et d’orthographe,
  • des inversions de mots,
  • des variantes dans les noms (Mont Griffon, Montgriffon ou Mongrifon ?)
  • des adresses partielles (manques de mots ou mots superflus)
  • et bien sûr ne pas être sensibles aux majuscules/minuscules et accents !

Retrouver (rapidement) une aiguille dans une meule de foin… étape par étape

  • une collecte de voies et lieux-dit candidats (remplissage du seau)
  • une évaluation de ces candidats en les comparant au texte initialement cherché (extraire de la crème)

La préparation des tokens

  1. Etalab, 20 av de Ségur, TSA 30719 75334 Paris Cedex 07
  2. 20 av de segur tsa 30719 75334 Paris Cedex 04
  3. 20 av de segur 75 paris

vin avenu de segur 75 pari

Le remplissage du seau

  • les tokens peu courants (segur, 75, pari),
  • les tokens courants (avenu, de),
  • un token correspondant au numéro de l’adresse (vin),
  • les tokens inconnus.
  • segur > seur
  • pari > pai
  • Villa de Ségur 75007 Paris
  • Avenue de Ségur 75015 Paris
  • Avenue de Ségur 75007 Paris
  • Rue Pérignon, Métro Segur 75015 Paris
  • Impasse des 3 soeurs 75011 Paris
  • Passage des 2 Soeurs 75009 Paris
  • Avenue de la Soeur Rosalie 75013 Paris

Extraire la crème du seau

Villa de Ségur 75007 Paris -> vil, ill, lla …

Le score final

  • un score géographique
  • un score d’importance

L’indexation du référentiel

avenu 1.347 4449
de 1.347 312
segur 1.347 14
75007 1.041 14
pari 1.041 1507
75 0.208 403
pari 1.041 1507
il 0.208 4892
frans 0.208 4595

Ces index sont stockés dans une base “clé/valeur” Redis qui fonctionne totalement en RAM ce qui est une des raisons de la rapidité d’addok.

Temps de traitement

  • nettoyage de la requête et tokenisation (6%)
  • classement des tokens (6%)
  • recherche et combinaison des tokens principaux (18%)
  • recherche “fuzzy” (27%)
  • récupération des données complètes (16%)
  • calcul de score (14%)

Pourquoi addok ?

Des adresses mais pas que…

Vous pouvez tester sur demo.addok.xyz une instance qui combine adresses et points d’intérêt. On peut ainsi chercher “Etalab” sans connaître son adresse !

--

--

--

40 ans d'informatique + 33 de base de données + 25 d'internet + 11 de cartographie = #OpenStreetMap + #opendata + #logiciel_libre

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Christian Quest

Christian Quest

40 ans d'informatique + 33 de base de données + 25 d'internet + 11 de cartographie = #OpenStreetMap + #opendata + #logiciel_libre

More from Medium

Tools to Generate Fuzzy Takagi Sugeno Method by Python

Installing python dependencies using wheels

Kotlin Cheatseet — data clas