Am verificat fiecare traducere automată. Verificările au fost partea care a greșit.

Limbi

Înainte de a lansa kitul nostru de traducere, l-am rulat pe o aplicație de exemplu mică: 70 de șiruri în șase formate (JSON, Flutter ARB, Android, Apple .strings, gettext și Markdown) în germană, rusă, japoneză, arabă și spaniolă, cu un model deschis de 27 de miliarde de parametri pe propriul nostru calculator. Fiecare șir tradus trece prin verificări înainte de a fi scris. Patru dintre cele 350 au fost respinse. Toate cele patru respingeri au fost eronate.

Ce caută verificările

O traducere care strică o aplicație este mai rea decât niciuna, deci fiecare șir trebuie să își păstreze placeholder-ele (%1$s, {name}, {{count}}), etichetele, întreruperile de linie și URL-urile; trebuie să fie în alfabetul limbii țintă; nu trebuie să fie gol, să iasă din control sau să rămână în engleză; iar formele de plural trebuie să acopere exact categoriile pe care le are limba. Un șir care pică este cerut din nou, cu problema menționată, iar unul care pică din nou este lăsat afară, astfel încât aplicația afișează engleza pentru acel singur șir.

Cele patru respingeri

Odată corectate verificările, o a doua rulare a cerut modelului doar acele patru șiruri, deoarece restul se aflau în memoria de traducere, și a scris toate cele 350 în 45 de secunde.

Partea despre care ne așteptam să eșueze și nu a eșuat

Formele de plural sunt acolo unde traducerea naivă se strică: engleza are una și altele, rusa are una, câteva, multe și altele, araba șase categorii, japoneza o singură formă. Am cerut exact categorile limbii țintă și am verificat placeholderii fiecărei forme. Modelul a scris „1 день, 2 дня, 5 дней” pentru rusă și toate cele șase forme arabe. Fiecare plural Android a trecut din prima încercare în toate cele cinci limbi, la fel și fiecare mesaj cu plural, cu excepția celui în japoneză, pe care verificarea noastră l-a interpretat greșit.

Ceea ce nicio verificare nu poate prinde

Apoi am tradus cele 22 de șiruri web din exemplu în toate cele 42 de limbi pe care Polyglot le cunoaște: 924 din 924 de șiruri au trecut. Citindu-le, unul a ieșit în evidență. În khmeră, „You are offline” a fost returnat ca o propoziție care spune „ești online”. Este o khmeră bine formată, în alfabetul corect, fără nimic lipsă, așa că toate verificările au trecut-o. Verificările prind ceea ce strică o aplicație; un sens greșit are nevoie de o persoană care citește limba.

Concluzia

Verificările automate ale outputului generat de mașină au nevoie de output real pentru a fi testate. Testele unitare cu traduceri inventate au trecut; un model real care scria japoneză reală a găsit lacunele în câteva minute. Polyglot vine cu aceste verificări, corectate, și cu testele pentru fiecare dintre cele patru cazuri.

Actualizat: