Tüm makine çevirilerini kontrol ettik. Yanlış olan kısım kontrollerin kendisiydi.
Diller
Çeviri paketimizi yayınlamadan önce küçük bir örnek uygulamada denedik: Kendi makinemizde 27 milyar parametreli açık bir model kullanarak, altı farklı formattaki (JSON, Flutter ARB, Android, Apple .strings, gettext ve Markdown) 70 metin dizesini Almanca, Rusça, Japonca, Arapça ve İspanyolcaya çevirdik. Çevrilen her metin dizesi yazılmadan önce kontrollerden geçer. 350 dizeden dördü reddedildi. Dört reddin hepsi de yanlıştı.
Kontroller neye bakar
Bir uygulamayı bozan bir çeviri, hiç olmamasından daha kötüdür; bu yüzden her metin dizesi yer tutucularını (%1$s, {name}, {{count}}), etiketlerini, satır sonlarını ve URL'lerini korumalı; hedef dilin alfabesinde olmalı; boş, taşkın veya İngilizce kalmamalı ve çoğul biçimleri, dilin sahip olduğu kategorileri tam olarak kapsamalı. Başarısız olan bir dize, sorun belirtilerek yeniden istenir ve tekrar başarısız olursa dışarıda bırakılır; böylece uygulama o tek dize için İngilizceyi gösterir.
Dört red kararı
- Almancada "Backups" kelimesi "Backups" olarak çevrildi. Kontrol bunu çevrilmemiş olarak nitelendirdi. Almanca İngilizce kelimeyi kullanır. Tek bir aynı kelime genellikle doğrudur; iki veya daha fazla aynı kelime doğru değildir, bu yüzden kural artık budur.
- Bir Rusça ve bir Japonca satır, bir e-posta adresi içerdiği için alfabe kontrolünden geçemedi: Harflerin %60'ından azı Kiril veya Japonca karakterlerdi, çünkü
[email protected]Latin harfleriyle yazılmıştır. Adresler artık yer tutucu gibi ele alınır: Değişmeden gelmeli ve harf sayılmazlar. - Bir Japonca çoğul mesajı
{count, plural, =0{連続記録なし} other{{count}日連続}}olarak döndü.{連続記録なし}dalında boşluk olmadığı için, yer tutucu kalıbı bunu 連続記録なし adında bir değişken sandı. Çoğul mesajlardaki dal parantezleri artık yapısal öğedir ve yer tutucu adları ASCII olmalıdır.
Kontroller düzeltildikten sonra, diğer her şey çeviri belleğinde olduğu için ikinci bir çalıştırma modelden yalnızca o dört dizeyi istedi ve 350 dizenin tamamını 45 saniyede yazdı.
Başarısız olmasını beklediğimiz ama olmayan kısım
Çoğul biçimleri, basit çevirinin tökezlediği yerdir: İngilizcede bir ve diğer vardır, Rusçada bir, az, çok ve diğer, Arapçada altı kategori, Japoncada tek bir biçim. Hedef dilin tam olarak hangi kategorileri olduğunu istedik ve her biçimin yer tutucularını kontrol ettik. Model Rusça için "1 день, 2 дня, 5 дней" ve Arapça için altı biçimin tamamını yazdı. Beş dilin tamamında tüm Android çoğul biçimleri ilk denemede geçti ve kontrolümüzün yanlış okuduğu Japonca mesaj hariç tüm çoğul mesajlar geçti.
Hiçbir kontrolün yakalayamadığı şey
Ardından örnekteki 22 web metnini Polyglot'un bildiği 42 dilin tamamına çevirdik: 924 metnin 924'ü geçti. Bunları okurken biri öne çıktı. Khmerce'de "You are offline" ifadesi "çevrimiçisiniz" anlamına gelen bir cümle olarak dönmüştü. Doğru alfabeyle, eksiksiz ve dilbilgisi açısından doğru bir Khmerce cümlesiydi, bu yüzden tüm kontrollerden geçti. Kontroller uygulamayı bozan şeyleri yakalar; yanlış bir anlamı ancak o dili okuyan bir kişi fark eder.
Çıkarılacak ders
Makine çıktısı üzerindeki otomatik kontrollerin, test edilecek gerçek bir çıktıya ihtiyacı vardır. Uydurma çevirilerle yapılan birim testleri geçti; gerçek bir modelin gerçek Japonca yazması, eksikleri dakikalar içinde buldu. Polyglot, bu kontrollerle, düzeltilmiş haliyle ve dört durumun her biri için testlerle birlikte gelir.