Chúng tôi đã kiểm tra mọi bản dịch máy. Chính phần kiểm tra mới là chỗ sai.
Ngôn ngữ
Trước khi phát hành bộ công cụ dịch thuật, chúng tôi đã chạy thử trên một ứng dụng mẫu nhỏ: 70 chuỗi trong sáu định dạng (JSON, Flutter ARB, Android, Apple .strings, gettext và Markdown) sang tiếng Đức, tiếng Nga, tiếng Nhật, tiếng Ả Rập và tiếng Tây Ban Nha, sử dụng một mô hình mã nguồn mở 27 tỷ tham số trên máy của chúng tôi. Mọi chuỗi đã dịch đều được kiểm tra trước khi ghi lại. Bốn trong số 350 chuỗi bị từ chối. Cả bốn lần từ chối đều sai.
Các bước kiểm tra tìm kiếm điều gì
Một bản dịch làm hỏng ứng dụng còn tệ hơn là không có bản dịch, vì vậy mọi chuỗi phải giữ nguyên các placeholder (%1$s, {name}, {{count}}), các thẻ, ngắt dòng và URL; nó phải thuộc hệ chữ viết của ngôn ngữ đích; nó không được để trống, bị tràn hoặc còn giữ nguyên tiếng Anh; và các dạng số nhiều phải bao phủ chính xác các phạm trù mà ngôn ngữ đó có. Một chuỗi không đạt sẽ được yêu cầu dịch lại với vấn đề được chỉ rõ, và nếu lại không đạt, nó sẽ bị bỏ qua, để ứng dụng hiển thị tiếng Anh cho chuỗi đó.
Bốn lần từ chối
- "Backups" trong tiếng Đức là "Backups". Bộ kiểm tra đánh giá là chưa dịch. Tiếng Đức dùng chính từ tiếng Anh đó. Một từ giống hệt thường là đúng; hai từ trở lên giống hệt thì không, nên đó là quy tắc hiện tại.
- Một dòng tiếng Nga và một dòng tiếng Nhật có địa chỉ email không vượt qua bước kiểm tra hệ chữ viết: dưới 60% ký tự là chữ Cyrillic hoặc chữ Nhật, vì
[email protected]được viết bằng chữ Latin. Địa chỉ email giờ được xử lý như placeholder: chúng phải được giữ nguyên và không được tính là ký tự. - Một thông báo số nhiều tiếng Nhật trả về
{count, plural, =0{連続記録なし} other{{count}日連続}}. Nhánh{連続記録なし}không có khoảng trắng, nên mẫu placeholder coi nó là một biến tên là 連続記録なし. Các dấu ngoặc nhọn trong thông báo số nhiều giờ là cấu trúc, và tên placeholder phải là ASCII.
Sau khi các bước kiểm tra được sửa, một lần chạy thứ hai chỉ yêu cầu mô hình dịch lại bốn chuỗi đó, vì mọi thứ khác đã có trong bộ nhớ dịch, và ghi lại toàn bộ 350 chuỗi trong 45 giây.
Phần chúng tôi dự kiến sẽ thất bại nhưng lại không
Số nhiều là nơi bản dịch ngây thơ bị hỏng: tiếng Anh có một và nhiều, tiếng Nga có một, ít, nhiều và nhiều khác, tiếng Ả Rập có sáu loại, tiếng Nhật chỉ có một dạng. Chúng tôi yêu cầu chính xác các loại của ngôn ngữ đích và kiểm tra các placeholder trong từng dạng. Mô hình đã viết "1 день, 2 дня, 5 дней" cho tiếng Nga và cả sáu dạng tiếng Ả Rập. Mọi dạng số nhiều của Android đều đạt ngay lần thử đầu tiên ở cả năm ngôn ngữ, và tất cả các thông báo số nhiều cũng vậy, ngoại trừ thông báo tiếng Nhật mà bộ kiểm tra của chúng tôi đọc sai.
Những lỗi mà không bộ kiểm tra nào bắt được
Sau đó, chúng tôi dịch 22 chuỗi web trong ví dụ sang tất cả 42 ngôn ngữ mà Polyglot biết: 924/924 chuỗi đều đạt. Khi đọc qua, có một chuỗi nổi bật. Trong tiếng Khmer, "You are offline" được dịch thành một câu có nghĩa là "you are online". Đó là tiếng Khmer đúng chuẩn, đúng hệ chữ, không thiếu sót gì, nên mọi bộ kiểm tra đều cho qua. Các bộ kiểm tra bắt được những gì làm hỏng ứng dụng; một nghĩa sai cần có người đọc hiểu ngôn ngữ đó.
Bài học rút ra
Các bộ kiểm tra tự động trên đầu ra của máy cần đầu ra thực tế để đối chiếu. Các bài kiểm tra đơn vị với bản dịch bịa đặt đều đạt; một mô hình thực sự viết tiếng Nhật thực tế đã tìm ra các lỗ hổng trong vài phút. Polyglot đi kèm với các bộ kiểm tra này, đã được sửa, và với các bài kiểm tra cho từng trường hợp trong bốn trường hợp.