à la suite de quoi le "é" est considéré comme un "e" au niveau du tri.
A++
rambc
Messages postés224Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention29 mars 2009 13 déc. 2007 à 23:32
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és147Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention14 novembre 2009 13 déc. 2007 à 22:10
@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és10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 déc. 2007 à 20:30
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és329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 13 déc. 2007 à 17:35
tiens une note aussi pour ma part :)
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 13 déc. 2007 à 17:30
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és487Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention 1 septembre 2011 13 déc. 2007 à 13:47
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és147Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention14 novembre 2009 13 déc. 2007 à 01:24
@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és224Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention29 mars 2009 13 déc. 2007 à 00:35
Merci pour toutes les infos.
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 12 déc. 2007 à 20:07
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és147Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention14 novembre 2009 12 déc. 2007 à 18:46
@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és224Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention29 mars 2009 12 déc. 2007 à 16:07
Peux-tu en dire un tout petit peu plus sur la façon dont tu as codé cela ? As-tu utilisé SOUNDEX ?
14 déc. 2007 à 17:35
14 déc. 2007 à 11:47
14 déc. 2007 à 02:43
"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++
13 déc. 2007 à 23:32
13 déc. 2007 à 22:10
"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++
13 déc. 2007 à 20:30
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.
13 déc. 2007 à 17:35
13 déc. 2007 à 17:30
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
13 déc. 2007 à 13:47
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
13 déc. 2007 à 01:24
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++
13 déc. 2007 à 00:35
12 déc. 2007 à 20:07
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.
12 déc. 2007 à 18:46
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++
12 déc. 2007 à 16:07
Merci.