begin process at 2010 02 09 15:31:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > ALGORITHME SOUNDEX

ALGORITHME SOUNDEX


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Source .NET ( DotNet ) Classé sous :soundex, code, algorithme, soundex2, sound Niveau :Initié Date de création :04/09/2006 Date de mise à jour :16/02/2009 14:59:32 Vu / téléchargé :11 071 / 814

Auteur : Bidou

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Algorithme Soundex C# / Soundex Algorithm C#

Historique :
-------------
Le terme Soundex remonte à 1918. Le premier algorithme de ce type a été inventé par Margaret O’Dell et Robert C. Russell, probablement à cause des problèmes liés au recensement américain. En effet, de part leur constitution, les États Unis d’Amérique sont tenus à recenser leur population tous les 10 ans. A la fin du siècle dernier, le problème du recensement était devenu un casse tête majeur. Traiter des informations concernant une population de plusieurs dizaines de millions d’américains à la main demandait un travail phénoménal. Le premier a en tirer parti fût un certain Hollerith, qui fabriqua et introduisit les premières machines mécanographiques comptables, réduisant ainsi les temps de traitement des informations de 75%. Dans ce même temps de nombreuses personnes trouvèrent des idées astucieuses pour trier, classer, rechercher parmi les données collectées. Il en fût sans doute ainsi du premier mécanisme de recherche par consonance, que ses auteurs appelèrent Soundex. Depuis, ce terme regroupe une famille d’algorithmes que nous allons détailler.

Principe   :
-------------
Comment dans une liste de nom de personne arriver à retrouver un certain DUPONT ou DUPOND ou DUPAN ou encore DEPAIN ???
C’est simple, il suffit de se baser sur la consonance et non sur les mots eux-mêmes.

Tous les algorithmes de Soundex reposent sur un principe de base qui consiste à codifier le mot en éliminant les lettres en doubles, les lettres muettes (H en particulier) et en rapprochant les sons de certaines lettres. Une fois cette codification obtenue on la stocke auprès de la donnée de base et on effectue la recherche par comparaison directe entre le Soundex ainsi obtenu et le mot recherché codifié lui aussi en Soundex.

La recherche en est donc très performante puisqu’elle aboutit à une requête dont le critère est l’égalité, et pour peu que l’on place un index sur le champ qui stocke le code du soundex, alors elle s’avère aussi rapide que de trouver un enregistrement pas sa clef.

----------------------------------------- -------------------------------------------------- -
source de ces textes et explication de l'algo : http://www-lium.univ-lemans.fr/~carlier/recherche/ soundex.html


 Conclusion

Pratiquement, si on associe un algorithme soundex avec un algorithme de levenstein (http://www.csharpfr.com/codes/LEVENSHTEIN-DISTANC E-ALGORITHME_39298.aspx) on arrive à avoir des résultats qui sont très pertinents. Je propose dans cette source le Soundex et le Soundex2 (une amélioration de celui-ci).
J'ai également ajouté un projet qui permet de tester les deux algos (Levenshtein et soudex). Je vous laisse le soin de faire quelques testes pour voir que ça marche assez bien ;-)

Commentaires constructifs et idées d'améliorations pour que ça soit plus performant sont les bienvenus !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

06 septembre 2006 11:26:17 :
Ajout d'une application pour mettre en pratique ce que j'explique dans le deuxième commentaire de cette source : Recherche d'un mot dans une liste avec soundex puis classement des résultats par ordre de pertinence (Levensthein).
02 janvier 2007 23:22:22 :
Mise à jour de la description
02 janvier 2007 23:31:56 :
Ajout d'une capture
16 février 2009 14:59:34 :
MAJ

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) CHESS GAME CORE - LIBRAIRIE JEU D'ÉCHEC EN C#
Source avec Zip Source avec une capture Source .NET (Dotnet) CUBE-IT: PETIT JEU EN WPF
Source avec Zip Source avec une capture Source .NET (Dotnet) YOUTUBE VIEWER
Source avec Zip Source avec une capture Source .NET (Dotnet) COLOR WHEEL
Source avec Zip Source avec une capture Source .NET (Dotnet) PETIT EXEMPLE UTILISANT XAML ET WPF

 Sources de la même categorie

RECHERCHE DE DEUX SOUS ENSEMBLE DONT LES SOMMES DES ÉLÈMENTS... par deadhand
Source avec Zip Source avec une capture Source .NET (Dotnet) METHODE GRAPHIQUE EN PROGRAMMATION LINÉAIRE par vindos
Source avec Zip Source avec une capture Source .NET (Dotnet) RECTANGLES par krissssss
Source avec Zip Source avec une capture SODOKU MUSING (PERMUTATION & SODOKU) par krissssss
Source avec Zip Source avec une capture Source .NET (Dotnet) ANALYSEUR LEXICAL ET SYNTAXIQUE DES FORMULES PROPOSITIONNELL... par boutemine

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) SUDOKU SOLVER par swonder
Source avec Zip Source avec une capture Source .NET (Dotnet) TRADUCTEUR ALGO VISUAL BASIC .NET/C# par rhonin33
Source avec Zip Source avec une capture Source .NET (Dotnet) UN JEU OU IL FAUT ALIGNER 4 COULEURS POUR CASSER DES BLOCKS... par Mokost
Source avec Zip Source .NET (Dotnet) ENHANCED STRING MATCHING par pch_hotline
Source .NET (Dotnet) APPLICATION DE L'ALGO DE WAGNER ET FISHER par artosane

Commentaires et avis

Commentaire de MorpionMx le 04/09/2006 18:20:29 administrateur CS

Très interessante tes 2 dernieres sources.
Faudra que je regarde ca plus en profondeur

Commentaire de Bidou le 04/09/2006 18:48:32 administrateur CS

Oui c'est assez intéressant (et pas compliqué!), on peut faire des choses pas mal avec... Un exemple que j'avais trouvé sur le net pour la petite histoire : un client appelle le service clientèle, il doit donner son nom pour que le gaillard du service client sache qui c'est; il répond Dupont.
Mais est-ce que c'est Dupont, Dupon, Dupond, Dubon, Ducon (:D), Duvon, etc... ?? Avec une recherche soundex on arrive très facilement à retrouver tout ces noms, puis on peut les classer par ordre de pertinence grâce à un algo de levenshtein...

Commentaire de MorpionMx le 04/09/2006 19:26:20 administrateur CS

C'est vrai que c'est pas specialement compliqué, en plus.

Commentaire de Lutinore le 05/09/2006 06:02:29 administrateur CS

Mince, je croyais que c'était un code pour une API audio. :D :D

Commentaire de sebmafate le 05/09/2006 09:55:08 administrateur CS

Si je comprends bien l'idée... c'est un peu comme si on retrouvait la phonetique d'un mot... ou quelque chose s'en rapprochant.
Mais... ce que je ne comprends pas c'est que du coup l'algo ne doit pas être le même en français et en anglais !?! la phonétique étant différente.

Commentaire de Bidou le 05/09/2006 09:56:46 administrateur CS

Oui c'est exactement ça ;-)
Il existe effectivement des soundex pour chaque langue, ce qui est un peu pénible... Les deux que je propose ici sont pour la langue Française.

Commentaire de shivhack le 06/09/2006 01:54:43

Vraiement super ton truc.

Une idée vient de me paser par la tete consiste à associer le Soundex avec qq API comme un dictionnaire français, un analyseur syntaxique et la
Microsoft Speech API, ca pourrait donner naissance à un algo de dictation performant (comme Dragon Naturraly Speaking, mais ça c est tres fort !).

Commentaire de shivhack le 06/09/2006 01:56:51

j ai oublié de te dire...merci de m'avoir sauver la tete du casse-tete !

bonne chance

Commentaire de Bidou le 06/09/2006 11:24:58 administrateur CS

Bah de rien ;-)
J'en profite droit pour mettre la source à jour : j'ai fait une petite application qui simule ce que j'explique dans le deuxième commentaire de cette source (c'est juste une démo, ça peut très certainement être optimisé!).
En gros, on rentre Dupont et il nous sort une liste de nom ressemblant à celui-ci par ordre de pertinence...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Executer du code C# [ par Skyride ] Bonjour à tousJ'espère que vous pourrez me renseigner...Je m'initie depuis quelques temps à l'environnement .NET et je commence un petit peu à m'inter Les textures [ par NICKO02 ] Pour ceux qui ont le SDK de DX9, je prend le tutorial 5.Voila j'essaies de creer une texture : Dans le fichier D3dtriangle.cs;Dans la classe GraphicsC Quel est le meilleur moyen de gerer un buffer ... [ par Hawkmoon ] Bon voila mon probleme : je connecte une socket sur un server irc mais avec le code suivant j'arrive pas a gerer les reponses du server dans un buffer Probleme DropDownList [ par jdaviaud ] J'ai un petit pb avec un dropdownlist.Quand je veux en récupérer la valeur de la ligne sélectionnée, j'utilise le code suivant :string famille = DropD array et CSharp [ par matgai ] Bonjour,Je débute en C# et je vois déjà les limites du tout-objet par rapport à C++. Voici en particulier où je bute :je veux écrire l'équivalent C++ PLay Sound [ par Charlie ] Allo...Comment faire pour faire jouer un .wav sans utiliser la commande play sound ? Je suis en C et j'ai pas le droit d'utiliser de .dll ou de rajout problème de serialisation avec NetworkStream [ par Oberon ] J'aurais voulu sérialisé un objet en passant par un networkStream mais je bute sur un problème de casting...Coté serveur:BinaryFormatter formatter = n Datagrid : faire une colonne spéciale par le code behind [ par Felixlechat ] Bonjour, je sais comment ajouter une BoundColumn dans le code, et comment ajouter un ItemColumn dans la page (dans une datagrid), mais en revanche le Création d'un tableau dynamique HTML par le code... [ par pchanet ] Bonjour à tous,Je suis en train de développer la gestion d'une table HTML (type <table>...</table>) en dynamique à partir de la page de co code ascii [ par alcamatt ] comment peut on reccupérer le code ascii d'un caractere avec csharp ?En visual basic, je crois me rappeler qu'il fallait utiliser la fonction Asc(<


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,404 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales