Thuật toán mà QT dùng thì nó là một trong những thuật toán cổ điển những năm đầu thế kỉ 21, từ đó đến nay thì thế giới đã xuất diện nhiều bước tiến vượt bậc trong lĩnh vực dịch máy. Nếu bạn chỉ mô phỏng lại QT thì tại sao không dùng QT luôn, cụ thể là sử dụng luôn thư viện Python.NET của python để load file dll của QT, rồi gọi hàm translate của nó là xong. Nếu bạn vẫn muốn đi theo hướng này thì có thể tham khảo cách c-h-i-v-i đã làmBản demo này làm được phần sau:
- Chia mỗi dòng thành các "cụm câu nhỏ" với dấu ngăn cách là dấu "." hoặc ","
- Dịch từ trong VietPhrase (thực ra là tìm và thay thế từ, mình tạm gọi là dịch)
- Tìm các cụm luật nhân có trong "cụm câu nhỏ"
+ Phần luật nhân mình chỉ làm được dịch các cụm ví dụ như 这{0}, 自{0}中 (sẽ dịch tất cả các từ {0} ở giữa),一种{0}的{1} (đây là thêm 1 cụm nữa,cụm {0} sẽ được dịch tất cả các từ ở trong này, còn cụm {1} chỉ dịch các cụm có sẵn trong VietPhrase
+ Luật nhân mình chưa làm được các cụm có {0} ở đầu như : {0}的手中
- Trong bản demo này, mình đã để mặc định làm đảo ngữ phần 的, ví dụ như 我的自行车, dịch là "xe đạp của tôi", nếu vietphrase tìm được từ "của" đứng độc lập, lặp tức sẽ đổi 2 vế, và dịch thành "xe đạp tôi" bỏ từ "của" ở giữa. Để không bị đảo ngữ, trong phần VietPharse phải có "cụm từ+的"
- Và thêm phần mà mình mới làm hôm qua là chọn nghĩa của từ trong VietPharse đối với các từ nhiều nghĩa, nhằm khai thác tối VietPhrase cũng như nghĩa của từ được phù hợp hơn trong câu. Ví dụ từ 被 (bị/được), nếu trong "cụm câu nhỏ" có từ 救(cứu), thì nghĩa là trả về trong vietphrase là "được". Phần này mình để trong file Means.txt.
- Bản demo mình chưa có giao diện, mặc định sẽ lấy dữ liệu trong file "nguon.txt" để dịch và tạo ra file kết quả "kq.txt" trong cùng thư mục.
- File VietPhrase mình nhỏ là do lượm nhặt trên internet về rồi, xài VietPhrase của các nguồn khác dịch, mình đã bỏ phần đánh số, phần này nếu có thời gian mình sẽ làm thẳng vào chương trình, góp phần giảm dung lượng file Vietphrase
- Do đây là những kiến thức lượm nhặt và mình tự học trên internet nên chương trình khó tránh khỏi sai sót, tốc độ thực hiện hơi chậm mong các bạn góp ý để mình hoàn thiện thêm chương trình.
- Cuối cùng mình xin tác giả QuickTrans bỏ qua vì đã mô phỏng chức năng của chương trình mà chưa hỏi qua ý kiến của tác giả.
File exe chia sẻ trên google drive bị kiểm duyệt !
Code:
https://github.com/np-nam/libcv
Hướng đi khác mà mình từng tìm hiểu là statistical machine translation và neural machine translation, cả hai đều có ưu nhược điểm nhưng mình thiên về neural machine translation vì nó cho ra câu đúng ngữ pháp, tự nhiên hơn.