| import networkx as nx | |
| from typing import List, Dict | |
| def build_entity_graph(docs: List[Dict]) -> Dict: | |
| G = nx.Graph() | |
| for d in docs: | |
| agency = d.get("agency", "Unknown") | |
| G.add_node(agency, group="agency") | |
| for token in d.get("content", "").split(): | |
| if token.isupper() and len(token) > 2: | |
| G.add_node(token, group="entity") | |
| G.add_edge(agency, token) | |
| return { | |
| "nodes": [{"id": n, "group": G.nodes[n]["group"]} for n in G.nodes], | |
| "links": [{"source": u, "target": v} for u, v in G.edges] | |
| } |