from dataclasses import dataclass from typing import Dict, List, Optional import networkx as nx import numpy as np @dataclass class SignNode: id: str level: str meaning_vector: np.ndarray context: Dict[str, float] relations: List[str] class SemioticNetworkBuilder: def __init__(self): self.graph = nx.MultiDiGraph() self.meaning_extractor = MeaningExtractor() self.context_analyzer = ContextAnalyzer() def construct(self, input_data: Dict[str, Any]) -> nx.MultiDiGraph: signs = self._extract_signs(input_data) self._build_nodes(signs) self._establish_relations() return self._optimize_network() def _extract_signs(self, input_data: Dict[str, Any]) -> List[SignNode]: meanings = self.meaning_extractor.process(input_data) contexts = self.context_analyzer.analyze(input_data) return [self._create_sign_node(m, c) for m, c in zip(meanings, contexts)]