|
|
|
|
|
|
|
|
# Merge two nodes, keep "entity_name", "entity_type", "page_rank" unchanged. |
|
|
# Merge two nodes, keep "entity_name", "entity_type", "page_rank" unchanged. |
|
|
node1_attrs = graph.nodes[node1] |
|
|
node1_attrs = graph.nodes[node1] |
|
|
node0_attrs["description"] += f"{GRAPH_FIELD_SEP}{node1_attrs['description']}" |
|
|
node0_attrs["description"] += f"{GRAPH_FIELD_SEP}{node1_attrs['description']}" |
|
|
node0_attrs["source_id"] = sorted(set(node0_attrs["source_id"].extend(node1_attrs.get("source_id", [])))) |
|
|
|
|
|
|
|
|
node0_attrs["source_id"] = sorted(set(node0_attrs["source_id"] + node1_attrs["source_id"])) |
|
|
for neighbor in graph.neighbors(node1): |
|
|
for neighbor in graph.neighbors(node1): |
|
|
change.removed_edges.add(get_from_to(node1, neighbor)) |
|
|
change.removed_edges.add(get_from_to(node1, neighbor)) |
|
|
if neighbor not in nodes_set: |
|
|
if neighbor not in nodes_set: |
|
|
|
|
|
|
|
|
edge0_attrs["weight"] += edge1_attrs["weight"] |
|
|
edge0_attrs["weight"] += edge1_attrs["weight"] |
|
|
edge0_attrs["description"] += f"{GRAPH_FIELD_SEP}{edge1_attrs['description']}" |
|
|
edge0_attrs["description"] += f"{GRAPH_FIELD_SEP}{edge1_attrs['description']}" |
|
|
for attr in ["keywords", "source_id"]: |
|
|
for attr in ["keywords", "source_id"]: |
|
|
edge0_attrs[attr] = sorted(set(edge0_attrs[attr].extend(edge1_attrs.get(attr, [])))) |
|
|
|
|
|
|
|
|
edge0_attrs[attr] = sorted(set(edge0_attrs[attr] + edge1_attrs[attr])) |
|
|
edge0_attrs["description"] = await self._handle_entity_relation_summary(f"({nodes[0]}, {neighbor})", edge0_attrs["description"]) |
|
|
edge0_attrs["description"] = await self._handle_entity_relation_summary(f"({nodes[0]}, {neighbor})", edge0_attrs["description"]) |
|
|
graph.add_edge(nodes[0], neighbor, **edge0_attrs) |
|
|
graph.add_edge(nodes[0], neighbor, **edge0_attrs) |
|
|
else: |
|
|
else: |