Dictionnaire de rimes

Soyez le premier à donner votre avis sur cette source.

Vue 67 166 fois - Téléchargée 1 279 fois

Description

L'utilisation de ce script est d'une simplicité élémentaire.
Par exemple, pour trouver les mots rimant avec "élémentaire", on tape "taire", et on obtient des résultats comme :
altère, déblatères, panthère, périanthaire, sectaire, terre, waters, zoanthaires, éthers, etc...
Si l'on désire une rime moins riche, on tape alors "aire", mais on pourrait tout aussi bien taper "ert" (comme "concert").

Vous l'aurez compris, ce script repose sur la phonétique.

Le système de codage des phonèmes utilisé est celui du logiciel de TTS (Text To Speach) MBROLA.
Les règles de phonétisation sont consignées dans la base de connaissance du fichier "rules.xml", qu'exploite la fonction "phonetize()" du script, à l'origine écrite en PERL par David HAUBENSACK :
http://tcts.fpms.ac.be/synthesis/mbrola/tts/French/perl_tts.zip

Le dictionnaire, d'un "poids" de 100000 mots répartis sur 4 fichiers, est phonétisé et trié à l'avance (et les transcriptions écrites à l'envers!), afin d'optimiser les temps de recherches; seule en fait la syllabe dont on désire les rimes est phonétisée lors de l'exécution du script.

Bien entendu, il arrive au script de se tromper, ou d'oublier des mots : l'erreur souvent est dûe à la base de connaissance qui, malgré ses 303 règles, peut avoir négligé certaines combinaisons, mais aussi, et tout le monde le sait, la langue française est une langue comportant davantage d'exceptions que de règles!
Si l'on reprend l'exemple du début avec "aire", on ne trouvera pas le mot "nerf", pourtant correct...

La démo :
http://michel.vanthodiep.free.fr/dico/

Source / Exemple :


voir->zip

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011
-
superbe, c'est beaucoup mieux comme ça...
rambc
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
-
Merci pour cette info...
opossum_farceur
Messages postés
147
Date d'inscription
lundi 16 août 2004
Statut
Membre
Dernière intervention
14 novembre 2009
-
@RAMBC,

"on pourrait associer à la liste des résultats une autre avec les motrs sans accent. Non ?"

Une solution à ce problème consiste à utiliser l'argument "sort_flags" de la fonction "sort".
Dans la fonction "send" de la classe, le code :

sort($arr);

devient :

setlocale(LC_ALL,french);
sort($arr,SORT_LOCALE_STRING);

à la suite de quoi le "é" est considéré comme un "e" au niveau du tri.

A++
rambc
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
-
Pour comparer les mots sans les accents, il suffit de faire une comparaison de ces mots sans leurs accents. Quelle lapalicade ! Plus précisément, pour comparer écart et essai, on compare ecart et essai. Concraitement, on pourrait associer à la liste des résultats une autre avec les motrs sans accent. Non ?
opossum_farceur
Messages postés
147
Date d'inscription
lundi 16 août 2004
Statut
Membre
Dernière intervention
14 novembre 2009
-
@MASTERNICO,
"je n'ai pas put installer le code car je suis bridé en php4"
Et là PHP5 est nécessaire à cause de l'extension "SimpleXML".

"j'aurais préféré avoir un tri alphabétique des résultats"
Les résultats sont triés par ordre alphabétique; cependant tu as dû il me semble être abusé par les mots commençant par des caractères accentués, qui sont rangés après les mots commençant par "z", c'est ainsi que fonctionne la fonction "sort()".
Cependant améliorer le tri de manière à positionner les caractères accentués juste après ceux qui ne le sont pas (ou, autre approche, faire comme s'ils ne l'étaient pas!), c'est une idée à creuser.

"Je pense qu'un peut plus de commentaires aurait été bénéfique en compréhention."
C'est vrai, mais j'ai eu peur de devoir écrire un roman à chaque ligne.

"l'utilisation de la variable $_POST['expr'] directement dans la classe"
T'as encore raison, d'ailleurs il y a peu de temps, c'était comme tu le préconises, et je testais l'existence de la variable en dehors de la classe avec un "die" en cas d'échec; et puis j'ai jugé plus rationnel de centraliser toutes les erreurs dans le bloc try-catch.

@CAVIAR,
Merci pour la note.

@MALALAM,
"c'est l'algo phonétique qui est le plus intéressant"
Tout à fait, d'ailleurs, si tu veux creuser un peu le sujet, l'étude du script dont j'ai donné l'adresse me semble tout à fait indiquée; celui-ci, malgré ses quelques centaines de lignes de code est fonctionnel et permet, s'il est mis en relation avec le synthétiseur vocal MBROLA, d'exécuter la prononciation de n'importe qu'elle phrase en français.

A++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.