ETHOS / data_models.py
NextGenC's picture
Upload 10 files
98c2b46 verified
raw
history blame contribute delete
2.22 kB
# data_models.py
from typing import List, Optional, Any
from pydantic import BaseModel, Field
class Finding(BaseModel):
"""Analiz sırasında bulunan genel bir bulguyu temsil eder."""
finding_type: str = Field(..., description="Bulgunun türü (örn. 'Fallacy', 'RhetoricalDevice', 'EvidenceStatus')")
description: str = Field(..., description="Bulgunun kısa açıklaması")
severity: Optional[str] = Field(None, description="Bulgunun ciddiyeti (örn. 'Low', 'Medium', 'High')")
span_start: Optional[int] = Field(None, description="Bulgunun metindeki başlangıç karakter indeksi")
span_end: Optional[int] = Field(None, description="Bulgunun metindeki bitiş karakter indeksi")
details: Optional[dict[str, Any]] = Field(None, description="Bulguya özel ek detaylar")
class ArgumentComponent(BaseModel):
"""Tespit edilen bir argüman bileşenini temsil eder (İddia, Gerekçe vb.)."""
component_type: str = Field(..., description="Bileşenin türü (örn. 'Claim', 'Premise')")
text: str = Field(..., description="Bileşenin tam metni")
sentence_index: int = Field(..., description="Bileşenin bulunduğu cümlenin indeksi")
span_start: int = Field(..., description="Bileşenin cümle içindeki başlangıç karakter indeksi")
span_end: int = Field(..., description="Bileşenin cümle içindeki bitiş karakter indeksi")
confidence: Optional[float] = Field(None, description="Tespitin güven skoru (0.0 - 1.0)")
class SentenceInfo(BaseModel):
"""Tek bir cümle hakkındaki bilgileri içerir."""
text: str
start_char: int
end_char: int
tokens: List[str] # Şimdilik basitçe token metinleri
class AnalyzedText(BaseModel):
"""Tüm analiz sürecinin sonucunu içeren ana model."""
original_text: str
processed_text: Optional[str] = None
language: str = "en"
sentences: List[SentenceInfo] = []
findings: List[Finding] = [] # Tüm bulgular burada toplanacak
argument_components: List[ArgumentComponent] = []
analysis_summary: Optional[dict[str, str]] = Field(None, description="Analizin özet değerlendirmesi") # YENİ ALAN
class Config:
extra = 'forbid'