DICTIONNAIRE DE RIMES

Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
- - Dernière réponse : masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011
- 14 déc. 2007 à 17:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45017-dictionnaire-de-rimes

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++
malalam
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18 -
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.
cs_caviar
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3 -
tiens une note aussi pour ma part :)
cs_caviar
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3 -
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
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011
-
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
opossum_farceur
Messages postés
147
Date d'inscription
lundi 16 août 2004
Statut
Membre
Dernière intervention
14 novembre 2009
-
@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++
rambc
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
-
Merci pour toutes les infos.
guill76
Messages postés
193
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
3 juin 2016
-
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.
opossum_farceur
Messages postés
147
Date d'inscription
lundi 16 août 2004
Statut
Membre
Dernière intervention
14 novembre 2009
-
@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++
rambc
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
-
Peux-tu en dire un tout petit peu plus sur la façon dont tu as codé cela ? As-tu utilisé SOUNDEX ?

Merci.