We hebben elke machinevertaling gecontroleerd. De controles waren het deel dat fout was.

Talen

Voordat we onze vertaalkit uitbrachten, hebben we hem getest op een kleine voorbeeldapp: 70 strings in zes formaten (JSON, Flutter ARB, Android, Apple .strings, gettext en Markdown) naar Duits, Russisch, Japans, Arabisch en Spaans, met een open model van 27 miljard parameters op onze eigen machine. Elke vertaalde string gaat door controles voordat hij wordt weggeschreven. Vier van de 350 werden afgekeurd. Alle vier de afkeuringen waren onterecht.

Waar de controles op letten

Een vertaling die een app breekt is erger dan geen, dus elke string moet zijn placeholders (%1$s, {name}, {{count}}), zijn tags, regeleinden en URL's behouden; hij moet in het schrift van de doeltaal staan; hij mag niet leeg, uit de hand gelopen of in het Engels zijn; en meervoudsvormen moeten precies de categorieën dekken die de taal heeft. Een string die faalt wordt opnieuw opgevraagd met de naam van het probleem, en een die opnieuw faalt wordt weggelaten, zodat de app voor die ene string Engels toont.

De vier afkeuringen

Nadat de controles waren gecorrigeerd, vroeg een tweede run het model alleen om die vier strings, omdat de rest in het vertaalgeheugen zat, en schreef alle 350 in 45 seconden weg.

Het deel waarvan we verwachtten dat het zou falen en dat niet deed

Meervoudsvormen zijn waar naïeve vertalingen falen: Engels heeft one en other, Russisch one, few, many en other, Arabisch zes categorieën, Japans één vorm. We vroegen om precies de doelcategorien en controleerden de placeholders van elke vorm. Het model schreef "1 день, 2 дня, 5 дней" voor Russisch en alle zes Arabische vormen. Elke Android-meervoudsvorm slaagde bij de eerste poging in alle vijf talen, en dat gold ook voor elk meervoudsbericht behalve het Japanse, dat onze controle verkeerd las.

Wat geen enkele controle kan vangen

Vervolgens vertaalden we de 22 webstrings van het voorbeeld naar alle 42 talen die Polyglot kent: 924 van de 924 strings slaagden. Bij het doorlezen viel er één op. In het Khmer was "You are offline" teruggekomen als een zin die "you are online" betekent. Het is correct Khmer in het juiste schrift met niets ontbrekend, dus elke controle liet het door. Controles vangen wat een app breekt; een verkeerde betekenis vereist iemand die de taal leest.

De conclusie

Automatische controles op machine-uitvoer hebben echte uitvoering nodig om tegen te testen. Unittests met verzonnen vertalingen slaagden; een echt model dat echt Japans schreef, vond de gaten in minuten. Polyglot wordt geleverd met deze controles, gerepareerd, en met de tests voor elk van de vier gevallen.

Bijgewerkt: