2016-10-10 16 views
0

私は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で簡単に処理できるかどうかはわかりません。

+0

。 –

+0

この質問はあまりにも終わりです。どのようにノードとエッジのリストを取得していますか?隣接行列、隣接ノードへの接続を持つノードのリスト、辺を表すペアのリストはすべて有効なオプションです... – jaypb

+0

[Pythonで最も効率的なグラフデータ構造は何ですか?](http:// stackoverflow .com/questions/1171/what-is-the-most-efficient-graph-data-structure-in-python) – jaypb

答えて

1

私は、おそらくMatlabで再利用の正確な目的のためのGMLファイルを生成するといいでしょう。この質問にはそれに関するさらに詳しい情報があります。それは*接続されていない*ノードのペアを格納するために、より理にかなって、エッジの密度で

Convert GML file to adjacency matrix in matlab

+0

更新の質問をコードで見てください:) –

+1

うまくいけば私の新しい答えが役立ち、あなたはあなたの質問に十分な情報を与えることについての重要な教訓を学びました。今の立場にあるような問題は以前とはまったく異なります。 – jaypb

関連する問題