Я пытаюсь создать вложения для списка краев, который у меня есть, используя networkx и node2vec. Мой список ребер выглядит следующим образом:
1 2
1 6
...
450 230
...
601 602
По сути, это невзвешенный неориентированный граф, который хранится в текстовом файле. Я пытаюсь преобразовать это в график, используя следующее:
nx_G = nx.read_edgelist(args.input, delimiter=' ', create_using=nx.DiGraph())
G = node2vec.Graph(nx_G, args.directed, args.p, args.q, args.seed)
G.preprocess_transition_probs()
walks = G.simulate_walks(args.num_walks, args.walk_length)
walks = [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.wv.save_word2vec_format(args.output)
где args.input предоставляет текстовый файл. Функции read_edgelist правильно считывают узлы, и создаются вложения. Однако в файле встраивания узлы не нумеруются от 1 до 606 (это значения узлов в моем списке ребер): вместо этого их 14, с цифрами от 0 до 9 и некоторыми специальными символами в качестве значений узлов. вместо этого для которых были созданы вложения. То есть вместо того, чтобы читать целое число из более чем одной цифры (скажем, 29) как один узел, он просто читает 2 и вычисляет для него вложения. Я не понимаю, почему это происходит, и был бы признателен за некоторое понимание.