私は100のノードと4950のエッジを持っています。私がノード情報にアクセスできるように、Pythonでグラフを作成するための最も速い方法(可視化または描画を計画していない)は何ですか?つまり、ノード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