Logique avec cerveau ramoli.... fonctionne pas bien - VB/VBA/VBS - Programmation
Marsh Posté le 29-10-2002 à 23:22:09
je verrais des biens des boucles for imbriquées pour la construction de ton tableau.
Mais je reconnais ne pas avoir tout compris à ton problème ..
Marsh Posté le 30-10-2002 à 09:32:31
Pq C ds la rubrique VB ? C +tôt de l'algo...
Pour ton pb :
autant de tableaux que de mot ds ta phrases contenant les équivalance
Pour faire générique un tableau de tableau dynamique ?
puis aprés autant de boucles que de tableaux
exemple pour ton truc :
T1 = ("chaîne", "chaines", "chaines", "chaine" ) |
si C pour un moteur de recherche ça sucks comme méthode (équivalence de mot)
Marsh Posté le 30-10-2002 à 12:53:10
Une technique est de construire un dictionnaire phonétique, en associant les différentes possibilités à une phonétique. Mais il faut prévoir tout les cas, où avoir un algo permettant d'anticiper ces nouveaux cas. A toi de voir.
Marsh Posté le 30-10-2002 à 13:00:28
drasche a écrit a écrit : Une technique est de construire un dictionnaire phonétique, en associant les différentes possibilités à une phonétique. Mais il faut prévoir tout les cas, où avoir un algo permettant d'anticiper ces nouveaux cas. A toi de voir. |
ça C beaucoup mieux
Marsh Posté le 30-10-2002 à 13:41:33
c est pas tout a fait pour un moteur de recherche... ouais
pour la phonétique , non je cherche deja les accents et feminin masculin...
SDF poire , mon probleme est que les mots sortent d'un recordset donc je ne sais combien il y a de mots equivalent et le nombre de mots dans la phrase differe a chaqe fois.. donc je ne peux pas creer des tableaux dynamique a la volée ??
Marsh Posté le 30-10-2002 à 13:46:18
oh si tu peux
ça change quoi que les mots soit ds une table ? tu connais bien le nombre qu'il y a ds une table ou le nombre d'élément que renvois une requete
et pour les boucles avec de la récurence ça doit rouler mais ça va être super lent
Marsh Posté le 30-10-2002 à 13:50:39
tu peux aussi te débarrasser des accents, trémas et compagnie en faisant du search and replace avant de lancer ton process.
Marsh Posté le 30-10-2002 à 13:53:40
drasche a écrit a écrit : tu peux aussi te débarrasser des accents, trémas et compagnie en faisant du search and replace avant de lancer ton process. |
le but C de convertir en une chaine minimale et la + simple possible et d'en suite de faire les comparaison
Sur le net il existe déjà des fonctions et des tables pour faire ces remplacements...
Marsh Posté le 30-10-2002 à 14:07:22
plusieurs trucs,
- d'abord les accents, trema sont un prob, les feminin, pluriels .. sont un autre prob. l'un ne modifie que un caratère, l'autre modifie le mot soit par le nombre de caratères, soit les caractères, (ex: vélos, vélo, travail, travaux)
- tu vas avoir des prob avec les apostrophes et la gestion des syntagmes
- le prob que tu poses (du moins en partie) n'a pas encore trouvé de solution dans une appli tps réel, sauf ...
Bonne chance
Marsh Posté le 30-10-2002 à 14:18:28
Je connais un système chez notre client où la recherche de noms propres se fait sur base de la "phonétisation". Chaque critère de recherche est converti en phonétique, et chaque nom dans leur DB a une association avec un mot "phonétisé". Evidemment, ça va te donner toutes les variantes d'un nom donné, même les plus improbables parfois. Le seul prob pour eux c'est que c'est rédigé en ASM
Question démonstration, ça se révèle efficace puisque les fautes d'orthographes n'handicapent pas, mais on a trouvé un bug gênant récemment et ils n'ont personne qui connaît l'ASM pour corriger
Marsh Posté le 30-10-2002 à 14:48:08
ouais mais drasche , en fait mon probleme je n'ai pas besoin de chercher les mots par leur phonétique, c'est deja ca en moins.. J ai besoin seulement du mot et ses equivalents
SDF[poire]. oui je sais combien j'ai de mots dans mon recordset, mais ...
Si j ai trois mots dans ma phrase.
et que le premier a deux possibilités.
que le deuxieme a trois possibilités
et que le troisieme a 5..
et que je crée a la volée trois tableaux..
il faut que j'imbrique 3 "FOR" si je suis ton raisonnement ?
Mais il faut que je fasse ca dynamiquement..
car la phrase d'apres peut contenir 7 mots avec 2 possibilités par mot ...
Comment je fais ?
Marsh Posté le 30-10-2002 à 14:50:03
zetoune a écrit a écrit : ouais mais drasche , en fait mon probleme je n'ai pas besoin de chercher les mots par leur phonétique, c'est deja ca en moins.. J ai besoin seulement du mot et ses equivalents SDF[poire]. oui je sais combien j'ai de mots dans mon recordset, mais ... Si j ai trois mots dans ma phrase. et que le premier a deux possibilités. que le deuxieme a trois possibilités et que le troisieme a 5.. et que je crée a la volée trois tableaux.. il faut que j'imbrique 3 "FOR" si je suis ton raisonnement ? Mais il faut que je fasse ca dynamiquement.. car la phrase d'apres peut contenir 7 mots avec 2 possibilités par mot ... Comment je fais ? |
C là ou rentre en jeux la récurrence
ya ptet un aut moyen mais je vois pas
Marsh Posté le 30-10-2002 à 14:50:35
barbella.. c'est justement ca..
j'enleve tous les accents.
et apres je regarde si le mots a une equivalence.. (c'est de la que je peux sortir les feminins et pluriels)
Marsh Posté le 30-10-2002 à 15:00:39
principe de récurrence :
function mafonc(s as string) as string
.
.
.
if pasfini then mafonc(MyStr)
.
.
.
end
Avec ça tu devrais pouvoir t'en sortir
Marsh Posté le 30-10-2002 à 15:03:02
excuse, j'avais pas vu que tu parlais de récurrence...
ouais.. je vais essayer de me lancer par la .
Marsh Posté le 30-10-2002 à 15:03:20
sinon en stockant les équivalences ds un tableau de tableau ça doit passer aussi (avec 3 for ?)
Marsh Posté le 30-10-2002 à 15:06:44
ouais... en fait pour l'instant. c'est ca je joue avec un tableau bi dimentionnel.qui contient des tableaux de chaines.
Marsh Posté le 30-10-2002 à 15:14:38
zetoune a écrit a écrit : ouais... en fait pour l'instant. c'est ca je joue avec un tableau bi dimentionnel.qui contient des tableaux de chaines. |
ça doit être possible comme ça avec 3 ou 4 for imbriqué
C à toi de te triturer le cerveau
(en gardant à l'esprit que les boucles sont beaucoup + performantes que la récurence)
Marsh Posté le 30-10-2002 à 15:44:09
ouais, ben je viens de le finir.. avec des boucles imbriquées..
c'est un peu barbare comme je le fais, mais cela fonctionne.
Je pense que je devrais optimiser ma requete pour obtenir mes equivalence.. car ce n'est pas terrible.
Marsh Posté le 30-10-2002 à 15:45:36
juste comme ca..
Est ce que les procédures stockées sont plus rapide que les requetes normales ?
ou c'est pareil ?
Marsh Posté le 30-10-2002 à 15:50:39
zetoune a écrit a écrit : juste comme ca.. Est ce que les procédures stockées sont plus rapide que les requetes normales ? ou c'est pareil ? |
jvois pas ce que tu veux dire
Marsh Posté le 30-10-2002 à 15:55:10
ben si je fais ma requete dans une procédure stockée...
Est ce que c'est plus rapide que si je fais la requete directement
ex : StrSQL = " EXEC MA_PRODEDURE @MonParametre = '" & MaValeur & "'"
plutot que
StrSQL = "SELECT * FROM Table WHERE MonChamp = '" & MaValeur & "'"
J'ai lu quelque part que le fait d'utiliser des procédures stockés augmentait la rapidité de l'éxecution car SQLserver (dans mon cas) mettait la procédure en cache pour la réutiliser s'il faut..
Parce que, perso je ne vois pas de différence.
Marsh Posté le 30-10-2002 à 16:00:59
La procédure stockée (stored procedure) est intéressante si tu fais plusieurs opérations SQL d'affilée, cela limite le nombre d'informations qui transitent sur le réseau. Si le résultat d'une requête dépend d'une autre par exemple, tu peux mettre le tout dans une PS et l'appeler quand c'est nécessaire.
Si par contre tu fais une seule requête mais complexe, tu peux utiliser les vues (views) qui sont compilées et interprétées comme de vraies tables (donc plus rapide).
Marsh Posté le 30-10-2002 à 16:08:21
Drasche.. ben en fait c'est parceque je suis parti sur une structure de table un peu farfelue.. donc pour sortir mes equivalences, je vais trois SELECT dans la meme requete imbriqués avec des "UNION"
donc peut etre bien que cela pourrait m'interesser tes "views"
mais pourrait tu etre un peu plus clair, car je ne connais pas ca.. pis ca m interesse...
(stp )
EDIT : je vois bien "view" dans SQL mais comment je fais pour transformer ma SP en "view" comment je fais pour lui passer mon parametre et l'appeler de VB ?
Marsh Posté le 30-10-2002 à 16:39:04
oooops là sorry, j'ai introduit le concept, mais malheureusement, je n'en connais pas plus. ya pas de wizard pour faire ça? ou une petite doc bien expliquée?
Marsh Posté le 30-10-2002 à 16:41:06
non j en trouve pas..
pis j'ai l'impression qu 'il ne gere pas les Union de table..
En tout cas, merci tout le monde... ca fonctionne..
manque plus que la vitesse maintenant.
Marsh Posté le 30-10-2002 à 16:43:31
au fait c'est quoi la DB?
Marsh Posté le 30-10-2002 à 16:48:43
zetoune a écrit a écrit : SQLserver |
Euh ça fonctionne le UNION sur SQLServer...
Marsh Posté le 30-10-2002 à 16:52:52
crotte
Marsh Posté le 29-10-2002 à 22:33:41
C'est un peu compliqué dans ma tête, donc cela va être dur de l'expliquer correctement..
Voila. Alors j'ai une phrase avec n mots...
et chacun de ces n mots peuvent avoir de 0 à m equivalences.
(genre chaine a 3 équivalences, chaîne, chaines, chaînes)
Je cherche a avoir le résultat de la phrase avec toutes les possibilités d'équivalence dans un tableau
exemple
chaine a 3 équivalents chaîne, chaines, chaînes
vélo a 3 équivalents velo,vélos,velos
ma chaine de vélo =>
-ma chaîne de vélo
-ma chaines de vélo
-ma chaînes de vélo
-ma chaine de velo
-ma chaîne de velo
-ma chaines de velo
-ma chaînes de velo
-ma chaine de velos
-ma chaîne de velos
-ma chaines de velos
-ma chaînes de velos
-ma chaine de vélos
-ma chaîne de vélos
-ma chaines de vélos
-ma chaînes de vélos
Comment je fais ?? Ma technique est completement foireuse donc je n'en ferais meme pas part. Quelqu'un a une idée ?