AEE / aee_core_classes_era.py
NextGenC's picture
Upload 10 files
37e65d4 verified
# aee_core_classes_era.py
# AEE Projesi için temel veri yapılarını tanımlar.
# Era Sürümü: EpistemicData'ya plausibility eklendi.
import uuid
from dataclasses import dataclass, field
from datetime import datetime
from typing import List, Optional, Dict, Any
@dataclass
class EpistemicData:
"""Bir önerme ile ilişkili epistemik (bilgibilimsel) verileri tutar."""
source_id: str
timestamp: datetime = field(default_factory=datetime.now)
initial_confidence: float = 0.5
computed_confidence: float = 0.5
source_type: Optional[str] = None
reliability_score: Optional[float] = None
# v2+ Bağlantılar
supports: List[str] = field(default_factory=list)
contradicts: List[str] = field(default_factory=list)
# v3+ İşaretler
bias_flags: List[str] = field(default_factory=list)
# YENİ ERA Alanları:
plausibility_score: Optional[float] = None # Önermenin genel makullük/olabilirlik skoru (örn: 0.0-1.0)
validation_notes: List[str] = field(default_factory=list) # Makullük kontrolünden gelen notlar (örn: ['Contradicts common sense'])
other_metadata: Dict[str, Any] = field(default_factory=dict)
def __post_init__(self):
self.computed_confidence = self.initial_confidence
@dataclass
class Proposition:
"""Metinden çıkarılan bir bilgi birimini (önermeyi) temsil eder."""
# Non-default fields first
text_span: str
sentence_text: str
epistemic_data: EpistemicData # Artık Era uyumlu EpistemicData içerecek
# Default fields last
prop_id: str = field(default_factory=lambda: str(uuid.uuid4()))
subject_lemma: Optional[str] = None
relation_lemma: Optional[str] = None
value_lemma: Optional[str] = None
is_negated: bool = False
other_analysis: Dict[str, Any] = field(default_factory=dict)
def __str__(self):
# Raporlamada kolaylık için __str__ güncellenebilir, şimdilik aynı.
neg_str = "[NEGATED] " if self.is_negated else ""
return (f"Prop({self.prop_id[:8]}): {neg_str}"
f"{self.subject_lemma} - {self.relation_lemma} - {self.value_lemma} "
f"(Conf: {self.epistemic_data.computed_confidence:.2f}, Src: {self.epistemic_data.source_id})")
# --- Test Bloğu ---
if __name__ == "__main__":
print("Testing AEE Core Classes (Era Version)...")
ed1 = EpistemicData(source_id="src_test", initial_confidence=0.7)
ed1.plausibility_score = 0.9 # Test için manuel atama
ed1.validation_notes.append("Seems plausible based on initial check.")
print(f"Created EpistemicData (Era): {ed1}")
prop1 = Proposition(
text_span="Test span", sentence_text="Test sentence.", epistemic_data=ed1,
subject_lemma="test", relation_lemma="be", value_lemma="ok"
)
print(f"Created Proposition (Era): {prop1}")
print(f" Plausibility: {prop1.epistemic_data.plausibility_score}")
print(f" Validation Notes: {prop1.epistemic_data.validation_notes}")
print("\nCore classes (Era) seem functional.")