Анализатор зависимости 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 я не мог найти способ поиска узла с определенным ярлыком.
Как я уже сказал, я хочу найти конкретные термины из моего графика, в данном случае, узла, содержащего «Компьютер», и изменить их. Я уже импортировал точку, используя Graphviz, однако, используя graphviz, я не могу изменить график. –
С помощью NetworkX и PyDot вы можете читать точечные файлы следующим образом: 'G = nx.read_dot (myfile)'. Объединение узлов может затем, например, выполните следующие действия: 'G2 = nx.contracted_nodes (G, 'computer', 'Scientist')'. – RafG
Тем не менее, вы должны поместить код, который вы использовали до сих пор, или сообщить нам, почему вы не можете «изменить график». У меня проблемы, но мне нужны технические детали. – debzsud