Hình 2.8. Mô hình client/server
http://wimaxpro.org
Mô hình client/server[22] là một mô hình quen thuộc trong mạng máy tính được áp dụng một cách rộng rãi. Tất cả mọi trang web, mọi hệ thống phân tán hiện nay đều hoạt động dựa theo mô hình này. Ý tưởng của mô hình này là máy con (đóng vài trò là máy khách-client) gửi một yêu cầu (request) để máy chủ (đóng vai trò người cung ứng dịch vụ-server), máy chủ sẽ xử lý và trả kết quả về cho máy khách. Một mô hình ngược lại là mô hình master/slaver, trong
đó máy chủ (đóng vai trò ông chủ-master) sẽ gửi dữ liệu đến máy con (đóng vai trò nô lệ-slaver) bất kể máy con có cần hay không.
Server chứa các chương trình gọi là chương trình server, client chứa các chương trình gọi là chương trình client. Client gửi các yêu cầu tới máy chủ có chương trình server và chờ đợi câu trả lời từ server. Các chương trình server này chấp nhận tất cả các yêu cầu hợp lệ đến từ mọi nơi trên mạng, sau đó nó thi hành dịch vụ và trả kết quả về client. Chương trình server và client giao tiếp với nhau bằng các thông điệp (messages) thông qua một cổng truyền thông liên tác IPC (Interprocess Communication). Để một chương trình server và một chương trình client có thể giao tiếp được với nhau thì giữa chúng phải có một chuẩn để nói chuyện, chuẩn này được gọi là giao thức. Nếu một chương trình client nào đó muốn yêu cầu lấy thông tin từ server thì nó phải tuân theo giao thức mà server đó đưa ra. Các giao thức chuẩn (ở tầng mạng và vận chuyển) được sử dụng rộng rãi nhất hiện nay như: giao thức TCP/IP, giao thức SNA của IBM, OSI, ISDN, X.25 hoặc giao thức LAN-to-LAN NetBIOS.
Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ. Quá trình trao đổi dữ liệu bao gồm:
- Truyền một yêu cầu từ tiến trình client tới tiến trình server. - Yêu cầu được server xử lý.
- Truyền đáp ứng cho client. 2.3.2. Các kiến trúc client/server 2.3.2.1. Client/Server hai tầng
Kiến trúc client/server đơn giản nhất là kiến trúc hai tầng[22]. Các hệ thống sử dụng mô hình client/server hiện nay đa phần áp dụng kiến trúc client/server hai tầng. Một ứng dụng hai tầng cung cấp nhiều trạm làm việc với một tầng trình diễn thống nhất, tầng này truyền tin với tầng lưu trữ dữ liệu tập trung. Tầng trình diễn thông thường là client, và tầng lưu trữ dữ liệu là server.
Hầu hết các ứng dụng Internet như là email, telnet, ftp thậm chí là cả Web là các ứng dụng hai tầng. Phần lớn các lập trình viên trình ứng dụng viết các ứng dụng client/server có xu thế sử dụng kiến trúc này.
Trong ứng dụng hai tầng truyền thống, khối lượng công việc xử lý được dành cho phía client trong khi server chỉ đơn giản đóng vai trò như là chương trình kiểm soát luồng vào ra giữa ứng dụng và dữ liệu. Kết quả là không chỉ hiệu năng của ứng dụng bị giảm đi do tài nguyên hạn chế của PC, mà khối lượng dữ liệu truyền đi trên mạng cũng tăng theo. Khi toàn bộ ứng dụng được xử lý trên
một PC, ứng dụng bắt buộc phải yêu cầu nhiều dữ liệu trước khi đưa ra bất kỳ kết quả xử lý nào cho người dùng. Nhiều yêu cầu dữ liệu cũng làm giảm hiệu năng của mạng. Một vấn đề thường gặp khác đối với ứng dụng hai tầng là vấn đề bảo trì. Chỉ cần một thay đổi nhỏ đối với ứng dụng cũng cần phải thay đổi lại toàn bộ ứng dụng client và server.
Hình 2.9. Mô hình kiến trúc client/server 2 tầng [22]
2.3.2.2. Client/server ba tầng
Ta có thể tránh được các vấn đề của kiến trúc client/server hai tầng bằng cách mở rộng kiến trúc thành ba tầng[22]. Một kiến trúc ba tầng có thêm một tầng mới tách biệt việc xử lý dữ liệu ở vị trí trung tâm. Theo kiến trúc ba tầng, một ứng dụng được chia thành ba tầng tách biệt nhau về mặt logic.
Hình 2.10. Mô hình kiến trúc client/server 3 tầng [25]
- Tầng đầu tiên là tầng trình diễn thường bao gồm các giao diện đồ họa. Tầng trình diễn nhận dữ liệu và định dạng nó để hiển thị. Sự tách biệt giữa chức năng xử lý với giao diện đã tạo nên sự linh hoạt cho việc thiết kế ứng dụng. Nhiều giao diện người dùng được xây dựng và triển khai mà không làm thay đổi logic ứng dụng.
- Tầng thứ hai, còn được gọi là tầng trung gian hay tầng tác nghiệp.
- Tầng thứ ba chứa dữ liệu cần cho ứng dụng. Tầng thứ ba về cơ bản là chương trình thực hiện các lời gọi hàm để tìm kiếm dữ liệu cần thiết. Dữ liệu này có thể bao gồm bất kỳ nguồn thông tin nào, bao gồm cơ sở dữ liệu như Oracale, SQL Server hoặc tài liệu XML.
2.3.2.3. Client/server n-tầng
Kiến trúc n-tầng[22] được chia thành các tầng như sau:
- Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng
- Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng và các yêu cầu của người dùng được quản lý như thế nào.
- Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp.
- Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho ứng dụng như các thành phần (truyền thông điệp, hỗ trợ giao tác).
2.4. Công nghệ dịch thuật Google Translate
2.4.1. Xử lý ngôn ngữ tự nhiên
Xử lý ngôn ngữ tự nhiên (natural language processing - NLP)[1,20] là một nhánh con trong lĩnh vực trí tuệ nhân tạo, với mục đích tập trung vào các ứng dụng trên ngôn ngữ của con người. Xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất trong lĩnh vực trí tuệ nhân tạo vì nó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ - là công cụ của con người trong tư duy và giao tiếp. Trong xử lý ngôn ngữ tự nhiên thường có các bước xử lý sau, tuy nhiên khó có thể tách bạch từng bước mà phải dựa vào ngữ cảnh cụ thể để có thể tiến hành một hoặc nhiều bước cùng lúc:
- Phân tích hình thái: Trong bước này từng từ sẽ được phân tích và các ký tự không phải chữ (như các dấu câu) sẽ được tách ra khỏi các từ.
- Phân tích cú pháp: Dãy các từ sẽ được biến đổi thành các cấu trúc thể hiện sự liên kết giữa các từ này. Sẽ có những dãy từ bị loại do vi phạm các luật văn phạm.
- Phân tích ngữ nghĩa: Thêm ngữ nghĩa vào các cấu trúc được tạo ra bởi bộ phân tích cú pháp.
- Tích hợp văn bản: Ngữ nghĩa của một câu riêng biệt có thể phụ thuộc vào những câu đứng trước, đồng thời nó cũng có thể ảnh hưởng đến các câu phía sau.
- Phân tích thực nghĩa: Cấu trúc thể hiện điều được phát ngôn sẽ được thông dịch lại để xác định nó thật sự có nghĩa là gì.
Xử lý ngôn ngữ tự nhiên được ứng dụng trên rất nhiều lĩnh vực khác nhau, có thể kể đến một số bài toán tiêu biểu sau:
- Nhận dạng chữ viết: Có hai kiểu nhận dạng chữ viết phổ biến là nhận dạng chữ in (ví dụ chữ trên sách báo) và phức tạp hơn nhiều là nhận dạng
chữ viết tay bởi khuôn dạng không rõ ràng và đường nét thay đổi tùy theo người viết khác nhau.
- Nhận dạng tiếng nói: Nhận dạng tiếng nói rồi chuyển chúng thành văn bản tương ứng, việc này giúp thao tác của con người trên các thiết bị nhanh hơn và đơn giản hơn; ví dụ thay vì gõ một tài liệu nào đó, chúng ta có thể đọc nó lên và trình soạn thảo sẽ tự ghi nó ra.
- Tổng hợp tiếng nói: Từ một văn bản tự động tổng hợp thành tiếng nói tương ứng. Ví dụ thay vì phải tự đọc một cuốn sách hay nội dung một trang web, một chương trình hỗ trợ sẽ tự động đọc cho chúng ta. Nhận dạng và tổng hợp tiếng nói là sự trợ giúp tốt cho người khiếm thị.
- Dịch tự động (machine translate): hay còn gọi là dịch máy, hỗ trợ dịch tự động từ ngôn ngữ này sang ngôn ngữ khác.
- Tìm kiếm thông tin: chúng ta đặt ra câu hỏi và chương trình tự tìm ra nội dung phù hợp nhất. Thông tin trên internet tăng cấp số nhân, tuy nhiên việc khó khăn lúc là tìm được thông tin mong muốn và đáng tin cậy. Có rất nhiều máy tìm kiếm khổng lồ trên giao diện web như Google hay Yahoo, song thực sự hiện nay chưa có cỗ máy tìm kiếm nào hoàn hảo cả. - Tóm tắt văn bản: Từ một văn bản dài tóm tắt thành một văn bản ngắn hơn
theo mong muốn nhưng vẫn chứa những nội dung thiết yếu nhất và vẫn thể hiện được nội dung cơ bản.
- Khai phá dữ liệu (data mining) và phát hiện tri thức: Từ rất nhiều tài liệu dường như không có quan hệ với nhau, phát hiện ra tri thức mới. Đây là một vấn đề khó, nó gần như là mô phỏng quá trình học tập, khám phá khoa học của con người.
2.4.2. Dịch tự động
Dịch tự động hay còn gọi là dịch máy (machine translation)[20] là một nhánh của xử lý ngôn ngữ tự nhiên, nó là sự kết hợp giữa ngôn ngữ, dịch thuật và khoa học máy tính. Dịch tự động thực hiện dịch một văn bản từ ngôn ngữ này sang một hoặc nhiều ngôn ngữ khác một cách tự động và con người không can thiệp vào quá trình dịch.
Một khó khăn rất lớn trong của việc thiết kế chương trình dịch tự động là xử lý nhập nhằng sao cho hiệu quả. Khái niệm nhập nhằng chỉ tính không rõ ràng của ngôn ngữ. Ví dụ trong ngôn ngữ tiếng Việt, khi chỉ viết từ đường kính
khó có thể phân biệt được đấy là một loại "chất ngọt dùng để pha làm đồ uống" hay là "đoạn thẳng đi qua tâm và nối hai điểm của đường tròn, của mặt cầu".
Một số loại nhập nhằng như nhập nhằng từ đồng âm (hoặc đồng tự), nhập nhằng từ loại, nhập nhằng từ đa nghĩa.
Một khó khăn nữa khi dịch tự động là xác định ranh giới từ. Nhiều ngôn ngữ, mỗi từ đã mang một nghĩa trọn vẹn và được xác định ranh giới qua khoảng trắng. Nhưng một số ngôn ngữ khác, nghĩa của từ nằm trong từ ghép, trong trường hợp này xác định ranh giới từ loại dựa vào khoảng trắng dễ dẫn đến sai sót và nhầm lẫn.
Về vấn đề từ đa nghĩa tiếng Anh, tiếng Việt cũng như hầu hết các ngôn ngữ khác đều rất phức tạp, muốn xác định nghĩa chính xác phải thực hiện phân tích văn cảnh. Công việc sắp xếp để tạo thành câu hoàn chỉnh sau khi xác định nghĩa phù hợp của từ cũng là vấn đề khó. Hai ngôn ngữ có cấu trúc càng khác nhau bao nhiêu công việc này càng phức tạp bấy nhiêu. Với những ngôn ngữ gần nhau như tiếng Anh và tiếng Pháp công việc tương đối đơn giản, nhưng giữa tiếng Pháp và tiếng Trung thì rất khó khăn. Để sắp xếp tạo thành câu người ta đưa vào các cấu trúc ngữ pháp hết sức phức tạp, áp dụng nhiều kiến thức toán học nhưng thực tế cho thấy hiệu quả của chúng vẫn chưa được tốt.
Có nhiều phương pháp dịch máy đã và đang được áp dụng rộng rãi, tùy thuộc vào từng quy mô cụ thể: dịch máy dựa trên luật, dịch máy dựa trên ví dụ, dịch máy thống kê. Trong đó, dịch máy thống kê đang là một phương pháp mạnh mẽ, được sử dụng trong các máy dịch nổi tiếng như Google Translate, Babel Fish...Xu hướng hiện nay là sử dụng phương pháp lai, kết hợp nhiều phương pháp với nhau với mục đích tạo ra các máy dịch ngày càng hiệu quả.
* Giới thiệu về dịch máy thống kê (Statistical machine translation - SMT)[20]: là một phương pháp dịch máy, trong đó các bản dịch được tạo ra trên cơ sở các mô hình thống kê có các tham số được bắt nguồn từ việc phân tích các cặp câu song ngữ. Các phương pháp tiếp cận thống kê tương phản với các phương pháp tiếp cận dịch máy dựa trên luật và dịch máy dựa trên ví dụ. Những ý tưởng đầu tiên của dịch máy thống kê được giới thiệu bởi Warren Weaver vào năm 1949, bao gồm cả ý tưởng áp dụng lý thuyết thông tin. Tuy nhiên đến cuối thế kỷ 20, dịch máy thống kê mới được chú ý phát triển mạnh nhờ các nghiên cứu của các nhà nghiên cứu làm việc tại Trung tâm nghiên cứu Thomas J. Watson của IBM.
Cơ sở của phương pháp dịch máy thống kê
Tài liệu được dịch theo phân bố xác suất :
p(e | f)
e: chuỗi trong ngôn ngữ đích (ví dụ, Tiếng Việt). f: chuỗi trong ngôn ngữ nguồn (ví dụ, Tiếng Anh).
Các vấn đề của mô hình phân phối xác suất p(e | f) đã được tiếp cận theo một số cách. Một cách tiếp cận trực quan là áp dụng định lý Bayes. Bản dịch tốt nhất
được tìm bằng cách chọn ra bản có xác suất cao nhất:
trong đó:
p(e): là xác suất chuỗi e thực sự xuất hiện trong ngôn ngữ đích, gọi là mô hình ngôn ngữ.
p(f | e) là xác suất để chuỗi nguồn f là bản dịch của chuỗi đích e, xác suất này gọi là mô hình dịch.
Các mô hình dịch thống kê ban đầu thường dùng mô hình lấy cơ sở theo từ nhưng khả năng và chất lượng bản dịch được cải thiện khi áp mô hình lấy cơ sở theo cụm từ. Các công trình nghiên cứu gần đây đã kết hợp cú pháp hoặc cấu trúc bán-cú pháp để làm tăng chất lượng dịch.
Dịch máy thống kê trên cơ sở từ: Trong dịch máy thống kê trên cơ sở từ, các đơn vị cơ bản của bản dịch là một từ trong ngôn ngữ tự nhiên. Dịch máy thống kê trên cơ sở từ không sử dụng rộng rãi ngày nay, thay vào đó là dịch máy thống kê trên cơ sở cụm từ.
Dịch máy thống kê trên cơ sở cụm từ: Dịch máy thống kê trên cơ sở cụm từ có mục đích là để giảm bớt các hạn chế của dịch máy thống kê trên cơ sở từ bằng cách dịch cụm từ, trong đó độ dài cụm từ nguồn và cụm từ đích có thể khác nhau. Các cụm từ trong kỹ thuật này thường không cụm từ theo nghĩa ngôn ngữ học (tức là dựa trên cú pháp) mà là các cụm từ được tìm thấy bằng cách sử dụng phương pháp thống kê để trích rút từ các cặp câu.
Dịch máy thống kê trên cơ sở cú pháp: Dịch máy thống kê trên cơ sở cú pháp dựa trên ý tưởng của dịch các đơn vị cú pháp (phân tích cây của câu), hơn là những từ đơn hay cụm từ (như trong dịch máy thống kê trên cơ sở cụm từ).
2.4.3. Dịch vụ dịch thuật trực tuyến Google Translate
Hình 2.11. Dịch vụ dịch thuật online Google translate
Trên cơ sở tìm hiểu về xử lý ngôn ngữ tự nhiên, dịch tự động và khảo sát một số công cụ dịch hiện có, luận văn chọn Google Translate như một modul trong hệ thống với chức năng dịch song ngữ.
Google Translate[19,20] là một dịch vụ dịch thuật miễn phí được thiết kế và đưa ra tập đoàn công nghệ Google để dịch một phần của tài liệu, văn bản hoặc trang web sang ngôn ngữ khác. Đến tháng 11/2011, số lượng ngôn ngữ mà Google Translate hỗ trợ dịch song ngữ lên đến 59 ngôn ngữ liệt kê dưới đây:
Hình 2.12. Các ngôn ngữ Google Translate hỗ trợ dịch
Các chức năng chính của Google Translate bao gồm:
- Chức năng phát hiện ngôn ngữ: điều này có nghĩa là không cần lựa chọn ngôn ngữ nguồn (ngôn ngữ cần dịch) mà chỉ cần lựa chọn ngôn ngữ đích (ngôn ngữ mà người dùng muốn đọc), ngôn ngữ nguồn được máy tính tự xác định.
- Chức năng hỗ trợ từ phía người dịch: người dùng có thể sửa bản dịch của Google đưa ra nếu muốn. Chức năng này có tác dụng gia tăng chất lượng bản dịch theo thời gian và có hầu hết trong các dịch vụ dịch tự động trực
tuyến. Đây là hoạt động tương tác rất quan trọng, là một hình thức huy động trí tuệ của cả cộng đồng.
- Tích hợp vào dịch vụ tìm kiếm của Google: trong tìm kiếm nếu phát hiện trong kết quả tìm kiếm có đường dẫn là một ngoại ngữ, ngay bên cạnh có liên kết trong dấu ngoặc vuông là [dịch trang này] màu xanh.
- Tìm kiếm được dịch (Translated Search): là chức năng tìm kiếm bằng tiếng mẹ đẻ trên các trang web bằng tiếng nước ngoài.
- Dịch nhanh: là chức năng được mặc định, người dùng khi copy đoạn văn