Bonjour à tous,
J'utilise la fonction .find pour compter un nombre d'occurences dans un gros corpus (50 000 lignes comptant de 10 à 1000 caractères).
Donc je fais un .findnext, jusqu'à ce que j'ai une erreur, et je passe au suivant
Je dois faire ce traitement sur environ 1.8 millions de tests et le temps de calcul est a vu de nez de plusieurs centaines d'heures. Par ailleurs l'élément cherché est de type "mot1*mot2"
Bien sûr je parallélise l'opération sur plusieurs postes de travail et j'ai bien sûr mis des screenupdating false mais je cherche des idées ou solution pour gagner en temps de calcul.
-> est ce que du VBA Access me permettrait d'aller plus vite ? de combien de x ?
-> est ce qu'en organisant le problème autrement je peux aller plus vite ? par exemple découpage en mots et find mot à mot sans expression régulière ? (split de la ligne avec 1 mot par colonne et .find en option cellule entière) j'ai peur que le find sur tableau soit difficile à gérer...
-> autre idée utiliser une table de codification mot/nombre et "crypter" ma table avec des nombres, avec en premier les mots les + fréquents ? cette solution me paraît sans doute bonne car permettrait de réduire la taille des entrées du corpus et de le débruiter au passage
un petit extrait du code
N'hésitez pas à poser des questions si c'est un peu confus. Il s'agit vous l'aurez peut être compris d'un sujet de linguistique informatique.
Tout élément bienvenue.
Merci
Gorz'
J'utilise la fonction .find pour compter un nombre d'occurences dans un gros corpus (50 000 lignes comptant de 10 à 1000 caractères).
Donc je fais un .findnext, jusqu'à ce que j'ai une erreur, et je passe au suivant
Je dois faire ce traitement sur environ 1.8 millions de tests et le temps de calcul est a vu de nez de plusieurs centaines d'heures. Par ailleurs l'élément cherché est de type "mot1*mot2"
Bien sûr je parallélise l'opération sur plusieurs postes de travail et j'ai bien sûr mis des screenupdating false mais je cherche des idées ou solution pour gagner en temps de calcul.
-> est ce que du VBA Access me permettrait d'aller plus vite ? de combien de x ?
-> est ce qu'en organisant le problème autrement je peux aller plus vite ? par exemple découpage en mots et find mot à mot sans expression régulière ? (split de la ligne avec 1 mot par colonne et .find en option cellule entière) j'ai peur que le find sur tableau soit difficile à gérer...
-> autre idée utiliser une table de codification mot/nombre et "crypter" ma table avec des nombres, avec en premier les mots les + fréquents ? cette solution me paraît sans doute bonne car permettrait de réduire la taille des entrées du corpus et de le débruiter au passage
un petit extrait du code
Code:
While rowcurrent > rowini 'boucle infinie seulement interrompue si erreur
Selection.FindNext(After:=ActiveCell).Activate
rowcurrent = ActiveCell.Row
ThisWorkbook.Sheets("Tableau").Cells(i, j) = ThisWorkbook.Sheets("Tableau").Cells(i, j) + 1 'on incrémente à chaque occurrence trouvée
Wend
N'hésitez pas à poser des questions si c'est un peu confus. Il s'agit vous l'aurez peut être compris d'un sujet de linguistique informatique.
Tout élément bienvenue.
Merci
Gorz'
Dernière édition: