@@ -83,6 +83,9 @@ def __init__(
8383 self .parallel_processes = parallel_processes
8484 self .plain_node2vec = plain_node2vec
8585
86+ # see https://stackoverflow.com/questions/53417258/what-is-workers-parameter-in-word2vec-in-nlp
87+ self .gensim_workers = max (self .parallel_processes - 1 , 12 )
88+
8689 def _initialize_embeddings (self , graphs ):
8790 """
8891 Compute normal node2vec embedding at timestep 0.
@@ -104,7 +107,7 @@ def _initialize_embeddings(self, graphs):
104107 min_count = 0 ,
105108 sg = 1 ,
106109 seed = self .seed ,
107- workers = self .parallel_processes ,
110+ workers = self .gensim_workers ,
108111 )
109112
110113 embedding = Embedding (model .wv .vectors .copy (), model .wv .index_to_key .copy ())
@@ -119,6 +122,10 @@ def find_evolving_nodes(current_graph, previous_graph):
119122 We compute the output of equation (1) of the paper, i.e.
120123 ∆V_t = V_add ∪ {v_i ∈ V_t | ∃e_i = (v_i, v_j) ∈ (E_add ∪ E_del)}
121124 """
125+ # find V_add ie nodes that were added
126+ added_nodes = {
127+ n for n in current_graph .nodes () if n not in previous_graph .nodes ()
128+ }
122129
123130 # find edges that were either added or removed between current and previous
124131 added_edges = {
@@ -129,11 +136,6 @@ def find_evolving_nodes(current_graph, previous_graph):
129136 }
130137 delta_edges = added_edges | removed_edges
131138
132- # find V_add ie nodes that were added
133- added_nodes = {
134- n for n in current_graph .nodes () if n not in previous_graph .nodes ()
135- }
136-
137139 nodes_modified_edge = set (chain (* delta_edges )).intersection (
138140 current_graph .nodes ()
139141 )
@@ -200,7 +202,7 @@ def _update_embeddings(self, time_walks, model, embeddings):
200202 min_count = 0 ,
201203 sg = 1 ,
202204 seed = self .seed ,
203- workers = self .parallel_processes ,
205+ workers = self .gensim_workers ,
204206 )
205207
206208 else :
0 commit comments