Salut a tous,
j'aurai besoin d'aide en Thread, je souhaite paralelliser mon programme pour que ça devienne plus rapide. Donc voila j'ai trois classe :
Classe 1 : classe main
La classe 2 : W2VEstimator qui a la méthode suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 W2VEstimator w2v_sim = new W2VEstimator(wordVectors); HashMap<Integer, Double> topic_sim_avg = new HashMap<Integer, Double>(); double scores = 1; for(Entry<Integer, HashSet<String>> entry : map_words.entrySet()) { Integer k = entry.getKey(); Double sim = w2v_sim.prob(word_m, entry.getValue()); topic_sim_avg.put(k, sim); scores += sim; }
en enfin la classe 3 : Similarity qui fait a la methode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public double prob(String w_i, HashSet<String> words_t_i){ Similarity sim = new Similarity(wordVectors); double score_prob = 1; Iterator<String> it = words_t_i.iterator(); while (it.hasNext()) { score_prob += sim.computeSim(w_i, it.next()); } score_prob = score_prob/words_t_i.size(); return score_prob; }
Donc en gros , mon algo est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public double computeSim(String w_1, String w_2){ double score_sim = 0.0; score_sim = ...... return score_sim; } }
Algorithm :
j'ai un ensemble K tel que chaque element de K est un ensemble qui contient des termes
Je veux calculer une similarité (une methode) entre un term t1 et les termes de chaque ensemble K
for each k in setK
for each elt in set k
res += compute(t1, elt)
les methodes que j'ai fait decrivent un peu ce process
et je souhaite le faire de façon parallellent donc un thread pour chaque setK et un thread pour chaque comput(t1,elt) et a la fin je somme les resultats
pour avoir pour K1, res, K2, res ..... ainsi de suite
J'ai essayé plein de truc mais ça me marche pas
merci beaucoup pour votre aide
Partager