График, соединяющий две группы - PullRequest
0 голосов
/ 22 октября 2018

Я создал программу, которая принимает две группы предложений в качестве входных данных и проводит некоторое сравнение между ними.Каждое предложение из группы «A» содержит одно или несколько совпадающих предложений в группе «B», и предложение из группы «B» может соответствовать нескольким предложениям в «A».Каждое отношение имеет числовое значение.Я пытаюсь создать график, описывающий эти соединения с целью легкой визуализации соединений.Я подумал о создании двудольного графа, чтобы каждая дуга имела значение, что-то вроде изображения ниже (группа A слева и группа B справа) ( отсюда ).

Я ищу другие идеи или, возможно, библиотеку, которую я могу использовать для этого.Спасибо.enter image description here

1 Ответ

0 голосов
/ 22 октября 2018

Для этого имеет смысл двухсторонний граф, и если вы используете библиотеку networkX, вы легко можете ее создать.Предполагая, что у вас есть элементы в A и B и список, содержащий ребра

A = ['a1', 'a2', 'a3', 'a4']
B = ['b1', 'b2', 'b3', 'b4']
edges = [('a1', 'b1', 0.5), ('a1', 'b2', 0.3), ('b3', 'a4', 0.1)]
G = nx.Graph()
G.add_nodes_from(A], bipartite=0) # Add the node attribute "bipartite"
G.add_nodes_from(B, bipartite=1)
G.add_weighted_edges_from(edges)

Обратите внимание, что это просто нормальный граф, и единственный способ сказать, что он является двухсторонним, это черезсобственность bipartite.Если вам нужно что-то сделать, например, проецировать график или получить доступ только к одной стороне, то об этом есть в документации networkX .

...