Record the paragraph-boundary drift and how it is now caught
The production Chinese re-flows the passage across paragraph ids in the places where Pass 0 split the original mid-sentence. Measured: 439 of 3,038 translated paragraphs (14.5%) are sentence fragments, and in ch-15 the drift runs p0094-p0104 - eleven paragraphs whose Chinese is good but attached to the wrong paragraph. The alignment pass cannot see this by construction: a one-to-one paragraph is a pure copy, so there is nothing to divide and nothing to disagree. The verification stage finds it, and the spec records how it was made precise. The first version asked two yes/no questions per paragraph and was wrong in both directions - five of fifteen flags were paragraphs it claimed were missing an adverb that was present, and it missed two paragraphs that are drifted. The stage now asks which paragraph a translation renders, shows the model its neighbours, and judges the paragraphs as a window rather than one at a time. On the real ch-15 window it now finds exactly the drift: ten paragraphs dropped, p0094 kept and flagged because its Chinese correctly renders its first two sentences. Also recorded: the cost of the choice (a gap where a fragment inside a broken window is dropped on an unreliable verdict) and the root cause (the drafter is not told that each id must cover only its own English).
This commit is contained in:
@@ -185,6 +185,76 @@ the mechanical split, 0 partition mismatches**. The one fallback was a model
|
||||
answer that did not reproduce the translated text; the content check caught it
|
||||
and the paragraph was flagged rather than accepted.
|
||||
|
||||
### The drafter re-flows the passage, and the alignment cannot see it
|
||||
|
||||
There is a defect in the production Chinese that the alignment pass is
|
||||
structurally unable to find, and it has to be stated plainly because it
|
||||
changes what the delivery means.
|
||||
|
||||
Pass 0 splits the original passage at sentence boundaries, so many
|
||||
paragraphs are **sentence fragments** - `The chair in the middle has`,
|
||||
`"operations"`, `on the console.` Measured: **439 of 3,038 translated
|
||||
paragraphs (14.5%) are fragments**. A fragment is exactly where an
|
||||
intent-based drafter is told to write natural target-language prose, and
|
||||
once it does that, the id-to-text correspondence drifts: the Chinese is
|
||||
good, but it is attached to the wrong paragraph.
|
||||
|
||||
In ch-15 the drift runs from p0094 to p0104 - eleven paragraphs. The Chinese
|
||||
for p0102 (`"Yes, Captain."`) is the translation of p0101, and the Chinese
|
||||
for p0104 opens with p0103's sentence. The audiobook would say the right
|
||||
words at the wrong place.
|
||||
|
||||
The alignment pass could not see it. A one-to-one paragraph is a pure copy,
|
||||
so there is nothing to divide and nothing to disagree; the drift is invisible
|
||||
to an alignment check by construction.
|
||||
|
||||
The verification stage (`align.py --verify`) finds it. It starts at a
|
||||
sentence fragment - the only place the drift is possible - and follows the
|
||||
run until the passage re-synchronises. The verdict is one of three:
|
||||
|
||||
| verdict | meaning | action |
|
||||
|---|---|---|
|
||||
| `aligned` | the translation renders this paragraph | keep |
|
||||
| `incomplete` | it renders this paragraph but leaves part out | keep, flag for review |
|
||||
| `drift` | it renders another paragraph's content | drop, with a reason |
|
||||
|
||||
Only `drift` deletes a line, and the paragraphs are judged as a **window**
|
||||
rather than one at a time. Both of those choices are measured, not assumed:
|
||||
|
||||
- The first version asked two yes/no questions per paragraph ("is anything
|
||||
missing", "is anything extra") and was wrong in both directions. It
|
||||
flagged five paragraphs that were fine - it reported the adverb `then` as
|
||||
missing from a translation that contains it, and `Enthusiastically` as
|
||||
missing from a translation that contains it - and it missed two paragraphs
|
||||
that are drifted, because those paragraphs are short and their Chinese
|
||||
looks plausible when seen alone. **Five of fifteen flags were wrong.**
|
||||
- A re-flowed passage cannot be judged one paragraph at a time. The model
|
||||
calls the two paragraphs *before* a real drift "aligned" when their Chinese
|
||||
is demonstrably the neighbouring paragraph's, and the start of a drift is
|
||||
not knowable from any single paragraph. So inside a window that contains a
|
||||
confirmed drift, a fragment the model called `aligned` is dropped as well.
|
||||
|
||||
On the real ch-15 window this now finds exactly the drift: **ten paragraphs
|
||||
dropped (p0095-p0104)**, and p0094 kept and flagged because its Chinese is a
|
||||
correct translation of its first two sentences. An earlier version dropped
|
||||
p0094 too - losing two good lines - and kept the two drifted paragraphs the
|
||||
model wrongly called aligned.
|
||||
|
||||
The cost of the choice is explicit. A fragment inside a broken window can be
|
||||
dropped on an unreliable verdict, so the audiobook has a gap there. The
|
||||
alternative is a line in the audiobook that belongs to a different sentence,
|
||||
and a gap is visible while a wrong line is silent.
|
||||
|
||||
A dropped paragraph still produces a row: `voiced = false` with the reason,
|
||||
so the gap says *why* it is there rather than looking like a paragraph
|
||||
nobody translated.
|
||||
|
||||
**The root cause is upstream.** The drafter should be told that each id's
|
||||
translation must cover that id's English only, even where that leaves the
|
||||
Chinese reading as a fragment. Fixing the drafter is a re-translation; until
|
||||
then the verification stage is what stands between the drifted Chinese and
|
||||
the audiobook.
|
||||
|
||||
### The pipeline is Chinese-only, and one production says otherwise
|
||||
|
||||
Measured on oldbox (2026-11-06), the second production directory is
|
||||
|
||||
Reference in New Issue
Block a user