2017-02-03 22 views
0

Анализатор зависимости Stanford генерирует график в формате dot, который выглядит примерно так.Как манипулировать графиком `dot` в python

Приговор => «Джон является ученый»

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 и объединить их в одно целое. У меня уже есть код, который дает мне, какие условия нужно комбинировать. Однако я не могу найти такие термины в графе и объединить для генерации вывода формата dot. Я посмотрел на Graphviz, который может создавать новый график, строить график и сохранять файлы, но я не смог найти способ поиска узлов и объединить их. Как мне это сделать?

PS: Я посмотрел iGraph, однако он не поддерживает чтение dot. Я также нашел graph-tools, который, я думаю, очень тяжелая утилита для выполнения какой-то простой задачи. (Одна из его зависимостей составляет около 200 МБ). Даже в документации NetworkX я не мог найти способ поиска узла с определенным ярлыком.

ответ

0

Непонятно, что вы ищете. Если вы хотите импортировать dot-файл в график, посмотрите NetworkX, особенно here.

+0

Как я уже сказал, я хочу найти конкретные термины из моего графика, в данном случае, узла, содержащего «Компьютер», и изменить их. Я уже импортировал точку, используя Graphviz, однако, используя graphviz, я не могу изменить график. –

+1

С помощью NetworkX и PyDot вы можете читать точечные файлы следующим образом: 'G = nx.read_dot (myfile)'. Объединение узлов может затем, например, выполните следующие действия: 'G2 = nx.contracted_nodes (G, 'computer', 'Scientist')'. – RafG

+0

Тем не менее, вы должны поместить код, который вы использовали до сих пор, или сообщить нам, почему вы не можете «изменить график». У меня проблемы, но мне нужны технические детали. – debzsud