Zkontrolovali jsme každý strojový překlad. Chybná byla právě ta kontrola.

Jazyky

Než jsme vydali náš balíček pro překlady, otestovali jsme ho na malé ukázkové aplikaci: 70 řetězců ve šesti formátech (JSON, Flutter ARB, Android, Apple .strings, gettext a Markdown) do němčiny, ruštiny, japonštiny, arabštiny a španělštiny, s otevřeným modelem Qwen (Qwen3.8-Flash-Next, kvantizovaným na 4 bity) obsluhovaným přes vLLM na našem vlastním stroji. Každý přeložený řetězec projde před zápisem kontrolami. Ze 350 jich bylo zamítnuto 4. Všechny čtyři zamítnutí byla chybná.

Co kontroly hledají

Překlad, který rozbije aplikaci, je horší než žádný, takže každý řetězec musí zachovat své zástupné symboly (%1$s, {name}, {{count}}), své značky, zalomení řádků a URL adresy; musí být v písmu cílového jazyka; nesmí být prázdný, rozjetý nebo ponechaný v angličtině; a množná čísla musí pokrývat přesně ty kategorie, které jazyk má. Řetězec, který selže, je znovu vyžádán s uvedením problému a ten, který selže znovu, je vynechán, takže aplikace pro tento jeden řetězec zobrazí angličtinu.

Čtyři zamítnutí

Jakmile byly kontroly opraveny, druhý běh žádal model pouze o tyto čtyři řetězce, protože vše ostatní bylo v paměti překladů, a zapsal všech 350 řetězců za 45 sekund.

Část, u které jsme očekávali selhání a která neselhalа

Množná čísla jsou místem, kde naivní překlad selhává: angličtina má jednotné a množné číslo, ruština jednotné, několik, mnoho a ostatní, arabština šest kategorií a japonština pouze jeden tvar. Vyžádali jsme si přesně cílové kategorie a zkontrolovali zástupné symboly u každého tvaru. Model napsal pro ruštinu „1 день, 2 дня, 5 дней“ a všech šest arabských tvarů. Každé množné číslo pro Android prošlo na první pokus ve všech pěti jazycích a stejně tak každá množná zpráva kromě té japonské, kterou naše kontrola chybně vyhodnotila.

Co žádná kontrola neodhalí

Poté jsme přeložili 22 webových řetězců z příkladu do všech 42 jazyků, které Polyglot zná: prošlo 924 z 924 řetězců. Při jejich čtení jeden vyčníval. V khmérštině se „You are offline“ vrátilo jako věta, která říká „jste online“. Je to správně utvořená khmérština ve správném písmu bez chybějících částí, takže každá kontrola ji propustila. Kontroly odhalí to, co rozbije aplikaci; špatný význam potřebuje člověka, který danému jazyku rozumí.

Shrnutí

Automatické kontroly strojového výstupu potřebují k otestování skutečný výstup. Jednotkové testy s vymyšlenými překlady prošly; reálný model píšící reálnou japonštinu našel mezery během minut. Polyglot obsahuje tyto kontroly, opravené, a testy pro každý ze čtyř případů. Samotné kontroly jsou zdarma a open source: translation-checks na GitHubu.

Aktualizováno: