Vi kontrollerade varje maskinöversättning. Det var kontrollerna som var fel.

Språk

Innan vi släppte vårt översättningsverktygspaket testade vi det på en liten exempelapp: 70 strängar i sex format (JSON, Flutter ARB, Android, Apple .strings, gettext och Markdown) till tyska, ryska, japanska, arabiska och spanska, med en öppen modell på 27 miljarder parametrar på vår egen maskin. Varje översatt sträng går igenom kontroller innan den skrivs. Fyra av de 350 strängarna avvisades. Alla fyra avvisningarna var felaktiga.

Så här ser kontrollerna ut

En översättning som bryter en app är värre än ingen alls, så varje sträng måste behålla sina platshållare (%1$s, {name}, {{count}}), sina taggar, radbrytningar och URL:er; den måste vara i målspråkets skriftspråk; den får inte vara tom, löpa iväg eller vara kvar på engelska; och pluralformer måste täcka exakt de kategorier som språket har. En sträng som underkänns begärs på nytt med problemet specificerat, och en som underkänns igen lämnas ut, så att appen visar engelska för just den strängen.

De fyra avvisningarna

När kontrollerna var korrigerade bad en andra körning modellen bara om de fyra strängarna, eftersom allt annat fanns i översättningsminnet, och skrev alla 350 på 45 sekunder.

Den del vi förväntade oss att skulle misslyckas, men som inte gjorde det

Pluralformer är där naiv översättning fallerar: engelska har one och other, ryska har one, few, many och other, arabiska sex kategorier och japanska en enda form. Vi bad om exakt målspråkets kategorier och kontrollerade platshållarna i varje form. Modellen skrev "1 день, 2 дня, 5 дней" för ryska och alla sex arabiska former. Varje Android-plural godkändes vid första försöket i alla fem språken, och detsamma gällde varje pluralmeddelande utom det japanska som vår kontroll felaktigt läste.

Det ingen kontroll fångar

Vi översatte därefter de 22 websträngarna i exemplet till alla 42 språk som Polyglot känner till: 924 av 924 strängar godkändes. När vi läste igenom dem stack en ut. På khmer hade "You are offline" kommit tillbaka som en mening som säger "you are online". Det är korrekt formulerad khmer i rätt skrifttecken utan något som saknas, så alla kontroller godkände den. Kontroller fångar det som bryter en app; en felaktig betydelse kräver en person som läser språket.

Slutsatsen

Automatiska kontroller av maskinellt genererad output behöver verklig output att testas mot. Enhetstester med påhittade översättningar godkändes; ett riktigt modell som skrev riktig japanska hittade luckorna på minuter. Polyglot levereras med dessa kontroller, korrigerade, och med testerna för varje av de fyra fallen.

Uppdaterad: