File size: 1,859 Bytes
39cfcd1 8f6d79d 39cfcd1 8f6d79d 11c7d9f 8f6d79d 39cfcd1 8f6d79d 39cfcd1 8f6d79d 39cfcd1 11c7d9f 39cfcd1 11c7d9f 39cfcd1 11c7d9f 8f6d79d 39cfcd1 8f6d79d 39cfcd1 8f6d79d 39cfcd1 | 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 48 49 50 51 52 53 54 55 56 | """Lightweight document consistency without reparsing the full document."""
from __future__ import annotations
from app.engine.models import SentenceRecord
_FRONTING_TEMPLATES = frozenset(
{
"time_subj_manner_verb_place",
"time_subj_verb_place",
"time_subj_verb_object",
"time_subj_verb_object_place",
"time_front",
"place_front",
"adv_subj_verb_object",
}
)
def suppress_template_streaks(records: list[SentenceRecord]) -> list[SentenceRecord]:
"""Revert consecutive identical fronting templates to reduce repetition."""
adjusted: list[SentenceRecord] = []
previous = ""
for record in records:
if (
record.status == "rewritten"
and record.template_id in _FRONTING_TEMPLATES
and record.template_id == previous
):
adjusted.append(
SentenceRecord(
index=record.index,
original=record.original,
rewritten=record.original,
confidence=record.confidence,
status="reverted",
template_id="",
sentence_type=record.sentence_type,
reasons=record.reasons + ["template_streak"],
block_index=record.block_index,
)
)
previous = ""
continue
adjusted.append(record)
previous = record.template_id if record.status == "rewritten" else ""
return adjusted
def apply_consistency(
text: str,
records: list[SentenceRecord],
) -> tuple[str, list[SentenceRecord]]:
# Entity spellings are already preserved token-for-token by generation and safety.
return text, suppress_template_streaks(records)
|