Spaces:
Running
Running
File size: 1,307 Bytes
8fb73f8 | 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | """
Pydantic data models for FactEval's pipeline objects.
"""
from pydantic import BaseModel, Field
class Claim(BaseModel):
"""A single atomic, verifiable claim extracted from text."""
text: str = Field(..., description="The claim statement.")
source_text: str = Field(
default="",
description="The original text this claim was extracted from.",
)
def __str__(self) -> str:
return self.text
class Evidence(BaseModel):
"""A single piece of evidence retrieved for a claim."""
sentence: str = Field(..., description="The evidence sentence.")
score: float = Field(
..., ge=0.0, description="Cosine similarity score (may slightly exceed 1.0 due to float precision)."
)
source_context: str = Field(
default="",
description="The full context passage this sentence came from.",
)
def __str__(self) -> str:
return f"[{self.score:.3f}] {self.sentence}"
class ClaimWithEvidence(BaseModel):
"""A claim paired with its retrieved evidence."""
claim: Claim
evidence: list[Evidence] = Field(default_factory=list)
@property
def best_evidence(self) -> Evidence | None:
"""Return the highest-scoring evidence, or None."""
return self.evidence[0] if self.evidence else None
|