Skontrolovali sme každý strojový preklad. Chybná bola práve tá kontrola.
Jazyky
Pred vydaním nášho balíka na preklad sme ho spustili na malej ukážkovej aplikácii: 70 reťazcov v šiestich formátoch (JSON, Flutter ARB, Android, Apple .strings, gettext a Markdown) do nemčiny, ruštiny, japončiny, arabčiny a španielčiny, s otvoreným modelom s 27 miliardami parametrov na našom vlastnom počítači. Každý preložený reťazec prechádza pred zápisom kontrolami. Štyri z 350 boli zamietnuté. Všetky štyri zamietnutia boli mylné.
Čo kontroly hľadajú
Preklad, ktorý rozbije aplikáciu, je horší ako žiadny, preto každý reťazec musí zachovať svoje zástupné symboly (%1$s, {name}, {{count}}), značky, zalomenia riadkov a URL adresy; musí byť v písme cieľového jazyka; nesmie byť prázdny, rozbehnutý do nekonečna alebo ponechaný v angličtine; a množné čísla musia pokrývať presne tie kategórie, ktoré jazyk má. Reťazec, ktorý kontrolou neprejde, sa znova vyžiada s uvedením problému a ten, ktorý znova zlyhá, sa vynechá, takže aplikácia pre tento jeden reťazec zobrazí angličtinu.
Štyri zamietnutia
- Nemecký preklad „Backups“ bol „Backups“. Kontrola to označila za nepreložené. Nemčina používa anglické slovo. Jedno identické slovo je často správne; dve alebo viac identických slov nie, takže to je teraz pravidlo.
- Ruský a japonský riadok s e-mailovou adresou neprešli kontrolou písma: menej ako 60 % písmen bolo cyrilických alebo japonských, pretože
[email protected]je napísané latinkou. Adresy sa teraz správajú ako zástupné symboly: musia sa vrátiť nezmenené a nepočítajú sa ako písmená. - Japonská množná správa sa vrátila ako
{count, plural, =0{連続記録なし} other{{count}日連続}}. Vetva{連続記録なし}nemá medzery, takže vzor pre zástupné symboly ju považoval za premennú s názvom 連続記録なし. Zátvorky vetiev v množných správach sú teraz štruktúra a názvy zástupných symbolov musia byť v ASCII.
Keď boli kontroly opravené, druhý beh požiadal model len o tieto štyri reťazce, keďže všetko ostatné bolo v pamäti prekladov, a zapísal všetkých 350 reťazcov za 45 sekúnd.
Časť, o ktorej sme čakali, že zlyhá, a nezlyhala
Množné čísla sú miesto, kde naívny preklad zlyhá: angličtina má jednotné a množné číslo, ruština má jednotné, málo, veľa a ostatné, arabčina šesť kategórií a japončina iba jeden tvar. Vyžiadali sme si presne kategórie cieľového jazyka a skontrolovali sme zástupné symboly v každom tvare. Model napísal „1 день, 2 дня, 5 дней“ pre ruštinu a všetkých šesť arabských tvarov. Každé množné číslo pre Android prešlo na prvýkrát vo všetkých piatich jazykoch a rovnako aj každá množná správa okrem japonskej, ktorú naša kontrola nesprávne vyhodnotila.
Čo nedokáže odhaliť žiadna kontrola
Potom sme preložili 22 reťazcov z ukážky do všetkých 42 jazykov, ktoré Polyglot pozná: 924 z 924 reťazcov prešlo. Pri čítaní sme si všimli jeden výrazný problém. V khmérčine sa veta „You are offline“ vrátila ako veta, ktorá hovorí „ste online“. Je to správne vytvorená khmérčina v správnom písme bez chýb, takže ju každá kontrola pustila. Kontroly zachytia to, čo rozbije aplikáciu; nesprávny význam potrebuje človeka, ktorý danému jazyku rozumie.
Zhrnutie
Automatické kontroly strojového výstupu potrebujú reálny výstup, proti ktorému sa testujú. Jednotkové testy s vymyslenými prekladmi prešli; reálny model píšuci reálnu japončinu našiel medzery za pár minút. Polyglot obsahuje tieto kontroly opravené a s testami pre každý zo štyroch prípadov.