From 7a6c37da54243369f176fb9a04b952e9a1439b52 Mon Sep 17 00:00:00 2001 From: Michael Wehner Date: Wed, 13 Dec 2017 09:35:42 -0800 Subject: [PATCH] Minimal Python 2/3 compatibility. * Import `print_function` from __future__ * Cast iterator returned my `map` to `list` * Resolve `gensim` deprecation warnings regarding use of `save_word2vec_format`. --- src/main.py | 10 +++++----- src/node2vec.py | 10 ++++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main.py b/src/main.py index 82ac735..8bd561b 100644 --- a/src/main.py +++ b/src/main.py @@ -1,11 +1,11 @@ ''' -Reference implementation of node2vec. +Reference implementation of node2vec. Author: Aditya Grover For more details, refer to the paper: node2vec: Scalable Feature Learning for Networks -Aditya Grover and Jure Leskovec +Aditya Grover and Jure Leskovec Knowledge Discovery and Data Mining (KDD), 2016 ''' @@ -83,10 +83,10 @@ def learn_embeddings(walks): ''' Learn embeddings by optimizing the Skipgram objective using SGD. ''' - walks = [map(str, walk) for walk in walks] + walks = [list(map(str, walk)) for walk in walks] model = Word2Vec(walks, size=args.dimensions, window=args.window_size, min_count=0, sg=1, workers=args.workers, iter=args.iter) - model.save_word2vec_format(args.output) - + model.wv.save_word2vec_format(args.output) + return def main(args): diff --git a/src/node2vec.py b/src/node2vec.py index 0293411..4a00094 100644 --- a/src/node2vec.py +++ b/src/node2vec.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import numpy as np import networkx as nx import random @@ -28,7 +30,7 @@ def node2vec_walk(self, walk_length, start_node): walk.append(cur_nbrs[alias_draw(alias_nodes[cur][0], alias_nodes[cur][1])]) else: prev = walk[-2] - next = cur_nbrs[alias_draw(alias_edges[(prev, cur)][0], + next = cur_nbrs[alias_draw(alias_edges[(prev, cur)][0], alias_edges[(prev, cur)][1])] walk.append(next) else: @@ -43,9 +45,9 @@ def simulate_walks(self, num_walks, walk_length): G = self.G walks = [] nodes = list(G.nodes()) - print 'Walk iteration:' + print('Walk iteration:') for walk_iter in range(num_walks): - print str(walk_iter+1), '/', str(num_walks) + print(str(walk_iter+1), '/', str(num_walks)) random.shuffle(nodes) for node in nodes: walks.append(self.node2vec_walk(walk_length=walk_length, start_node=node)) @@ -146,4 +148,4 @@ def alias_draw(J, q): if np.random.rand() < q[kk]: return kk else: - return J[kk] \ No newline at end of file + return J[kk]