Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2380 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  opimisation de la fonction soundex

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

opimisation de la fonction soundex

n°2315489
snike
Posté le 20-05-2018 à 17:12:45  profilanswer
 

Bonjour,
 
  Pour une petite application de généalogie je voudrais optimiser mes recherches avec les noms ressemblant au nom rechercher. Chose bien utile quand on voit les différentes façons d'écrire certains noms de famille.
Exemple :  
   Nom = MULLER  
   Soundex(MULLER) = M460
   Je trouve MILLERY, MULLER, MOLLER, MAHLER, MILAIRE, MEILLIER, MILLER qui ont le même soundex de M460 et c'est pas mal,
   Mais pas BUCHMULLER (B254), DEMULLER (D546), DEMILLER (D546), TRUCMULLER (T625) ou TRUCMACHINMILLER (T625)
 
Comment faire pour avoir les noms ne commençant pas par 'MULLER' ?
 
Merci par avance pour vos idées.

mood
Publicité
Posté le 20-05-2018 à 17:12:45  profilanswer
 

n°2315562
rufo
Pas me confondre avec Lycos!
Posté le 22-05-2018 à 14:14:13  profilanswer
 

Peut-être travailler avec d'autres algo de similitudes (calcul de distances entre 2 chaînes comme Levenstein ou d'autres plus performantes) ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2315670
TotalRecal​l
Posté le 23-05-2018 à 15:00:26  profilanswer
 

Le Soundex génère une "image" en 4 caractères d'un mot unique, via un algo basé sur une espèce de logique d'index accordé aux groupes de consonnes (et un tripatouillage sur les voyelles), en considérant certains comme phonétiquement équivalentes ou proches.

 

Et donc Soundex de par sa finalité n'aime pas du tout qu'on rajoute ou retranche des syllabes entières à un mot, ça transforme complètement le résultat. Donc dans ton cas, ça n'est pas approprié.

 

Au lieu d'une approche phonétique, tu devrais utiliser une approche grammaticale comme Levenshtein cité par rufo, et éventuellement envisager de t'appuyer sur un outil d'indexation full text comme Lucene qui offre plus de souplesse pour les besoins comme le tien.

 


Remarques en vrac :
- A la base l'"index" est fait pour l'anglais, il y a une variante pour le français (entre autres), donc faut t'assurer d'utiliser la version appropriée pour ta langue.
- Les patronymes sont un cas particulier vu que ça peut impliquer des variations de langues, mais en France on aura tendance à prononcer à la française de toute façon.
- Il y a d'autres algos phonétiques, un machin qui s'appelle Metaphone par exemple, mais qui ne résolvent pas ton problème.

 



Message édité par TotalRecall le 23-05-2018 à 15:01:39

---------------
Topic .Net - C# @ Prog
n°2315671
rufo
Pas me confondre avec Lycos!
Posté le 23-05-2018 à 15:22:07  profilanswer
 

Tu peux regarder la BD Lexique.org qui contient les phonèmes des mots, leur décomposition en voyelles/consonnes, le nb de syllabes...
Par contre, y'a pas les noms propres. Là, faudra le faire à la main, le remplissage de la BD avec cette partie.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  opimisation de la fonction soundex

 

Sujets relatifs
Utilisation d'une méthode de class en tant que fonction de callbackprocédure ou fonction
Editer une fonction en VBA.Recherche de cellule en fonction d'un texte donné.
probleme en programmation c "chaine de caracteres dans une fonction[Matlab/Octave] Fonction x_n = f(x_(n-1))
Fonctions implémentés par gcc[résolu]SQL afficher valeur d'une ligne en fonction d'une condition
L'alignement avec la fonction le format en pythonfonction de répartition ?
Plus de sujets relatifs à : opimisation de la fonction soundex


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR