Preverili smo vsak strojni prevod. Napačen je bil prav del s preverjanji.
Jeziki
Pred izidom našega kompleta za prevajanje smo ga preizkusili na majhni vzorčni aplikaciji: 70 nizov v šestih formatih (JSON, Flutter ARB, Android, Apple .strings, gettext in Markdown) v nemščino, ruščino, japonščino, arabščino in španščino, z odprtim modelom z 27 milijardami parametrov na našem lastnem računalniku. Vsak preveden niz gre pred zapisom skozi preverjanja. Štirje od 350 so bili zavrnjeni. Vse štiri zavrnitve so bile napačne.
Kaj preverjanja iščejo
Prevod, ki pokvari aplikacijo, je slabši od nobenega, zato mora vsak niz obdržati svoje rezervirane znake (%1$s, {name}, {{count}}), oznake, prelome vrstic in URL-je; mora biti v pisavi ciljnega jezika; ne sme biti prazen, razrasel ali puščen v angleščini; in množinske oblike morajo pokrivati natanko tiste kategorije, ki jih jezik ima. Niz, ki ne uspe, se ponovno zahteva z navedenim problemom, tisti, ki ponovno ne uspe, pa izpade, zato aplikacija za ta en niz prikaže angleščino.
Štiri zavrnitve
- "Backups" v nemščini je bilo "Backups". Preverjanje je to označilo kot neprevedeno. Nemščina uporablja angleško besedo. Enaka ena beseda je pogosto pravilna; dve ali več enakih besed ni, zato je to zdaj pravilo.
- Ruska in japonska vrstica z e-poštnim naslovom nista uspeli pri preverjanju pisave: manj kot 60 % črk je bilo ciriličnih ali japonskih, ker je
[email protected]zapisan z latiničnimi črkami. Naslovi se zdaj obravnavajo kot rezervirani znaki: vrniti se morajo nespremenjeni in ne štejejo se kot črke. - Japonsko sporočilo v množini se je vrnilo kot
{count, plural, =0{連続記録なし} other{{count}日連続}}. Vključek{連続記録なし}nima presledkov, zato je vzorec za rezervirane znake to vzel za spremenljivko z imenom 連続記録なし. Oklepaji vključkov v množinskih sporočilih so zdaj struktura, imena rezerviranih znakov pa morajo biti ASCII.
Ko so bila preverjanja popravljena, je drugi zagon od modela zahteval le te štiri nize, saj so bili vsi ostali v pomnilniku prevodov, in je vseh 350 zapisal v 45 sekundah.
Del, za katerega smo pričakovali napako, a ni bilo nobene
Množinske oblike so tam, kjer naivni prevodi odpovejo: angleščina pozna eno in drugo obliko, ruščina eno, malo, veliko in drugo obliko, arabščina šest kategorij, japonščina pa samo eno obliko. Zahtevali smo natanko ciljne kategorije in preverili nadomestne oznake vsake oblike. Model je za ruščino zapisal "1 день, 2 дня, 5 дней" in vseh šest arabskih oblik. Vse androidne množinske oblike so bile uspešne že ob prvem poskusu v vseh petih jezikih, prav tako vsa množinska sporočila, razen japonskega, ki ga je naš preverjal napačno prebral.
Kar noben preverjanje ne more ujeti
Nato smo prevedli 22 spletnih nizov iz primera v vseh 42 jezikov, ki jih Polyglot pozna: 924 od 924 nizov je bilo uspešnih. Ob pregledu se je izpostavil eden. V kmerščini se je "You are offline" vrnil kot stavek, ki pravi "ste online". Gre za pravilno oblikovan kmerščino v pravem pisju brez manjkajočih delov, zato ga je vsako preverjanje sprejelo. Preverjanja uidejo tisto, kar pokvari aplikacijo; napačen pomen potrebuje osebo, ki jezik bere.
Ključna ugotovitev
Samodejna preverjanja strojnega izhoda potrebujejo resničen izhod, s katerim se primerjajo. Enotni testi z izmišljenimi prevodi so bili uspešni; resničen model, ki je pisal resnično japonščino, je vrzeli našel v nekaj minutah. Polyglot je na voljo s temi preverjanji, popravljenimi, in s testi za vsakega od štirih primerov.