Sprawdziliśmy każde tłumaczenie maszynowe. To właśnie te sprawdzenia były błędne.
Języki
Zanim udostępniliśmy nasz zestaw do tłumaczenia, przetestowaliśmy go na małej przykładowej aplikacji: 70 ciągów znaków w sześciu formatach (JSON, Flutter ARB, Android, Apple .strings, gettext i Markdown) na niemiecki, rosyjski, japoński, arabski i hiszpański, przy użyciu otwartego modelu z 27 miliardami parametrów na naszej własnej maszynie. Każdy przetłumaczony ciąg znaków przechodzi sprawdzenia przed zapisaniem. Cztery z 350 zostały odrzucone. Wszystkie cztery odrzucenia były błędne.
Na co patrzą sprawdzenia
Tłumaczenie, które psuje aplikację, jest gorsze niż brak tłumaczenia, więc każdy ciąg znaków musi zachować swoje placeholdery (%1$s, {name}, {{count}}), tagi, znaki nowej linii i adresy URL; musi być zapisany w alfabecie języka docelowego; nie może być pusty, nadmiernie długi ani pozostawiony w języku angielskim; a formy liczby mnogiej muszą dokładnie pokrywać kategorie właściwe dla danego języka. Ciąg znaków, który nie przejdzie sprawdzenia, jest ponownie tłumaczony z podaniem nazwy problemu, a ten, który nie przejdzie ponownie, jest pomijany, więc aplikacja wyświetla angielski tekst dla tego jednego ciągu.
Cztery odrzucenia
- „Backups” w języku niemieckim brzmiało „Backups”. Sprawdzenie uznało to za nieprzetłumaczone. Niemiecki używa angielskiego słowa. Jedno identyczne słowo jest często poprawne; dwa lub więcej identycznych słów już nie, więc taka jest teraz zasada.
- Rosyjski i japoński wiersz z adresem e-mail nie przeszły sprawdzenia alfabetu: mniej niż 60% liter było cyrylicą lub znakami japońskimi, ponieważ
[email protected]jest zapisany literami łacińskimi. Adresy są teraz traktowane jak placeholdery: muszą wrócić bez zmian i nie są liczone jako litery. - Japoński komunikat z liczbą mnogą zwrócił
{count, plural, =0{連続記録なし} other{{count}日連続}}. Gałąź{連続記録なし}nie zawiera spacji, więc wzorzec placeholdera potraktował ją jako zmienną o nazwie 連続記録なし. Nawiasy klamrowe gałęzi w komunikatach z liczbą mnogą są teraz strukturą, a nazwy placeholderów muszą być w ASCII.
Po naprawieniu sprawdzeń drugie uruchomienie poprosiło model tylko o te cztery ciągi znaków, ponieważ wszystko inne było w pamięci tłumaczeniowej, i zapisało wszystkie 350 w 45 sekund.
Część, która miała się nie udać, a się udała
Liczby mnogie to miejsce, w którym naiwne tłumaczenie się załamuje: angielski ma formy one i other, rosyjski one, few, many i other, arabski sześć kategorii, a japoński jedną formę. Poprosiliśmy dokładnie o kategorie języka docelowego i sprawdziliśmy placeholdery w każdej formie. Model napisał „1 день, 2 дня, 5 дней” dla rosyjskiego i wszystkie sześć form arabskich. Każda reguła mnoga dla Androida przeszła za pierwszym razem we wszystkich pięciu językach, podobnie jak każda wiadomość mnoga poza tą w języku japońskim, którą nasza kontrola błędnie odczytała.
Tego nie wykryje żadna kontrola
Następnie przetłumaczyliśmy 22 przykładowe ciągi tekstowe ze strony internetowej na wszystkie 42 języki, które zna Polyglot: 924 z 924 ciągów przeszły pomyślnie. Przeglądając je, jeden wyróżniał się szczególnie. W języku khmerskim „You are offline” zostało przetłumaczone jako zdanie oznaczające „jesteś online”. To poprawne gramatycznie zdanie w języku khmerskim, zapisane właściwym pismem, bez brakujących elementów, więc każda kontrola je przepuściła. Kontrole wykrywają to, co psuje aplikację; błędne znaczenie wymaga osoby, która czyta w danym języku.
Wniosek
Automatyczne kontrole wyników maszynowych wymagają rzeczywistych danych do przetestowania. Testy jednostkowe z wymyślonymi tłumaczeniami przechodziły; prawdziwy model piszący prawdziwy japoński znalazł luki w kilka minut. Polyglot jest dostarczany z tymi kontrolami, poprawkami oraz testami dla każdego z czterech przypadków.