Trong những ngày cuối của thế kỷ này, một lỗi lầm nghiêm trọng của lịch sử phát triển CNTT thế giới được nhắc đến ở mọi nơi: sự mã hoá ngày tháng năm với 2 con số chỉ năm hay còn gọi là sự cố Y2K. Nhưng có một thiếu sót nghiêm trọng không kém phần khó khăn về khả năng khắc phục: đó là việc chuẩn hoá mã ký tự trong trao đổi thông tin dựa trên nền tảng lịch sử xuất phát là độ dài mã ký tự 7 bit. Trong bảng mã xuất phát đó (thường được gọi là ASCII) không có chỗ dự trù dành cho những chữ cái nằm ngoài 26 chữ cái La tinh. Với sự mở rộng bảng mã với độ dài ký tự là 8 bit hay nhiều hơn, các ký tự của các ngôn ngữ khác được thêm vào phần trên của bảng ký tự và việc xử lý thông tin của các ngôn ngữ đó đã trở thành không phải "tự nhiên" đối với máy tính: để có được khả năng nhập liệu qua bàn phím, hiển thị, tìm kiếm hoặc sắp xếp alpha-beta trong cơ sở dữ liệu người ta phải dùng các phần mềm phụ trợ, còn được gọi là language driver. Việc mô tả, lưu trữ, hiển thị thông tin tiếng Việt được đặt ra ngay từ ngày đầu của CNTT Việt Nam. Suốt nhiều năm qua, vấn đề này mới chỉ có những lời giải mang tính tình thế. Đến nay, việc đưa ra một giải pháp hoàn hảo càng trở nên quan trọng và cấp bách do CNTT ngày càng thông dụng trong mọi lĩnh vực kinh tế - xã hội. Đặc biệt với các đòi hỏi của xử lý tự động thông tin trong các cơ sở dữ liệu, bảng mã thông tin tiếng Việt hiện còn nhiều thiếu sót nghiêm trọng...
Đặt vấn đề của bài toán mã thông tin tiếng Việt
Chữ Việt thuộc hệ Latinh, có thêm 1 phụ âm (đ) 6 nguyên âm (ă, â, ê, ô, ơ, ư), (sau đây gọi là chữ cái thuần Việt) và 5 dấu thanh (huyền, hỏi, ngã, sắc, nặng). Cho đến nay, các hỗ trợ cho tiếng Việt trên máy tính, với chỉ có rất nhỏ "phần thêm" như kể trên, đã được bàn luận, xử lý bởi rất nhiều chuyên gia, công ty phần mềm nhà nước cũng như tư nhân, đề tài khoa học, cả các hãng phần mềm hệ điều hành máy tính Microsoft... Kết quả hiện có: rất nhiều bảng mã, phần mềm giải pháp phụ trợ. Chỉ riêng Tiêu chuẩn Việt Nam về ký tự tiếng Việt trong CNTT TCVN 5712 do Nhà nước ban bố có đến 3 bảng mã nằm trong! Mọi bảng mã, ngay cả của Microsoft hay của Nhà nước đều mới xoay quanh hai mục tiêu thấp nhất trong xử lý Việt ngữ: nhìn thấy (hiển thị trên màn hình và máy in) và đưa vào được qua bàn phím. Hiển nhiên là mọi giải pháp hiện có đều chưa đáp ứng được thực sự yêu cầu đích thực của việc xử lý thông tin tiếng Việt nên việc đưa ra các giải pháp mới vẫn được nhiều người quan tâm, và chúng ta vẫn nằm trong tình trạng "đa bảng mã". Bài viết này trình bày một giải pháp có nhiều khác biệt với các tiếp cận trước đây đến bài toán. Giải pháp do CadPro đề xuất, đã được hỗ trợ nghiên cứu bởi Cục Khoa học Công nghệ Bộ Quốc phòng, với hệ thống kỹ thuật hoàn chỉnh đưa vào sử dụng trong một số phần mềm cơ sở dữ liệu khách chủ và được duyệt và chấp nhận như giải pháp tiếng Việt trong dự án xây dựng cơ sở dữ liệu tiếng Việt của Thông tấn xã Việt Nam.
Đòi hỏi của lời giải hoàn hảo
Trước tiên chúng ta phân tích những tiêu chí cụ thể của một giải pháp "hoàn hảo" cho xử lý thông tin Việt ngữ:TC1. Nhập liệu được qua bàn phím (chuẩn ASCII) các ký tự đặc thù tiếng Việt theo đúng quy tắc tư duy dấu thanh ở cuối (QTDTC). Quy tắc này chưa được nhắc đến tường minh ở bất kỳ tài liệu nào, nhưng thể hiện rất rõ nét trong phương pháp nhập liệu bàn phím hiện đang được chấp nhận ngày càng rộng rãi và lấn át các phương pháp trước đó: bàn phím TELEX lẫn VNI phổ cập hiện nay. Chúng tôi xin được thâu tóm QTDTC là: dấu thanh tiếng Việt tuy được đặt trên chữ cái này hay chữ cái khác trong âm tiết tiếng Việt nhưng được tư duy như một âm vị của cả âm tiết và được "tính đến" trong thời gian cuối cùng của suy nghĩ về âm tiết. Bản chất hay nguyên do của của hiện tượng này xin dành cho các nhà ngôn ngữ học nhưng quy tắc trên đã được thể hiện trong sắp xếp từ tiếng Việt trong tự điển, làm người ta quên đi các dạng gõ tiếng Việt "bàn phím chết" (tức là dấu thanh gõ ngay sau con chữ mang dấu). Nó làm cho một hệ điều hành có trở nên chấp nhận được không trong người dùng Việt Nam (Windows 95 tiếng Việt?).
TC2. Hiển thị đầy đủ thông tin tiếng Việt đẹp theo tiêu chuẩn ký mã thông thường của tiếng Việt.
Vấn đề hoàn toàn kỹ thuật, nhưng từ trước đến này được ngộ nhận thành tiêu chí cơ bản để xác định bảng mã tự. Cho đến nay vần rất nhiều giáo sư trong ngành không phân biệt được bảng mã khác với bảng phông như thế nào. Một trong các giải pháp phân tách bảng mã và bảng phông là kỹ thuật tổ hợp hiện được áp dụng trong mã tiếng Việt của Microsoft hay bàn phím Việt ngữ FreeCode của công ty Ban Mai. Với Microsoft, các hình tự tiếng Việt (tổ hợp con chữ mang cả dấu thanh và dấu phụ) được đặt trên phần bảng phông UNICODE, tức là mỗi ký tự có 16 bit độ dài địa chỉ và độ lớn của bảng phông lên đến hơn 64000 chỗ, trong khi đó các ký tự thuần Việt và dấu thanh được đặt trong phần sau 128 của bảng mã 8 bit.
TC3. Sắp xếp được theo đúng thứ tự alpha-beta một cách tự nhiên với máy tính.
Một tiêu chí ít được chú ý khi làm bảng mã và do vậy gây vấn đề khi làm việc với cơ sở dữ liệu và các yêu cầu xử lý thông tin tiếng Việt cao cấp hơn. Nói giản lược là với lệnh so sánh của máy tính ở cấp thấp nhất thì chữ ? phải nằm sau chữ ạ và trên chữ b. Quy tắc sắp xếp tiếng Việt với đặc thù là QTDTC không thể trở thành tự nhiên với các phương pháp mã thường gặp hiện nay.
TC4. Tương thích với tiêu chuẩn quy định quốc tế về cấu trúc bảng mã chữ cái trong CNTT.
Ở đây không muốn nói các tiêu chuẩn sinh ra sau này với độ dài ký tự 8-bit, 16-bit vì các tiêu chuẩn này bị ngay các nhà lập trình hệ thống phần mềm phổ dụng không chú ý, nhiều chỗ được coi là dành cho chữ cái cũng bị sử dụng làm mã điều khiển, các xử lý như thứ tự, tìm kiếm, nén tệp tự động, chuyển đổi đều coi vùng trên 128 là không chuẩn, mỗi hãng làm 1 kiểu. Đặc biệt thu nhập từ thị trường phần mềm Việt nam là rất bé nên khả năng các công ty lớn đầu tư nghiên cứu vấn đề mã tự tiếng Việt một cách nghiêm túc và dành cho các vị trí của các chữ cái riêng của tiếng Việt một sự "tôn trọng" cần thiết là khó có thể chờ đợi. Một giải pháp đặt ra là đưa mã tự tiếng Việt về vùng ký tự tiêu chuẩn 7-bit. Giải pháp này có từ đầu của công cuộc "Việt hoá CNTT" là mã VISCII với các mã dấu tiếng Việt là các ký tự gần giống trong các ký hiệu sẵn có. Người ta không chú trọng lắm đến việc hiển thị đẹp thông tin tiếng Việt mà đặt nặng vào việc bảo tồn thông tin trong truyền tin trên mạng, đặc biệt là các máy không trong hệ PC.Nếu đưa ra được một mã tự thông tin tiếng Việt thoả mãn cả 4 tiêu chí trên thì chúng ta có một giải pháp hoàn hảo với đầy đủ tính thuận tiện, mỹ thuật, chính xác và tương hợp. Hiện nay đã bắt đầu xuất hiện khả năng cho việc đánh dấu chấm than vào "trường bệnh" đau đầu này của CNTT Việt Nam. Nếu đầu tư cho chữa trị bệnh kinh niên mãn tính này được bằng một phần của chiến dịch phòng ngừa "sự cố" đau bụng cấp tính "Oai Thu Cây" (Y2K) thì có lẽ vào đầu thiên niên kỷ tới (gần lắm rồi so với từ dùng) chúng ta, những người Việt sử dụng máy tính, sẽ suy nghĩ minh mẫn hơn và tránh được các biến chứng thần kinh?
Mã chuỗi tự 7-bit thông tin tiếng Việt
Để đạt được cả 4 tiêu chí trên, CadPro quan niệm mã tự tiếng Việt là một phương án xử lý chuỗi với đơn vị là âm tiết. Các dấu phụ cho chữ cái nằm ngay sau con chữ gốc La tinh. Dấu thanh nằm ở cuối âm tiết. Mã của các dấu phải nằm dưới vị trí 128 để đạt TC4. Từ điều kiện TC3 mã của dấu phụ của chữ cái thuần Việt phải nằm ở vị trí trên chữ "z", còn mã của của dấu thanh thì nằm dưới vị trí của chữ "A". Khi đó việc sắp xếp tiếng Việt với các lệnh cấp thấp nhất của máy tính trở thành tự nhiên. Việc so sánh, tìm kiếm, ngay cả trường hợp nonsentitive (không phân biệt hoa thường) sẽ hoàn toàn được máy tính thực hiện đúng cho văn bản tiếng Việt như hệt tiếng Anh.
Bảng mã chuỗi tự tiếng Việt 7 bit(7-bit code charactor set for Vietnamese string)
| Chữ cái |
Mã chuỗi tự |
Dấu thanh |
Mã chuỗi tự đặt cuối âm tiết |
| ă-? |
a{-A{ |
huyền |
|
| â-Ấ |
a}-A} |
hỏi |
|
| ê-? |
e{-E{ |
ngã |
|
| ô-Ô |
o{-O{ |
sắc |
|
| ơ-Ơ |
o}-O} |
nặng |
|
| ư-Ư |
u{-U{ |
|
|
| đ-Đ |
d~-D~ |
|
|
Việc đặt trong một chỗ của bảng mã hai ký tự thông tin không phải là bị cấm và chúng ta có thể tìm thấy ngay trong bảng mã tiêu chuẩn quốc tế cho chữ cái với các trang chữ ả rập các dấu được đặt cùng ô với chữ số. Vấn đề là trên phương diện xử lý ngữ cảnh của chuỗi tự, khả năng xẩy ra tổ hợp gây nhầm lẫn của văn bản thông tin là gần như không có. Hơn thế nữa, nếu chúng ta quy ước từ nay về sau chỉ số HA1 trên bản đồ hay viết tắt, ký hiệu của một cái gì đó sẽ được viết là HA-1 thì chúng ta sẽ không có nhầm lẫn khi xử lý thông tin tiếng Việt 7-bit.Việc hiển thị và nhập liệu các thông tin này thì theo những kỹ thuật nay đã trở thành thông thường với chúng ta: kỹ thuật xử lý tổ hợp bàn phím và hiển thị. Với bàn phím thì mọi chuyện rất đơn giản, mọi quy định bàn phím gõ khoá này chuyển thành ký tự khác trong dữ liệu máy tính đã trở nên tự nhiên với người Việt Nam, khi ta gõ TELEX hay VNI hoặc một quy định nào khác, chương trình hỗ trợ bàn phím tiếng Việt trước đây dịch chuỗi nhập liệu thành mã TCVN 5712 hay VNI hay VietWare... thì nay dịch ra chuỗi tự 7 bit.Việc hiển thị như chúng ta mong muốn thì có nhiều phương pháp. Hiện nay, trong bối cảnh các bảng mã khác là phổ cập hơn mã chuỗi tự 7 bit, để thực hiện khả năng tích hợp bảng mã này với các bảng mã hiện dụng, CadPro thực hiện việc phân tách độc lập bảng mã hiển thị (được coi như bảng mã phông chữ - có thể dùng bất kỳ bảng mã thông thường nào, đặc biệt là TCVN 5712) và bảng mã lưu trữ (chuỗi tự 7-bit). ý tưởng của việc phân tách này cũng nằm trong sơ đồ chung về thiết kế dữ liệu Khách - Chủ (Client-Server) hiện nay của CNTT. Thông tin tiếng Việt sẽ được mã hoá trong cơ sở dữ liệu bằng bảng mã tự nhiên nhất với suy nghĩ của máy tính: các chương trình điều hành hệ CSDL lớn nhập ngoại sẽ trông thấy dữ liệu văn bản tiếng Việt như các dữ liệu tiêu chuẩn ASCII, sắp xếp nó, tìm kiếm nó, nén và giải nén... tự động theo quy trình thông thường mặc định mà không cần một language driver phụ trợ. Người sử dụng thông tin sẽ trông thấy trên giao tiếp màn hình và nhập liệu bàn phím một văn bản thông tin tiếng Việt theo tiêu chuẩn thông thường đã được chấp nhận trước đây. Sẽ có một chương trình hỗ trợ tự động tại Desktop của người dùng chuyển mã 2 chiều giữa thông tin của máy tính và hiển thị của người dùng. Với các máy tính hiện nay, với lượng thông tin hiển thị màn hình hoặc ra máy in với tốc độ hiện thời thì việc chuyển mã này có ảnh hưởng không nhận thấy với toàn bộ hệ thống (có ai xem được trên 10000 ký tự/ giây). Mọi việc lưu trữ, truyền tin hiện nay đều được máy tính nén lại tự động thông tin văn bản và khối lượng nén của một văn bản mã 7-bit tiếng Việt hoàn toàn bằng khối lượng nén của văn bản đó dưới mã khác do tần xuất lặp của các tổ hợp mang dấu. Quy trình chuyển nhiều mã của cùng một dòng thông tin hiện nay vẫn đang được sử dụng thông thường như phím S là dấu sắc trên bàn phím, vào mã của Microsoft nó là mã vùng trên trong bảng 1 byte, khi ra màn hình nó sẽ là một phông tổ hợp với chữ cái mang dấu và ở trong bảng mã Unicode 16 bit với vị trí số nghìn hay vạn. Phương pháp mã tự 7-bit chỉ thêm vào quy tắc tuy duy dấu thanh cuối, chuyển dấu thanh tự động từ vị trí cuối âm tiết lên con chữ mang dấu thích hợp với hiển thị một cách tự động trước khi đưa thông tin ra cho người dùng.
Quy trình dòng thông tin
CadPro đã tạo ra một chương trình chứa trong thư viện động (DLL) cho phép người dùng cơ sở dữ liệu nối kết vào một ứng dụng truy xuất cơ sở dữ liệu khách chủ bất kỳ trong hệ điều hành Windows. Chương trình này sẽ có một hàm tự động chuyển đổi thông tin dữ liệu văn bản đi qua giao tiếp ODBC được chuyển mã 2 chiều dữ liệu: bảng mã chuỗi tự 7-bit và một bảng mã phông hiển thị bất kỳ đang dùng hiện nay tại Việt Nam. Người dùng hoàn toàn không cảm nhận được sự chuyển đổi phiên dịch người - máy này và các hệ điều hành cơ sở dữ liệu lớn nhập ngoại trở thành địa phương hoá hoàn toàn với tiếng Việt mà không cần một sự can thiệp nào khác. Như vậy, với giải pháp này, chúng ta có thể khắc phục được hầu hết những gì đang tồn tại với mã tiếng Việt hiện nay. Mặt khác vị trí dấu thanh trong âm tiết sẽ trở thành tự động tiêu chuẩn hoá do việc đặt nó nằm đâu hoàn toàn do máy tính đảm nhận và sẽ không có sự nhầm lẫn khi tìm kiếm thông tin do ý thích hay thói quen khác nhau của người dùng với vị trí bỏ dấu. Máy tính tra cứu và trả lời người dùng trên mạng từ nay cũng sẽ không phụ thuộc vào bảng mã giao tiếp tại máy tính cá nhân của người truy xuất thông tin vì việc chuyển mã về chuẩn 7-bit được thực hiện ngay tại destop của người tra vấn hệ thống. Chúng ta sẽ có một tiêu chí thứ 5 mà không được coi là chuẩn nhưng rất tiện dụng cho người dùng: đó là tự do cho thói quen và sở thích. Phi chuẩn đối với người dùng và một chuẩn cho hệ thống.
Trên đây là những nghiên cứu về một vấn đề đang tồn tại và gây nhiều tranh cãi. Để tìm hiểu một cách chi tiết, bạn đọc có thể liên hệ trực tiếp với tác giả: Phạm Hồng Quang - Công ty Phần mềm Tự động hoá Thiết kế (CadPro), địa chỉ: 95A Lý Nam Đế - Hà Nội, Tel: 8469786, E-mail: phquang@hn.vnn.vn.
PTS. Phạm Hồng Quang (Báo TH&ĐS)
Trang đầu