Trang nhà > Công nghệ > Ứng dụng > Machine Translation (1)
ThS Lê Văn Lợi
Machine Translation (1)
Thứ Năm 27, Tháng Năm 2021, bởi
Ý của tôi ở đây là “máy dịch” văn bản trong ngôn ngữ này sang văn bản trong ngôn ngữ khác. Nghĩa là “máy” đóng vai là người phiên dịch hoặc biên dịch. Trong thời gian gần đây có rất nhiều phần mềm “dịch máy” nhưng hồi 1980-1990, tôi tin có nhiều bạn cũng giống như tôi đã cho rằng nó chỉ nằm trong giấc mơ.
ⓐ Dịch máy theo quy tắc
Ý tưởng đầu tiên của dịch máy theo quy tắc (Rule-based machine translation) là bắt chước phong cách của một người “thông ngôn”:
- Một cuốn từ điển ngôn ngữ nguồn – ngôn ngữ đích (ví dụ: Anh – Việt)
- Các bộ quy tắc ngôn ngữ (nguồn và đích)
Chỉ cần thế thôi! Đúng thế, vì nếu lập trình được đầy đủ quy tắc và có từ điển thì đúng là hoàn toàn có thể dịch bằng máy được. Về mặt lý thuyết là thế. Tất nhiên là phải có việc tách từ, rồi xác định chủ ngữ, vị ngữ, ngôi, số ít, số nhiều, …
Đại diện cho trường phái này (thời xưa) có Systran và PROMPT. Đấy là tôi nói thời xưa, chứ các link mà tôi dẫn ra đều dịch bằng NMT (dịch bằng mạng nơ-ron). Tức là họ đã áp dụng công nghệ mới nhất – thời nay.
Cùng ý tưởng với cách tiếp cận này có Dịch máy trực tiếp (Direct Machine Translation), Dịch máy qua chuyển giao (Transfer-based Machine Translation) và Dịch máy qua liên ngữ (Interlingua).
① Dịch máy trực tiếp (Direct Machine Translation)
Đoạn văn bản trong ngôn ngữ nguồn được tách ra thành một chuỗi các từ; dịch các từ này ra ngôn ngữ đích, chỉnh chính tả, số ít số nhiều và chúng ta được một bản dịch sang ngôn ngữ đích. Nếu ngôn ngữ đích là tiếng mẹ đẻ thì ít nhiều chúng ta cũng đoán được ý.
② Dịch máy qua chuyển giao (Transfer-based Machine Translation)
Cách tiếp cận này gồm 3 bước:
- Bước 1: Chuyển đổi văn bản ngôn ngữ nguồn thành một biểu diễn trừu tượng hướng ngôn ngữ. Ví dụ cấu trúc cây cú pháp (syntax-based trees). Chú ý rằng cấu trúc này mang đặc tính của từng ngôn ngữ. Ví dụ, cấu trúc cây cú pháp của tiếng Việt khác với cấu trúc cây cú pháp của tiếng Anh.
- Bước 2: Chuyển biểu diễn trong ngôn ngữ nguồn sang biểu diễn tương tự trong ngôn ngữ đích.
- Bước 3: Chuyển từ biểu diễn (ngôn ngữ đích) thành đoạn văn bản dịch trong ngôn ngữ đích.
Một cách trực quan: văn bản nguồn → biểu diễn nguồn → biểu diễn đích → văn bản đích
③ Dịch máy qua liên ngữ (Interlingua)
Trong phần dịch máy qua chuyển giao, chúng ta thấy mỗi một ngôn ngữ có cách biểu diễn riêng biệt. Bây giờ chúng ta tưởng tượng có một cách biểu diễn chung cho tất cả các ngôn ngữ – vì vậy có tên là Interlinga – điểm giao chung của tất cả các ngôn ngữ. Tôi tạm dịch là liên ngữ - liên kết tất cả các ngôn ngữ thành một điểm chung. Ba bước ở trên chỉ còn 2 bước: văn bản nguồn → biểu diễn interlingua → văn bản đích
Có vẻ như rất lý tưởng. Nhưng thưa các bạn, chưa ai tìm được interlingua cả!
Điểm yếu nghiêm trọng của dịch máy theo quy tắc, là dịch các câu bất quy tắc. (Đã là bất quy tắc thì làm sao mà dùng quy tắc để dịch được, đúng không ạ?! 😊) Mà vấn đề bất quy tắc thì ngôn ngữ nào cũng có. Còn chưa kể trường hợp từ đa nghĩa (cùng một từ nhưng lúc thì nghĩa này, lúc thì nghĩa khác).
ⓑ Dịch máy theo câu mẫu
Ý tưởng dịch theo câu mẫu (Example-based Machine Translation) rất dung dị. Ví dụ, máy dịch câu:
- Cái ô này bao nhiêu? → How much is this umbrella?
Tương tự như dịch câu: - Cái máy ảnh này bao nhiêu? → How much is this camera?
Có mẫu chung là:
- X này bao nhiêu? → How much is this X?
Bây giờ chúng ta tưởng tượng là nếu có bản dịch tất cả các mẫu câu thì việc dịch máy trở nên vô cùng đơn giản. Tất nhiên, trở ngại lớn nhất là làm sao mà chúng ta có đủ bản dịch tất cả các mẫu câu đó.
⚠ Trên thực tế, cách tiếp cận này không khả thi vì số mẫu câu gần như vô tận.
💡 Tuy vậy, đây là một ý tưởng đột phá! Vì sao vậy? Vì như chúng ta nhận thấy, máy không cần biết đến các quy tắc ngôn ngữ, cũng không cần biết đến cú pháp, chỉ cần có kho ngữ liệu đủ là được. Kho ngữ liệu là mẫu các bản dịch từ ngôn ngữ nguồn sang ngôn ngữ đích.
ⓒ Dịch máy sử dụng thống kê
(Statistical Machine Translation - SMT): Vào đầu những năm 1990, IBM giới thiệu một máy dịch tự động chỉ dựa vào các văn bản đã được dịch sẵn từ trước. Cái máy đó chả biết gì về cú pháp cũng chả có kiến thức gì như một nhà ngôn ngữ học cả.
💡 Nghĩ kỹ thì thấy cỗ máy dịch về thực chất là chuyển đổi một “chuỗi từ” trong ngôn ngữ nguồn sang một “chuỗi từ” trong ngôn ngữ đích. Và ý tưởng của IBM là “học” các bản dịch đã có sẵn. Nếu các bản dịch có chất lượng cao thì máy cũng có “cơ hội” để đạt được chất lượng cao nếu máy “học tốt” và “học nhiều”! Tư duy của cách tiếp cận này là: nếu các chuyên gia hàng đầu về dịch thuật đã dịch như vậy thì máy cũng sẽ bắt chước đến từng câu, từng chữ! 😊 Tư duy tuy đơn giản mà hay! Phải xem đây là ý tưởng đột phá.
Thế nguồn các bản dịch lấy ở đâu? Có một nơi mà nguồn các bản dịch có khá nhiều và chất lượng rất cao: đó là các kỷ yếu của Liên hiệp quốc (United Nations). Tất cả các thành viên của Liên hiệp quốc phải có bản dịch ra ngôn ngữ của nước mình. Ngoài nguồn từ UN, người ta có thể lấy các kỷ yếu ở cấp thấp hơn như châu lục, vùng, kỷ yếu của văn bản các hiệp định song phương, các bài viết song ngữ trên các báo điện tử, …
SMT hoạt động như thế nào?
- Người ta chuẩn bị một kho ngữ liệu song ngữ gồm các bản dịch từ ngôn ngữ nguồn sang ngôn ngữ đích (ví dụ Việt – Anh);
- Máy được huấn luyện (training) để học cách dịch từ kho ngữ liệu này;
- Sau khi máy học xong, chúng ta chỉ cần đưa văn bản trong ngôn ngữ nguồn (vd. Tiếng Việt) là đầu vào thì máy sẽ cho ra văn bản đích là bản dịch ra ngôn ngữ đích (vd. Tiếng Anh).
Chú ý rằng kho ngữ liệu càng lớn thì máy sẽ có chất lượng dịch càng tốt – với điều kiện là tất cả các bản dịch đều có chất lượng cao. Đơn vị dịch của kho ngữ liệu là câu. Nghĩa là văn bản dịch thường là tổ hợp của các câu dịch.
SMT “tiến hóa” từ “dịch từng từ một” (Word-based SMT) lên “dịch cắt đoạn cụm từ” (Phrase-based SMT). Tôi xin tóm lược như sau:
① Dịch máy “từng từ một” (Word-based SMT)
Ý tưởng khá đơn giản: tách câu thành tổ hợp các từ và dịch từng từ một. Ví dụ, chúng ta tra từ điển và dịch từ “nhà” sang tiếng Anh thì được từ “home”. (Còn có một số tùy chọn khác nữa.) Câu hỏi đặt ra là máy làm sao nó biết dịch như thế? Câu trả lời đơn giản là: lúc đầu máy không hề biết! SMT không sử dụng từ điển.
Cách của SMT là đọc hàng triệu câu dịch và làm thống kê. Cứ câu nào trong bản nguồn có từ “nhà” thì thống kê tất cả các từ có trong bản dịch. Ví dụ, trong 10.000 lần xuất hiện từ “nhà” trong bản nguồn, trong bản dịch người ta thu được kết quả thống kê như sau:
- Từ “home” xuất hiện 6.000 lần;
- Từ “house” xuất hiện 2.000 lần;
- Từ “dormitory” xuất hiện 100 lần;
- …
Như vậy, xác suất xuất hiện từ “home” = Pnhà(home) = 6.000/10.000 = 0,6.
Do bản dịch từ “nhà” thành từ “home” có xác suất lớn nhất nên máy sẽ chọn “home” là kết quả! Đại ý là thế, còn nhiều chi tiết nữa nhưng chúng ta khỏi cần đi sâu.
IBM đưa ra 5 mô hình SMT, chúng ta cùng lược qua:
Mô hình 1 (túi từ: bag of words): Mô hình này được gọi là “túi từ” (bag of words) vì cách dịch của mô hình này là: túi từ nguồn → túi từ đích. Mô hình này không tính đến thứ tự của từ trong câu. Nghĩa là một “mớ từ” trong ngôn ngữ nguồn được dịch thành một “mớ từ” trong ngôn ngữ đích. Dĩ nhiên, mô hình này không dùng được trong thực tế.
Mô hình 2 (xử lý vấn đề thứ tự từ trong câu – word order): Từ mô hình 1, chúng ta thu được bản dịch là một “túi từ”. Bây giờ máy phải sắp xếp chúng theo đúng thứ tự. Cách mà người ta xác định thứ tự từ trong câu là sử dụng các phép toán về xác suất thống kê bằng mô hình ước lượng (Estimating Model). Khá nhức đầu, tôi khuyến cáo bỏ qua. 😊
Mô hình 3 (thêm “hệ số từ sinh” – fertility): Khi dịch, người ta nhận thấy một từ ở ngôn ngữ nguồn có thể dịch thành một hoặc nhiều từ ở bản đích (hoặc bị triệt tiêu ở bản đích). Ví dụ: đây là nhà đẹp → this is a house beautiful. Chú ý từ “nhà” được dịch thành “a house”. Vậy từ “nhà” có “hệ số từ sinh” (fertility) = 2.
Mô hình 4 (thêm “dóng từ”): Dóng từ (word alignment) là vấn đề căn bản trong SMT: từ ở bản nguồn tương ứng với từ ở bản đích. Ví dụ: đây là nhà đẹp → this is a beautiful house. Từ “đây” dóng với từ “this”, từ “là” dóng với từ “is”, từ “nhà” dóng với “house”, từ “đẹp” dóng với từ “beautiful”.
Mô hình 5 (gỡ rối – bug fixes): là bản sửa lỗi của mô hình 4.
Mô hình dịch từng từ một tuy có ý tưởng đột phá song không giải quyết được một số vấn đề cơ bản như giống (gender) hay từ đa nghĩa.
② Mô hình n-gram
Nôm na: mô hình n-gram là hình thức tách chuỗi thành các đoạn gồm n phần tử liền nhau – lợp (ngói) n tấm. Ví dụ, giả thiết chúng ta có chuỗi a, b, c, d, e, f. Cách tách thành mô hình 3-gram: “a”, “ab”, “abc”, “bcd”, “cde”, “def”, “ef”, “f”.
Nếu chúng ta xem mỗi phần tử là một từ thì tách từ chính là mô hình 1-gram hay còn gọi là unigram. Mô hình 2-gram có tên gọi là bigram/digram. Mô hình 3-gram có tên gọi là trigram.
③ Đo chất lượng bản dịch: thước đo BLEU (BiLingual Evaluation Understudy)
Trước khi bàn đến phần dịch máy theo cụm từ, chúng ta đặt vấn đề đánh giá chất lượng bản dịch. Và việc đánh giá này cũng phải được thực hiện bằng máy – nghĩa là tự động chứ không phải mỗi lần đánh giá lại phải lập hội đồng gồm 7 hoặc 9 vị. Tốn nguồn lực, chậm mà chưa chắc đã khách quan! 😊
Thưa các bạn, việc này rất quan trọng trong việc thúc đẩy các ý tưởng về dịch máy. Hàng năm, có rất nhiều nghiên cứu về vấn đề này. Để đánh giá được ý tưởng thì không thể chỉ căn cứ vào bài báo, mà phải căn cứ vào kết quả thực nghiệm của phần mềm thể hiện ý tưởng.
Năm 2002, Kishore Papineni et al. đã công bố một thước đo có tên là BLEU mà về sau được cộng đồng sử dụng một cách rộng rãi. Bài báo đấy ở đây.
Nguyên lý đánh giá của BLEU là bản dịch nào càng sát với bản dịch của chuyên gia dịch thuật chuyên nghiệp thì càng tốt. Thước đo này có 2 thành phần:
- Kho ngữ liệu chứa bản dịch chuẩn, tốt nhất – điểm tuyệt đối (100%). Bản dịch này là của các chuyên gia dịch thuật. Chú ý rằng số bản tham chiếu có thể nhiều chứ không nhất thiết chỉ duy nhất một tham chiếu.
- Một thước đo bằng số, đo độ tương tự của bản đang dịch so với bản “chuẩn” ở trên – điểm từ 0% đến 100%.
Tham khảo bài báo, bạn sẽ nhận thấy là họ tách bản dịch thành 4-gram và tính tỷ lệ trùng các tách đoạn bản dịch so với bản chuẩn. Đơn giản mà hiệu quả!
Các bài báo, khi đề cập đến điểm BLEU họ thường chỉ cho con số, ví dụ 34.5. Điều đó có nghĩa là họ đạt được điểm 34,5%.
④ Dịch máy “từng cụm từ một”
Dịch “từng cụm từ một” (Phrase-based SMT) thừa kế toàn bộ các phương pháp của dịch tách từng từ một (Word-based SMT) – chỉ có một điểm khác: tách câu theo mô hình n-gram, chứ không phải tách từng từ (1-gram). Nói cách khác, đơn vị “hạt nhân” lần này là đoạn n từ đi liền nhau. Từ chỗ “dịch từng từ một”, chúng ta chuyển thành “dịch từng cụm từ một”. Thay vì thống kê dịch “từ → từ”, chúng ta thống kê dịch “cụm từ → cụm từ”. Tất nhiên, mức độ tính toán sẽ tăng lên. Tuy nhiên, vào thời điểm hiện nay, độ phức tạp tính toán không còn là vấn đề lớn như thời xưa.
Bằng trực quan, chúng ta nhận thấy là trong ngôn ngữ, không phải từ nào cũng ghép được với bất kỳ từ nào khác. Chỉ có một số lượng nhỏ các cặp từ đi liền nhau là có nghĩa. Tương tự như vậy, không phải tổ hợp 3 từ nào cũng có thể ghép được với nhau. Rất nhiều tổ hợp vô nghĩa – tức là, trong thực tế chả ai nói hoặc viết theo các tổ hợp đó bao giờ. Như vậy, cụm từ phổ biến sẽ xuất hiện nhiều trong các bản dịch song ngữ. Ngược lại, các cụm từ khác, rất ít hoặc không bao giờ xuất hiện trong các bản dịch. Vì SMT dịch theo thống kê xác suất nên kết quả là bản dịch sẽ cho kết quả xuất hiện nhiều các cụm từ phổ biến, hay dùng (vì có xác suất lớn hơn).
Vì vậy, nhờ sử dụng mô hình n-gram mà SMT có chất lượng các bản dịch tốt hơn hẳn.