|
5 | 5 | from gensim.models.word2vec import LineSentence |
6 | 6 | from time import time |
7 | 7 | from . import graph |
| 8 | +from .utils import * |
| 9 | +from .graph import * |
8 | 10 | from semb.methods import BaseMethod |
9 | 11 |
|
10 | 12 | """ |
11 | 13 | Driver for learning Struc2Vec embedding |
12 | 14 | """ |
13 | 15 | class Method(BaseMethod): |
14 | 16 |
|
15 | | - __PARAMS__ = dict(dim=128, walk_length=80, num_walks=10, window_size=10, util_layer=None, \ |
16 | | - iter=5, worker=1, weighted=False, directed=False, opt1=False, opt2=False, opt3=False) |
17 | | - |
18 | | - |
19 | | - def exec_struc2vec(self): |
20 | | - # execute struc2vec |
21 | | - if self.params['opt3']: |
22 | | - until_layer = self.params['until_layer'] |
23 | | - else: |
24 | | - until_layer = None |
25 | | - G = struc2vec.Graph(self.graph, self.params['directed'], |
26 | | - self.params['worker'], untilLayer=until_layer) |
27 | | - if self.params['opt1']: |
28 | | - G.preprocess_neighbors_with_bfs_compact() |
29 | | - else: |
30 | | - G.preprocess_neighbors_with_bfs() |
31 | | - if self.params['opt2']: |
32 | | - G.create_vectors() |
33 | | - G.calc_distances(compactDegree=self.params['opt1']) |
34 | | - else: |
35 | | - G.calc_distances_all_vertices(compactDegree=self.params['opt1']) |
36 | | - |
37 | | - G.create_distances_network() |
38 | | - G.preprocess_parameters_random_walk() |
39 | | - G.simulate_walks(self.params['num_walks'], self.params['walk_length']) |
40 | | - |
41 | | - def learn_embeddings(self): |
42 | | - walks = LineSentence('random_walks.txt') |
43 | | - self.model = Word2Vec(walks, size=self.params['dim'], window=self.params['window_size'], |
44 | | - min_count=0, hs=1, sg=1, workers=self.params['worker'], iter=self.params['iter']) |
45 | | - self.embeddings = self.model.wv |
46 | | - |
47 | | - def get_id(self): |
48 | | - return "struc2vec" |
49 | | - |
50 | | - def train(self): |
51 | | - self.exec_struc2vec() |
52 | | - self.learn_embeddings() |
| 17 | + __PARAMS__ = dict(dim=128, walk_length=80, num_walks=10, window_size=10, until_layer=None, \ |
| 18 | + iter=5, workers=1, weighted=False, directed=False, opt1=False, opt2=False, opt3=False) |
| 19 | + |
| 20 | + |
| 21 | + def exec_struc2vec(self): |
| 22 | + # execute struc2vec |
| 23 | + if self.params['opt3']: |
| 24 | + until_layer = self.params['until_layer'] |
| 25 | + else: |
| 26 | + until_layer = None |
| 27 | + graph = from_networkx(self.graph, not self.params['directed']) |
| 28 | + G = struc2vec.Graph(graph, self.params['directed'], self.params['workers'], untilLayer=until_layer) |
| 29 | + |
| 30 | + if self.params['opt1']: |
| 31 | + G.preprocess_neighbors_with_bfs_compact() |
| 32 | + else: |
| 33 | + G.preprocess_neighbors_with_bfs() |
| 34 | + if self.params['opt2']: |
| 35 | + G.create_vectors() |
| 36 | + G.calc_distances(compactDegree=self.params['opt1']) |
| 37 | + else: |
| 38 | + G.calc_distances_all_vertices(compactDegree=self.params['opt1']) |
| 39 | + |
| 40 | + G.create_distances_network() |
| 41 | + G.preprocess_parameters_random_walk() |
| 42 | + G.simulate_walks(self.params['num_walks'], self.params['walk_length']) |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | + def learn_embeddings(self): |
| 47 | + walks = LineSentence(walk_fname) |
| 48 | + self.model = Word2Vec(walks, size=self.params['dim'], window=self.params['window_size'], |
| 49 | + min_count=0, hs=1, sg=1, workers=self.params['workers'], iter=self.params['iter']) |
| 50 | + |
| 51 | + self.embeddings = dict() |
| 52 | + for cur_node in self.graph.nodes(): |
| 53 | + self.embeddings[cur_node] = self.model.wv.get_vector(str(cur_node)).tolist() |
| 54 | + |
| 55 | + def get_id(self): |
| 56 | + return "struc2vec" |
| 57 | + |
| 58 | + def train(self): |
| 59 | + self.exec_struc2vec() |
| 60 | + self.learn_embeddings() |
0 commit comments