Recherche libre avec correspondance sur des termes pré-définis

Levenshtein, Jaro

a marqué ce sujet comme résolu.

Hello les agrumes,

J’ai le problème suivant :

J’ai une liste de spécialités médicales, du genre ["Dermatology", "Cardiology", ...] et j’ai une appli Web qui permet à un utilisateur de rechercher des spécialistes en tapant simplement dans une barre de recherche. J’essaie de trouver un algorithme capable d’inférer que, par exemple :

general va correspondre à General Practice de ma liste, ou bien encore que gynecology va correspondre à Obstetrics and gynecology de ma liste.

Pour cela, j’utilise actuellement l’algorithme de Jaro avec un seuil de 0.65 minimum. J’ai l’impression que l’algorithme de Jaro donne de meilleurs résultats que la distance de Levenshtein que j’avais essayé avant. Le gros souci de Jaro, ici, c’est qu’il est très sensible sur les fins et les débuts de mots, si j’ai bien compris. Or, le souci c’est qu’en spécialités médicales, on va avoir beaucoup de mots finissant en ~logy ce qui rend cet algo assez impraticable…

Je ne sais pas trop quel est l’algorithme à utiliser dans ce cas précis, j’ai essayé en à tâtons avec Lev et Jaro, mais sans trop de succès. Vous avez des idées d’autre algos plus adaptés ou des pistes ? :)

Merci !

+0 -0

Le problème me parait sérieux.

Levenshtein doit se planter magistralement si je tape des mots courts avec une faute comme Kyné ou Ginéko 🍑🐱 !

Une tentative serait de pré-traiter la liste de mots que tu as. En extrayant les mots, de chaque spécialité de normaliser ces mots (même case ou retrait d’accents si jamais tu t’attaques au Français) de même pour la recherche de l’utilisateur.

Ensuite, j’applique Jaro avec p=0.67 environ, j’aimerais pouvoir faire plus mais s’il faut gérer les fautes de frappes on est obligé. Une astuce qui permettrait d’aller un peu plus loin est de faire une petite liste des suffixe comme « ogy » et de les remplacer par « ist » ou de les supprimer simplement.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte