import pytest from semantica.context.context_graph import ContextGraph from semantica.context.entity_linker import EntityLinker @pytest.mark.benchmark(group="entity_linkiing") @pytest.mark.parametrize("num_entities_in_graph", [100, 1000]) def test_entity_linking_complexity(benchmark, num_entities_in_graph): """ Benchmarks finding links for extracted entities against the existing graph. """ graph = ContextGraph() nodes = [ {"id": f"e_{i}", "type": "Entity", "properties": {"content": f"Entity {i}"}} for i in range(num_entities_in_graph) ] graph.add_nodes(nodes) graph_dict = graph.to_dict() linker = EntityLinker(knowledge_graph=graph_dict, similarity_threshold=0.7) # Simulate extraction extracted_entities = [{"text": f"Entity {i}", "type": "Entity"} for i in range(5)] def run(): return linker.link("dummy text", entities=extracted_entities) benchmark.pedantic(run, iterations=1, rounds=5)