Proverili smo svaki mašinski prevod. Provere su bile deo koji je bio pogrešan.
Jezici
Pre nego što smo objavili naš komplet za prevod, testirali smo ga na maloj demo aplikaciji: 70 stringova u šest formata (JSON, Flutter ARB, Android, Apple .strings, gettext i Markdown) prevedenih na nemački, ruski, japanski, arapski i španski, koristeći otvoreni model sa 27 milijardi parametara na našoj mašini. Svaki prevedeni string prolazi kroz provere pre nego što se upiše. Četiri od 350 su odbijena. Sva četiri odbijanja su bila pogrešna.
Šta provere traže
Prevod koji pokvari aplikaciju je gori od nepostojanja prevoda, pa svaki string mora zadržati svoje placeholder-e (%1$s, {name}, {{count}}), svoje tagove, prelome redova i URL-ove; mora biti u pismu ciljnog jezika; ne sme biti prazan, predugačak ili ostavljen na engleskom; i množine moraju pokrivati tačno one kategorije koje jezik ima. String koji ne prođe proveru se ponovo traži uz naznačen problem, a onaj koji ponovo ne prođe se izostavlja, tako da aplikacija za taj jedan string prikazuje engleski.
Četiri odbijanja
- "Backups" na nemačkom je bio "Backups". Provera ga je označila kao nepreveden. Nemački koristi englesku reč. Jedna identična reč je često tačna; dve ili više identičnih reči nisu, pa je to sada pravilo.
- Ruski i japanski red sa e-mail adresom nisu prošli proveru pisma: manje od 60% slova je bilo ćirilično ili japansko, jer se
[email protected]piše latinicom. Adrese se sada tretiraju kao placeholder-i: moraju se vratiti nepromenjene i ne računaju se kao slova. - Japanska poruka u množini se vratila kao
{count, plural, =0{連続記録なし} other{{count}日連続}}. Grana{連続記録なし}nema razmake, pa je obrazac za placeholder-e to protumačio kao promenljivu pod nazivom 連続記録なし. Vitičaste zagrade u porukama množine su sada struktura, a nazivi placeholder-a moraju biti ASCII.
Kada su provere ispravljene, drugi prolaz je tražio od modela samo ta četiri stringa, pošto je sve ostalo bilo u memoriji prevoda, i upisao svih 350 za 45 sekundi.
Deo za koji smo očekivali da će zakazati, a nije
Množine su mesto gde naivni prevod puca: engleski ima jednu i drugu formu, ruski ima jednu, malo, mnogo i drugu formu, arapski šest kategorija, a japanski samo jednu formu. Tražili smo tačno kategorije ciljnog jezika i proverili placeholder-e za svaku formu. Model je napisao "1 день, 2 дня, 5 дней" za ruski i svih šest arapskih formi. Svaka Android množina prošla je iz prvog pokušaja u svih pet jezika, kao i svaka poruka s množinom osim japanske, koju je naša provera pogrešno protumačila.
Ono što nijedna provera ne može da uhvati
Zatim smo preveli 22 veb stringa iz primera na svih 42 jezika koje Polyglot poznaje: 924 od 924 stringa su prošla. Čitajući ih, jedan se istakao. Na kmerskom, "You are offline" vratio se kao rečenica koja kaže "online ste". To je ispravno napisan kmerski u odgovarajućem pismu, bez propusta, pa ga je svaka provera prihvatila. Provere hvataju ono što kvari aplikaciju; pogrešno značenje zahteva osobu koja čita taj jezik.
Zaključak
Automatske provere mašinskog izlaza zahtevaju stvarni izlaz za poređenje. Jedinice testiranja sa izmišljenim prevodima su prošle; stvarni model koji piše stvarni japanski pronašao je propuste za nekoliko minuta. Polyglot dolazi sa ovim proverama, ispravljenim, i sa testovima za svaki od četiri slučaja.