mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-08-10 19:18:57 +08:00
fix: correct [AttributeError: 'set' object has no attribute 'nodes' T… (#6699)
### Related Issue: https://github.com/infiniflow/ragflow/issues/6653 ### Environment: Using nightly version [ece5903] Elasticsearch database Thanks for the review! My fault! I realize my initial testing wasn't passed. In graphrag/entity_resolution.py `sub_connect_graph` is a set like` {'HELLO', 'Hi', 'How are you'}`, Neither accessing `.nodes` nor `.nodes()` will work, **it still causes `AttributeError: 'set' object has no attribute 'nodes'`** In graphrag/general/extractor.py The `list.extend() `method performs an in-place operation, directly modifying the original list and returning ‘None’ rather than the modified list. Neither accessing `sorted(set(node0_attrs[attr].extend(node1_attrs.get(attr, []))))` nor `sorted(set(node0_attrs[attr].extend(node1_attrs[attr])))` will work, **it still causes `TypeError: 'NoneType' object is not iterable`** ### Type of change - [ ] Bug Fix AttributeError: graphrag/entity_resolution.py - [ ] Bug Fix TypeError: graphrag/general/extractor.py
This commit is contained in:
parent
ece59034f7
commit
67330833af
@ -111,7 +111,7 @@ class EntityResolution(Extractor):
|
||||
connect_graph.add_edges_from(resolution_result)
|
||||
async with trio.open_nursery() as nursery:
|
||||
for sub_connect_graph in nx.connected_components(connect_graph):
|
||||
merging_nodes = list(sub_connect_graph.nodes())
|
||||
merging_nodes = list(sub_connect_graph)
|
||||
nursery.start_soon(lambda: self._merge_graph_nodes(graph, merging_nodes, change))
|
||||
|
||||
# Update pagerank
|
||||
|
@ -201,7 +201,7 @@ class Extractor:
|
||||
# Merge two nodes, keep "entity_name", "entity_type", "page_rank" unchanged.
|
||||
node1_attrs = graph.nodes[node1]
|
||||
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):
|
||||
change.removed_edges.add(get_from_to(node1, neighbor))
|
||||
if neighbor not in nodes_set:
|
||||
@ -213,7 +213,7 @@ class Extractor:
|
||||
edge0_attrs["weight"] += edge1_attrs["weight"]
|
||||
edge0_attrs["description"] += f"{GRAPH_FIELD_SEP}{edge1_attrs['description']}"
|
||||
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"])
|
||||
graph.add_edge(nodes[0], neighbor, **edge0_attrs)
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user