Извлечение краевых данных из графа networkx - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужно извлечь информацию о ребрах для каждого отображаемого графика. Данные в формате utf-8.

Графики отображаются для каждого предложения в документе. Так что теперь информация из графика должна быть извлечена. Предложения, которые будут извлечены, не будут такими же, как некоторые предложения, объединенные в графе. Изображение объясняет вывод, который имеет несколько графиков (каждый график имеет максимум три узла)

for s in subject_list:
    if s is not "":
        graph.add_node(s)
        labels[s] = s


for o in object_list:
    if o is not "":
        graph.add_node(o)
        labels[b] = b

for v in verb_list:
    if v is not "":
        graph.add_node(v)
        labels[v] = v



for (s, o, v) in zip(subject_list, object_list, verb_list):
    if s and o is not "":
        graph.add_edge(s, o)
    if o and v is not "":
        graph.add_edge(o, v)

pos=nx.spring_layout(graph)
nx.draw(graph, with_labels = True, font_family = "Nirmala UI", node_size = 40, font_size = 9 ,node_color = "darkblue")

pl.show()
g=[]
for component in nx.connected_components(graph):
    # Each component is the set of nodes
    #print(component)
    # Filter all edges in graph: we keep only that are in the component
    g=(list(
        filter(
            lambda x: x[0] in component and x[1] in component,
            graph.edges
        )
    ))
    print g

ls=[]
for x in g[0]:

    ls.append(x)
    print (x)
![connected components output][1]


[1]: https://i.stack.imgur.com/iynw1.png

1 Ответ

0 голосов
/ 23 апреля 2019

Вам нужна функция connected_components :

for component in nx.connected_components(graph):
    # Each component is the set of nodes
    print(component)
    # Filter all edges in graph: we keep only that are in the component
    print(list(
        filter(
            lambda x: x[0] in component and x[1] in component,
            graph.edges
        )
    ))
...