เราตรวจสอบทุกการแปลด้วยเครื่อง การตรวจสอบนี่แหละคือส่วนที่ผิดพลาด
ภาษา
ก่อนปล่อยชุดเครื่องมือแปลภาษา เราทดสอบกับแอปตัวอย่างขนาดเล็ก: 70 สตริงใน 6 รูปแบบ (JSON, Flutter ARB, Android, Apple .strings, gettext และ Markdown) แปลเป็นเยอรมัน รัสเซีย ญี่ปุ่น อาหรับ และสเปน โดยใช้โมเดลโอเพนขนาด 27 พันล้านพารามิเตอร์บนเครื่องของเรา สตริงที่แปลแล้วทุกตัวจะผ่านการตรวจสอบก่อนถูกบันทึก มี 4 จาก 350 สตริงถูกปฏิเสธ และการปฏิเสธทั้ง 4 ครั้งนั้นผิด
สิ่งที่การตรวจสอบมองหา
การแปลที่ทำให้แอปพังแย่กว่าไม่แปลเลย ดังนั้นทุกสตริงต้องคง placeholder (%1$s, {name}, {{count}}), แท็ก, ตัวขึ้นบรรทัดใหม่ และ URL ไว้ให้ครบถ้วน ต้องอยู่ในระบบอักษรของภาษาปลายทาง ต้องไม่ว่างเปล่า ยาวเกินเหตุ หรือคงเป็นภาษาอังกฤษไว้ และรูปพหูพจน์ต้องครอบคลุมหมวดหมู่ที่ภาษานั้นมีพอดี สตริงที่ตรวจสอบไม่ผ่านจะถูกขอใหม่พร้อมระบุปัญหา และหากไม่ผ่านอีกจะถูกตัดออก เพื่อให้แอปแสดงภาษาอังกฤษสำหรับสตริงนั้นแทน
การปฏิเสธทั้ง 4 ครั้ง
- คำว่า "Backups" ในภาษาเยอรมันแปลเป็น "Backups" การตรวจสอบระบุว่าเป็นคำที่ไม่ได้แปล แต่ภาษาเยอรมันใช้คำภาษาอังกฤษนี้ คำที่เหมือนกันหนึ่งคำมักถูกต้อง แต่หากเหมือนกันสองคำขึ้นไปถือว่าไม่ถูกต้อง ซึ่งกลายเป็นกฎใหม่แล้ว
- บรรทัดภาษารัสเซียและญี่ปุ่นที่มีที่อยู่ อีเมล ไม่ผ่านการตรวจสอบระบบอักษร เนื่องจากมีตัวอักษรซีริลลิกหรือญี่ปุ่นน้อยกว่า 60% เพราะ
[email protected]เขียนด้วยอักษรละติน ตอนนี้ที่อยู่จะได้รับการปฏิบัติเหมือน placeholder: ต้องคงไว้โดยไม่เปลี่ยนแปลง และไม่นับเป็นตัวอักษร - ข้อความพหูพจน์ภาษาญี่ปุ่น กลับมาเป็น
{count, plural, =0{連続記録なし} other{{count}日連続}}สาขา{連続記録なし}ไม่มีช่องว่าง ทำให้รูปแบบ placeholder ตีความว่าเป็นตัวแปรชื่อ 連続記録なし ตอนนี้วงเล็บปีกกาของสาขาในข้อความพหูพจน์ถือเป็นโครงสร้าง และชื่อ placeholder ต้องเป็น ASCII
เมื่อแก้ไขการตรวจสอบแล้ว การรันครั้งที่สองขอให้โมเดลแปลเฉพาะ 4 สตริงนั้น เนื่องจากส่วนอื่นอยู่ในหน่วยความจำการแปลแล้ว และเขียนครบทั้ง 350 สตริงภายใน 45 วินาที
ส่วนที่เราคาดว่าจะล้มเหลวแต่กลับไม่ล้มเหลว
พหูพจน์คือจุดที่การแปลแบบง่ายๆ มักจะพัง: ภาษาอังกฤษมีรูปเอกพจน์และพหูพจน์ ภาษารัสเซียมีหนึ่ง สอง หลาย และอื่นๆ ภาษาอาหรับมีหกหมวดหมู่ ส่วนภาษาญี่ปุ่นมีเพียงรูปเดียว เราขอหมวดหมู่ของภาษาเป้าหมายอย่างถูกต้องและตรวจสอบ placeholder ในแต่ละรูป โมเดลเขียน "1 день, 2 дня, 5 дней" สำหรับภาษารัสเซียและครบทั้งหกรูปของภาษาอาหรับ พหูพจน์บน Android ผ่านการทดสอบตั้งแต่ครั้งแรกในทุกห้าภาษา เช่นเดียวกับข้อความพหูพจน์ทุกข้อความ ยกเว้นข้อความภาษาญี่ปุ่นที่การตรวจสอบของเราอ่านผิด
สิ่งที่ไม่มีระบบตรวจสอบใดจับได้
จากนั้นเราแปลตัวอย่างข้อความเว็บ 22 ข้อความเป็นทั้ง 42 ภาษาที่ Polyglot รองรับ: 924 จาก 924 ข้อความผ่านเกณฑ์ เมื่ออ่านทบทวน มีหนึ่งข้อความที่โดดเด่น ในภาษาเขมร "You are offline" ถูกแปลกลับเป็นประโยคที่หมายความว่า "คุณออนไลน์อยู่" ซึ่งเป็นภาษาเขมรที่ถูกต้องตามหลักไวยากรณ์ ใช้ตัวอักษรที่ถูกต้อง และไม่ขาดหายอะไรไป ระบบตรวจสอบทั้งหมดจึงผ่านข้อความนี้ ระบบตรวจสอบจับได้เฉพาะสิ่งที่ทำให้แอปทำงานผิดพลาด ส่วนความหมายที่ผิดต้องอาศัยคนที่อ่านภาษานั้นออก
บทสรุป
การตรวจสอบอัตโนมัติสำหรับผลลัพธ์จากเครื่องจำเป็นต้องมีผลลัพธ์จริงไว้ทดสอบ เทสต์ยูนิตที่ใช้คำแปลสมมติผ่านได้ แต่โมเดลจริงที่เขียนภาษาญี่ปุ่นจริงพบช่องโหว่ภายในไม่กี่นาที Polyglot มาพร้อมกับการตรวจสอบเหล่านี้ที่แก้ไขแล้ว พร้อมเทสต์สำหรับทั้งสี่กรณี