Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DICTIONNAIRE DE RIMES


Information sur la source

Catégorie :Chaîne de caratère Classé sous : php5, dictionnaire, phonétique, rime, ajax Niveau : Initié Date de création : 11/12/2007 Date de mise à jour : 15/12/2007 00:26:05 Vu / téléchargé: 34 632 / 529

Note :
9,25 / 10 - par 4 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

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/

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

15 décembre 2007 00:26:06 :
Mise à jour du 15/12/2007 avec : - amélioration du tri des mots contenant des caractères accentués - la variable $_POST['expr'] est désormais passée en argument à la classe - ajout de quelques commentaires

Commentaires et avis

signaler à un administrateur
Commentaire de rambc le 12/12/2007 16:07:24

Peux-tu en dire un tout petit peu plus sur la façon dont tu as codé cela ? As-tu utilisé SOUNDEX ?  

Merci.

signaler à un administrateur
Commentaire de opossum_farceur le 12/12/2007 18:46:03

@RAMBC,

Je n'ai pas utilisé SOUNDEX mais une partie de la technique, appelée TEXT TO SPEACH (TTS pour les initiés) et dont le propos est de faire prononcer, grâce un synthétiseur vocal (comme le logiciel MBROLA), des textes contenus dans de banals fichiers au format "txt"; ces textes, pour être vraiment prononçables, doivent cependant être préalablement phonétisés, et c'est là qu'intervient un script comme "text2phone" (le script écrit en Perl dont j'ai indiqué le lien). Le synthétiseur vocal génère en sortie un fichier audio au format "wav" (ou autre, selon votre OS) avec lequel on attaque votre logiciel de lecture audio favori.
Cette technique est bien connue des personnes mal-voyantes, et Microsoft propose depuis WXP la possibilité de la mettre en oeuvre à moindre frais, ceci dit, en fouillant un peu sur le net, on trouve également des systèmes en open-source.
Mon seul mérite consiste à avoir étudié ce "text2phone" et en avoir isolé juste la partie qui m'intéressait pour phonétiser mon dictionnaire. La base de connaissance, à l'origine sous forme de fichier texte, est maintenant au format xml, le nom des tags reprend celui des clés du tableau associatif d'origine (voir le fichier "rules.xml"); la base de connaissances est une collection de règles basées sur des expressions régulières, chaque règle associant une phonème avec ce qui peut la précèder et lui succéder dans un mot.

A++

signaler à un administrateur
Commentaire de guill76 le 12/12/2007 20:07:46 9/10

Salut,
j'étais intrigué alors j'ai testé et regardé ton code et ses ressources.
ça a l'air assez optimisé, même si certaine requêtes peuvent être longues à l'exécution notament pour les rimes les plus fréquentes.
En tout cas c'est une technique sympa certes fastidieuse pour concocter le dico et le fichier de regles: Mérite à celui qui a fait les fichiers textes avec tous ces mots phonétisés et transcrit les regexp s'y rapportant.
Bon j'ai pas l'habitude de noter les sources mais pour l'algo : 9.

signaler à un administrateur
Commentaire de rambc le 13/12/2007 00:35:12

Merci pour toutes les infos.

signaler à un administrateur
Commentaire de opossum_farceur le 13/12/2007 01:24:36

@GUILL76,

Merci pour la note.
Optimiser les rimes les plus fréquentes aurait pû être utile lors de la phonétisation de tout le dictionnaire, opération qui n'a été exécutée qu'une fois et qui a dû prendre entre 10 et 20 minutes. Dans le cas du script que j'ai posté et où le dictionnaire est déjà phonétisé, seule l'expression tapée dans la zone de saisie subi ce traitement et là franchement, que les rimes soient fréquentes ou pas ne change pas grand chose. A ce niveau, j'ai plutôt axé l'optimisation sur la recherche dans le dico : parcours dichotomique sur un ensemble trié dont les éléments sont écrits à l'envers (et oui, ce qui nous intéresse, c'est la fin des mots!), et aussi fractionnement de l'ensemble des données sur 4 fichiers.
Pour ce qui est des regexp apparaissant dans "rules.xml", celles-ci peuvent rendre les règles difficiles à comprendre, mais il faut savoir que ces dernières ont aussi dû subir une phase d'optimisation et qu'elles se présentaient à l'origine sous un aspect plus engageant (voir le fichier "base" dans "perl_tts.zip").

A++

signaler à un administrateur
Commentaire de masternico le 13/12/2007 13:47:22 9/10

Salut, je n'ai pas put installer le code car je suis bridé en php4 (sniff). Par contre j'ai été voir l'example donné qui marche plutôt bien même si j'aurais préféré avoir un tri alphabétique des résultats (c'est plus facile de trouver ce que l'on chercher).

Sinon, dans l'ensemble, c'est propre, mais un peut trop "javélisé". Je pense qu'un peut plus de commentaires aurait été bénéfique en compréhention.

Enfin, dernière petite chose qui m'a chagrinée, c'est l'utilisation de la variable $_POST['expr'] directement dans la classe. Ce qui fait que je suis obligé de modifier la déclaration si je veux utiliser autre chose, genre $_GET['trucmuche'] (rien ne m'oblige a utiliser le POST):
/////////////
try {
$rime=new rime($_POST['expr']);
}
catch(Exception $e) {
   echo $e;
}
/////////////
aurait été plus propre à mon sens

Voila

Bonne continuation

signaler à un administrateur
Commentaire de caviar le 13/12/2007 17:30:48

EXCELLENT  !!!!
j'avais commencé un travails comme ça basé sur la version francisée de soundex mais ça ne marchais pas aussi bien :)
very good ! je bookmark ton site j'espère que tu vas le laisser en place :)
@+
merci

signaler à un administrateur
Commentaire de caviar le 13/12/2007 17:35:32 10/10

tiens une note aussi pour ma part :)

signaler à un administrateur
Commentaire de malalam le 13/12/2007 20:30:22 administrateur CS 9/10

Hello,

c'est un code très intéressant. Bon, pour être honnête, c'est l'algo phonétique qui est le plus intéressant...mais j'aime bien l'idée du code! Pour avoir bossé sur la version francisée de soundex justement, et l'adaptation php de phonex, je suis très positif sur ce que tu nous présente :-) Sincèrement intéressant.

signaler à un administrateur
Commentaire de opossum_farceur le 13/12/2007 22:10:38

@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++

signaler à un administrateur
Commentaire de rambc le 13/12/2007 23:32:58

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 ?

signaler à un administrateur
Commentaire de opossum_farceur le 14/12/2007 02:43:15

@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++

signaler à un administrateur
Commentaire de rambc le 14/12/2007 11:47:34

Merci pour cette info...

signaler à un administrateur
Commentaire de masternico le 14/12/2007 17:35:44

superbe, c'est beaucoup mieux comme ça...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

differnec entre php 4 et php5 [ par hardelgylls ] Bonjourpetite question :j'ai passer un oral et l'examinateur m'a demandé quel était la différence entre php4 et php5. et la gros blanc, est ce que qqu Doc PHP5 sniff sniff [ par slhuilli ] Bonjour, Bonsoir,Je suis a la recherche d'un PDF qui recenserait les mots-clefs + explications (bref un bouquin complet) sur PHP 5 qui parait-il est Pb passage PHP4 -> PHP5 [ par Galmiza ] Salut,J'ai acheté un bouquin pour débuter le PHP.J'ai suivi a la lettre les instructions du livre:-installer EasyPHP 1.7-installer PHP 5.0..-lancer Ea Cohabitation PHP4 PHP5 sur même serveur ! [ par Zacland ] Ce n'est pas une question, mais je me doute que certaines personnes veulent essayer de faire cohabiter 2 versions de PHP sur un même serveur Apache... Un caractére se trouve t'il dans ma chaîne... [ par juki_webmaster ] Bonsoir,Je travaille depuis 14h cette apres-midi sur une fonction alternative d'une fonction connu et disponible uniquement sur php5, je fait cette fo PHP5 en PHP3 [ par el shaddai ] J'ai développé une partie de site en PHP5. MAlheureusement , chargé chez FREE, ils n'utilisent que PHP3. Y a t-il une manip simple pour qur du PHP5 pa PHP5 et MySQL 4.1.7 [ par TMT ] J'ai installé PHP5 et MySQL sur mon Windows XP avec IIS. J'ai bien activé le module php_mysql dans le fichier php.ini Là mon problème est qu-à chaque php4 vers php5 [ par aurelielaugraud ] Bonjour, Je suis passée de php4 à php5 pour utiliser la librairie graphique GD. Seulement, un programme que j'avais précédemment faire refuse de fonct Modification d'un script pour conformité avec php4 et/ou php5 [ par christobal ] Bonjour, depuis plusieurs années j'utilise le même script pour mes sites.Maitenant avec les derrnieres version de PHP4 et PHP5 ce script ne Connection mysql avec php5 [ par Chess0 ] Bonjour, j'ai installé récemment la dernière version de mysql ainsi que la dernière version de php (5). J'ai essayé la connec


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.