Double Metaphone
Un article de Wikipédia, l'encyclopédie libre.
Le Double Metaphone est un algorithme de recherche phonétique écrit par Lawrence Philips et est la deuxième génération de l'algorithme Metaphone. Son implémentation a été décrite en juin 2000 dans le magazine C/C++ Users Journal.
Il est appelé « Double » car il peut retourner un code primaire et secondaire pour une chaîne de caractères (String) ; cela compte pour des cas ambigus ou pour des variantes multiples avec des ascendances communes. Par exemple, l'encodage du nom « Smith » rapporte le code primaire SM0 et le code secondaire XMT, lorsque le nom « Schmidt » rapporte le code primaire XMT et le code secondaire de SMT ; les deux ont XMT en commun.
Double Metaphone essaye de prendre en compte des myriades d'irrégularités de l'anglais, des langues slaves, germaniques, celtique, grec, français, Italien, espagnol, chinois, et autres origines. Ainsi il utilise un jeu de règles beaucoup plus complexe que son prédécesseur ; par exemple, il teste approximativement 100 contextes différents de l'utilisation de la lettre C seule. Dans l'introduction de son article, M. Philips défendait cette complexité :
Albert Einstein dit une fois, « Tout doit être fait aussi simplement que possible, mais pas plus simplement ! » La simplicité, naturellement, est fondamentale à l'ingénierie et à la science. Si un algorithme accomplit sa tâche aussi simplement que possible, et fait de plus preuve d'une touche d'inspiration intuitive, nous le complimentons comme « élégant ». Malheureusement pour les ingénieurs, l'activité humaine peut rarement se qualifier d'élégante. Bien que le traitement de texte soit une technologie critique à une époque où des dizaines de millions de personne effectuent des recherches dans le Web, l'anglais est une langue pleine d'exception qui exige des algorithmes qui semblent souvent lourds aux ingénieurs. (Albert Einstein once said, "Everything should be made as simple as possible--but no simpler!" Simplicity, of course, is a fundamental touchstone of quality in engineering and science. If an algorithm accomplishes its task as simply as possible, and demonstrates a touch of intuitive inspiration as well, we compliment it as "elegant." Unfortunately for engineers, human activity can rarely be described elegantly. And although text processing is a critical technology at a time when millions of people are searching the web, the unsystematic and exception-laden English language often demands algorithms that look ugly to engineers.)
[modifier] Voir aussi
[modifier] Liens internes
[modifier] Liens externes
- (en) "L'algorithme de recherche Double Metaphone", C/C++ Users Journal, June 2000 (texte complet requiert un enregistrement)
- (en) Source code de l'article ci-dessus (73 kilooctets ZIP), incluant les sources du Double Metaphone en C++
- (en) Project Dedupe
- (en) PHP implémentation: http://swoodbridge.com/DoubleMetaPhone/
- (en) Implémentation en Ruby : http://rubyforge.org/projects/text/
- (en) Implémentation en Perl : http://www.cpan.org/modules/by-authors/id/MAURICE/
- (en) Implémentation en Java : http://commons.apache.org/codec/