about summary refs log tree commit diff stats
path: root/archive/2025/summer/bsc_gerg/src/knowledge/resolver.py
diff options
context:
space:
mode:
Diffstat (limited to 'archive/2025/summer/bsc_gerg/src/knowledge/resolver.py')
-rw-r--r--archive/2025/summer/bsc_gerg/src/knowledge/resolver.py38
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)