У меня есть 100 узлов и 4950 краев. Каков самый быстрый способ создания графика в Python (не планируя вообще визуализировать или рисовать его), чтобы я мог получить доступ к информации о узле, чтобы мне понадобилось то, что каждый элемент в матрице 2d означает, что узел 1 подключен к узлу 3? (также мне не нужно сохранять его как матрицу).создать граф со слишком большим количеством краев
import gensim
import nltk
from gensim.models import word2vec
from nltk.corpus import stopwords
import logging
import re
import itertools
import glob
from collections import defaultdict
import networkx as nx
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s',
level=logging.INFO)
sentences = word2vec.Text8Corpus("/home/mona/mscoco/text8")
model = word2vec.Word2Vec(sentences, workers = 16)
#model.init_sims(replace = True)
model_name = "text8_data"
model.save(model_name)
stopwords = nltk.corpus.stopwords.words('english')
path = "/home/mona/mscoco/caption_files/*.txt"
files = glob.glob(path)
adj_list = defaultdict(lambda: defaultdict(lambda: 0))
for file in files:
g.add_nodes(file)
for file1, file2 in itertools.combinations(files, 2):
with open(file1) as f1:
f1_text = f1.read()
f1_words = re.sub("[^a-zA-Z]", ' ', f1_text).lower().split()
f1_words = [w for w in f1_words if w not in stopwords]
print(f1_text)
f1.close()
with open(file2) as f2:
f2_text = f2.read()
f2_words = re.sub("[^a-zA-Z]", ' ', f2_text).lower().split()
f2_words = [w for w in f2_words if w not in stopwords]
print(f2_text)
f2.close()
print('{0}: {1}: {2}'.format(file1, file2, model.wmdistance(f1_words, f2_words)))
g.add_edge(file1, file2, model.wmdistance(f1_words, f2_words))
print(g.number_of_edges())
print(g.number_of_edges())
nx.write_gml(g, "gensim.gml")
Пожалуйста, дайте мне знать, если у вас есть лучшее предложение, что мой текущий код. В итоге у меня будет что-то вроде 20 узлов и 190 ребер. Я в основном ищу что-то, что обработка его вывода будет легкой для другой программы, такой как MATLAB. Я не уверен, что файлы .gml легко обрабатываются в MATLAB.
С этой плотностью ребер было бы больше смысла для хранения пар узлов, * не являются * связаны. –
Этот вопрос слишком открытый. Как вы получаете список узлов и ребер? Матрица смежности, список узлов с подключениями к их соседям, список пар, представляющих край, являются допустимыми параметрами ... – jaypb
Возможная дубликация [Что является наиболее эффективной структурой данных графа в Python?] (Http: // stackoverflow .com/questions/1171/what-is-the-most-efficient-graph-data-structure-in-python) – jaypb