Accueil





HaploPhone
(ex Menz Agitat's Soundex)


Description

HaploPhone est un algorithme phonétique inspiré du fonctionnement de Soundex ( http://fr.wikipedia.org/wiki/Soundex ).

Il est cependant bien plus précis que l'algorithme d'origine car il a été spécifiquement conçu pour tenir compte des règles complexes de la prononciation française et retourne une valeur phonétique simplifiée plutôt qu'une valeur alphanumérique de longueur fixe.
Il existe 13 phonèmes simplifiés différents : A B E I J K L M R S T U et V.
Reportez-vous à la table de correspondance basique des phonèmes plus bas pour savoir à quoi ils correspondent.

Il est possible d'appliquer un certain nombre de filtres et de règles, comme par exemple de supprimer toutes les voyelles, de ne les supprimer qu'en fin de mot, ou encore de générer une chaîne de caractères de longueur fixe.
De plus, HaploPhone étant capable de traiter des séquences de mots en une seule fois, vous n'êtes pas obligé de les lui soumettre un par un.

Ce programme a été conçu à force d'expérimentations et d'essais / erreurs, et ne prétend pas avoir une approche scientifique. Néanmoins, de nombreux textes et mots lui ont été soumis afin d'en parfaire le fonctionnement.
Il se base sur un nombre conséquent de règles et d'exceptions et non pas sur le contexte, ce qui ne lui permettra pas de faire la différence entre "couvent" du verbe couver et l'édifice religieux homonyme.
Certaines concessions ont donc dû être faites et en cas de conflit, la prononciation la plus courante sera retenue.

L'intérêt de ce genre d'algorithme est par exemple de comparer 2 phrases orthographiées différemment et de pouvoir déterminer si elles sont équivalentes ou non d'un point de vue phonétique.
Ce principe est utilisé par les correcteurs orthographiques, les moteurs de recherche qui s'en servent pour faire des suggestions, et présente un intérêt en ce qui concerne l'intelligence artificielle.

Pour son fonctionnement interne, ce script utilise certains caractères en guise de marqueurs. Vous devrez donc veiller à ce qu'ils ne soient jamais utilisés dans les chaînes de caractères que vous lui soumettrez.
Ces cinq caractères réservés sont les suivants : ‹ › “ ” …

Ce script pourvoit l'eggdrop du package HaploPhone 3.0



Syntaxe

::HaploPhone::process [-makespaces] [-keepchars <caractères à préserver>] [-filters nnn] [-length n] <chaîne de caractères>

-makespaces provoque le remplacement de tous les caractères qui ne sont pas des lettres par des espaces.

-keepchars force HaploPhone à préserver les caractères que vous spécifiez.
      Par défaut, tous les caractères qui ne sont pas des lettres sont filtrés.
      Les caractères que vous excluez doivent être proprement échappés si nécessaire, notamment les caractères suivants : } { ] [ " $ \

-filters permet de définir les modes de filtrage.
      nnn est une succession de 3 chiffres ayant chacun une signification et pouvant prendre plusieurs valeurs.
         1er chiffre : mode de traitement des voyelles (vaut 1, 2 ou 3).
            1- Traitement standard des voyelles.
            2- Toutes les voyelles sont remplacées par le caractère générique "A", à l'exception des E en fin de mot.
            3- Toutes les voyelles sont supprimées. Si un mot n'est constitué que de voyelles, retourne "A".
         2ème chiffre : mode de traitement des voyelles en fin de mot (vaut 1 ou 2).
            1- Les "E" sont supprimés en fin de mot, sauf s'il ne reste qu'une lettre.
            2- Toutes les voyelles sont supprimées en fin de mot, sauf s'il ne reste qu'une lettre.
         3ème chiffre : mode de gestion des successions de voyelles (vaut 1 ou 2).
            1- Gestion standard des successions de voyelles.
            2- Si plusieurs voyelles se suivent, on ne conserve que la 1ère.
      En l'absence de l'argument -filters, les valeurs par défaut sont 111.

-length permet de définir une longueur fixe pour la valeur phonétique retournée par chaque mot.
      Si length est spécifié et qu'un mot est trop long, il sera tronqué pour atteindre la bonne longueur.
      Si length est spécifié et qu'un mot est trop court, il sera complété par des 0 pour atteindre la bonne longueur.
      Si length n'est pas spécifié ou vaut 0, la valeur aura une longueur variable dépendant de la longueur du mot.

L'ordre des arguments n'est pas important.

Dans le but d'accroître la rapidité d'exécution, la validité de la syntaxe de la commande n'est pas vérifiée. Veillez donc à la respecter scrupuleusement, sans quoi le script ne fonctionnera pas comme prévu et vous n'en serez pas explicitement averti.



Exemples

Penons un exemple :
::HaploPhone::process "ceci est un test qui fonctionne !"
-> SESIEATESTKIVAKSIAM


Péservation du découpage :
::HaploPhone::process -makespaces "ceci est un test qui fonctionne !"
-> SESI E A TEST KI VAKSIAM


En écrivant n'importe comment, on arrive au même résultat :
::HaploPhone::process -makespaces "seussies aie hein teiste ki fonksione"
-> SESI E A TEST KI VAKSIAM


On peut conserver les caractères qu'on veut :
::HaploPhone::process -makespaces -keepchars ",!" "ceci est un test, qui fonctionne !"
-> SESI E A TEST, KI VAKSIAM !


Essayons un autre exemple pour voir comment les filtres fonctionnent.
En l'absence du paramètres -filters, c'est comme si on avait -filters 111, ce qui signifie qu'on supprime les E en fin de mot :
::HaploPhone::process -makespaces "oui je crache les noyaux moins loin que vous"
-> UI J KRAJ L MUAIA MUA LUA K VU


Toutes les voyelles sont remplacées par le caractère générique "A", à l'exception des E en fin de mot :
::HaploPhone::process -makespaces -filters 211 "oui je crache les noyaux moins loin que vous"
-> A J KRAJ L MA MA LA K VA


Toutes les voyelles sont supprimées. Si un mot n'est constitué que de voyelles, retourne "A" :
::HaploPhone::process -makespaces -filters 311 "oui je crache les noyaux moins loin que vous"
-> A J KRJ L M M L K V


Toutes les voyelles sont supprimées en fin de mot, sauf s'il ne reste qu'une lettre :
::HaploPhone::process -makespaces -filters 121 "oui je crache les noyaux moins loin que vous"
-> U J KRAJ L M M L K V


Si plusieurs voyelles se suivent, on ne conserve que la 1ère :
::HaploPhone::process -makespaces -filters 112 "oui je crache les noyaux moins loin que vous"
-> U J KRAJ L MU MU LU K VU


Longueur fixée à 4 :
::HaploPhone::process -makespaces -length 4 "oui je crache les noyaux moins loin que vous"
-> UI00 J000 KRAJ L000 MUAI MUA0 LUA0 K000 VU00



Table de correspondance basique des phonèmes

A = A / O / AN / IN / ON
B = B / P
E = E / AI / OE
I = I
J = J / CH / TCH
K = K / GU
L = L
M = M / N
R = R
S = S / X / Z (dans certains cas seulement pour X, dans les autres cas il équivaut à KS)
T = T / D
U = U / OU
V = V / F



Changelog

3.0



Téléchargement

HaploPhone v3.0

lien vers l'ancienne version : Menz Agitat's Soundex

Laissez vos commentaires / questions / suggestions / rapports de bugs ici.

©2005-2016 Menz Agitat