diff options
| author | Martin Fink <martin@finkmartin.com> | 2025-09-11 09:19:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-11 09:19:48 +0200 |
| commit | 17af5f6fc0538f615b8612dcd2cb77c2affad63f (patch) | |
| tree | 76e4c260123b68b93da2417482024ba11f9838ee /archive/2025/summer/bsc_gerg/src/knowledge/resolver.py | |
| parent | a910d0a3e57f4de47cf2387ac239ae8d0eaca507 (diff) | |
| parent | 3e5d3ca82193e8e8561beb9ceac9982f376d84e2 (diff) | |
| download | research-work-archive-artifacts-17af5f6fc0538f615b8612dcd2cb77c2affad63f.tar.gz research-work-archive-artifacts-17af5f6fc0538f615b8612dcd2cb77c2affad63f.zip | |
Merge pull request #10 from walamana/main
Add bsc_gerg
Diffstat (limited to 'archive/2025/summer/bsc_gerg/src/knowledge/resolver.py')
| -rw-r--r-- | archive/2025/summer/bsc_gerg/src/knowledge/resolver.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/archive/2025/summer/bsc_gerg/src/knowledge/resolver.py b/archive/2025/summer/bsc_gerg/src/knowledge/resolver.py new file mode 100644 index 000000000..1e5d7a8b8 --- /dev/null +++ b/archive/2025/summer/bsc_gerg/src/knowledge/resolver.py @@ -0,0 +1,38 @@ +from typing import Annotated, AsyncIterable, Optional, Any + +from pydantic import Field + +from src.terminology.event import Event, VerifiedDefinitionResolved +from src.terminology.models import TextSource, Definition +from src.terminology.terminology import DefinitionResolver + + +class CSVDefinitionResolver(DefinitionResolver): + definitions: Annotated[dict[str, Definition], Field(default_factory=dict)] + source: Optional[TextSource] = None + + + def model_post_init(self, __context: Any) -> None: + langs = ["de"] + self.source = self.blackboard.add_text_source("DICTIONARY") + for lang in langs: + with open(f"data/{lang}-glossary.csv", "r") as f: + data = f.read().split("\n") + for row in data: + key, value = row.split("\t") + self.definitions[key] = Definition( + text=value, + verified=True, + partial=False, + source=self.source, + ) + + async def activate(self, event: Event) -> AsyncIterable[Event]: + term = event.term + term_str = term.normalized_or_text() + if term_str in self.definitions: + definition = self.definitions[term_str] + if definition in term.definitions: + return + term.definitions.append(definition) + yield VerifiedDefinitionResolved(term=term, definition=definition) |