Bonjour,
dans le cadre d'un projet universitaire, je dois implémenter un programme me permettant de dénombrer le nombre d'occurrences d'un trigramme.
Pour vous aider à comprendre, voici un petit exemple :
"Salut, comment ça va? Bof j'ai besoin d'aide."
donne en résultat :
Salut|comment|ça|1
comment|ça|va|1
ça|va|bof|1
va bof||j'ai|1
etc.
(on ne s'inquiète pas de la ponctuation)
En gros, nous avons mot1|mot2|mot3|nombreOccurenceDansLeTexte
Après avoir lu ce topic qui ressemble à mon problème : http://www.developpez.net/forums/d70...odele-langage/, j'ai implémenter une première solution utilisant une simple liste de trigrammes (en java).
Malheureusement, et c'est le but de la manoeuvre, il faut pouvoir analyser et stocker des données de "gros" textes. Nous avons par exemple, un fichier de 80 Mo.
Mon implémentation en liste montre que ma structure de données ne peut pas gérer cette masse de données. (exception heap stack ou non lancement du programme) Car, effectivement, sur une petite texte de 200 mots, ça fonctionne bien...
J'aimerais savoir si vous avez une idée de structure ? En sachant qu'on ne supprimer jamais dans l'implémentation.
J'ai pensé à plusieurs structures que l'on a vu en cours :
- les AVL, où la complexité de la recherche pourrait permettre de gagner du temps... (j'utiliserais dans ce cas l'ordre alphabétique du mot1 puis du mot2 et du mot3 pour le stockage)
- les skip listes
et après quelques recherches google - les arbres 2 3 4 (même si je ne connais pas bien cette structure)
Qu'en pensez vous ? Avez vous besoin de plus d'explications ?
Merci par avance.
Cordialement,
Tid.
Partager