2017-02-03 4 views
0

スタンフォード依存パーサーはdot形式のグラフを生成します。Pythonで `dot`グラフを操作する方法

文=>「ジョンは、コンピュータ科学者である」

digraph G{ 
edge [dir=forward] 
node [shape=plaintext] 

0 [label="0 (None)"] 
0 -> 5 [label="root"] 
1 [label="1 (John)"] 
2 [label="2 (is)"] 
3 [label="3 (a)"] 
4 [label="4 (Computer)"] 
5 [label="5 (Scientist)"] 
5 -> 2 [label="cop"] 
5 -> 4 [label="compound"] 
5 -> 3 [label="det"] 
5 -> 1 [label="nsubj"] 
} 

私はComputerScientistなどの用語を検索し、1にそれらを結合したいです。私はすでにどの用語を組み合わせるべきかを示すコードを持っています。しかし、私はグラフでそのような用語を見つけることができず、dot形式の出力を生成するために結合します。私はGraphvizを見て、新しいグラフやプロットを作成してファイルを保存することができますが、ノードを検索して結合する方法を見つけることができませんでした。私はこれをどのようにするべきですか?

PS:iGraphを見ましたが、dotの形式をサポートしていません。私はまたgraph-toolsを見つけました。これは、このような単純なタスクにとって非常に重大なユーティリティだと思います。 (依存関係自体は約200MBです)。 NetworkXのドキュメントでも、特定のラベルを持つノードを検索する方法はありませんでした。

答えて

0

あなたが探しているものは明確ではありません。ドットファイルをグラフにインポートする場合は、NetworkX、特にhereを参照してください。

+0

私が言ったように、私は自分のグラフ(この場合は「コンピュータ」を含むノード)から特定の用語を探して修正したいと思います。 Graphvizを使って既にドットをインポートしていますが、graphvizを使ってグラフを修正することはできません。 –

+1

NetworkXとPyDotを使うと、 'G = nx.read_dot(myfile)'のようなドットファイルを読むことができます。結合ノードは、例えば、 'G2 = nx.contracted_nodes(G、 'computer'、 'scientist')'のようにしてください。 – RafG

+0

今まで使用していたコードを置くか、グラフを修正できない理由を教えてください。問題はありますが、技術的な詳細が必要です。 – debzsud

関連する問題