Bonsoir,
J'ai un fichier texte (il contient un mot sur chaque ligne), je parcours ce dernier et à chaque ligne je fais un traitement sur ce mot. Puis, je transforme ce mot en une suite de sous mot (dans une liste: ArrayList<String> )
D'autre part j'ai une map qui contient l'ensemble de sous chaine de tout le fichier LinkedHashMap<String, Integer[]> = une chaine (key) + un tableau d'entier.
Mon objectif , c'est de parcourir ces deux structures de données (map et liste), pour chaque sous chaine de la liste , je cherche son existance dans le map. Un compteur s'incrémente et un calcul se fait (le produit des trois fonctions mentionnées)pour chaque sous mot.
Mon problème c'est que le traitement éffectué se fait seulement pour la première sous chaine du mot (dans notre cas la taille de sous chaine =1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public static void GenerationFicher(String fichier, int x, LinkedHashMap<String, Integer[]> m, BufferedWriter pw) throws FileNotFoundException, IOException { ArrayList<String> motExtré = new ArrayList<>(); Scanner sc = new Scanner(new File(fichier)); String s = ""; while (sc.hasNextLine()) { String line = sc.nextLine(); String mot = sousChaine(line); motExtré = ExtraNgram(mot, x); String ss = ""; int compteurGram = 1; //comparer le contenu de la liste et de la map for (String me : motExtré) { for (Map.Entry<String, Integer[]> e : m.entrySet()) { if (me.equals(e.getKey())) { s = compteurGram + ":" + (nbrFqGram(mot, me) * chiffreGram(me) * positionGram(mot, me)); compteurGram++; } ss = ss + " " + s; } ss = target(line) + ss + " #" + mot; pw.write(ss); pw.newLine(); } } }
la taille peut vari entre 1 et 3 carcatères.
Pour chaque ligne du fichier : par exemple pour le mot: bjr
Résultat souhaîté: -1 1:2 2:4 3:1 #bjr
Résultat obtenu: -1 1:2 #bjr
Donc le traitementest fait seulement pour le prmier gram (dans nore cas 1 seul caracteres) --> b
Merci de m'aider à resoudre ce problème (normalement il réside au niveau de l'une des boucles for)
Partager