Source code for biblicus.graph.extractors

"""
Graph extractor registry for Biblicus.
"""

from __future__ import annotations

from typing import Dict, Type

from ..base import GraphExtractor
from .cooccurrence import CooccurrenceGraphExtractor
from .dependency_relations import DependencyRelationsGraphExtractor
from .ner_entities import NerEntitiesGraphExtractor
from .simple_entities import SimpleEntitiesGraphExtractor


[docs] def available_graph_extractors() -> Dict[str, Type[GraphExtractor]]: """ Return the registered graph extractors. :return: Mapping of extractor identifiers to extractor classes. :rtype: dict[str, Type[GraphExtractor]] """ return { CooccurrenceGraphExtractor.extractor_id: CooccurrenceGraphExtractor, DependencyRelationsGraphExtractor.extractor_id: DependencyRelationsGraphExtractor, NerEntitiesGraphExtractor.extractor_id: NerEntitiesGraphExtractor, SimpleEntitiesGraphExtractor.extractor_id: SimpleEntitiesGraphExtractor, }
[docs] def get_graph_extractor(extractor_id: str) -> GraphExtractor: """ Instantiate a graph extractor by identifier. :param extractor_id: Graph extractor identifier. :type extractor_id: str :return: Graph extractor instance. :rtype: GraphExtractor :raises KeyError: If the extractor identifier is unknown. """ registry = available_graph_extractors() extractor_class = registry.get(extractor_id) if extractor_class is None: known = ", ".join(sorted(registry.keys())) or "none" raise KeyError(f"Unknown graph extractor '{extractor_id}'. Known graph extractors: {known}") return extractor_class()