File size: 979 Bytes
fbebf66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)]