スタンフォード依存パーサーは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"]
}
私はComputer
とScientist
などの用語を検索し、1にそれらを結合したいです。私はすでにどの用語を組み合わせるべきかを示すコードを持っています。しかし、私はグラフでそのような用語を見つけることができず、dot
形式の出力を生成するために結合します。私はGraphviz
を見て、新しいグラフやプロットを作成してファイルを保存することができますが、ノードを検索して結合する方法を見つけることができませんでした。私はこれをどのようにするべきですか?
PS:iGraphを見ましたが、dot
の形式をサポートしていません。私はまたgraph-tools
を見つけました。これは、このような単純なタスクにとって非常に重大なユーティリティだと思います。 (依存関係自体は約200MBです)。 NetworkXのドキュメントでも、特定のラベルを持つノードを検索する方法はありませんでした。
私が言ったように、私は自分のグラフ(この場合は「コンピュータ」を含むノード)から特定の用語を探して修正したいと思います。 Graphvizを使って既にドットをインポートしていますが、graphvizを使ってグラフを修正することはできません。 –
NetworkXとPyDotを使うと、 'G = nx.read_dot(myfile)'のようなドットファイルを読むことができます。結合ノードは、例えば、 'G2 = nx.contracted_nodes(G、 'computer'、 'scientist')'のようにしてください。 – RafG
今まで使用していたコードを置くか、グラフを修正できない理由を教えてください。問題はありますが、技術的な詳細が必要です。 – debzsud