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

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.

Zaktualizowano: