Phân tích kỹ thuật các kiểu gõ tiếng Việt
Xử lý tiếng Việt là vấn đề rất cũ, nhưng không phải là nhỏ vì ảnh hưởng tới rất nhiều người dùng. Đa phần các bộ gõ tiếng Việt lâu nay là tự phát, không có tài liệu phân tích kỹ thuật chi tiết. Nhân hợp tác với nhóm m17n thuộc AIST (Viện Khoa Học và Công Nghệ Công Nghiệp Tiên Tiến Nhật Bản) để cải tiến và phát triển các bộ gõ tiếng Việt, Chăm, Thái… trên môi trường Linux mã mở, chúng tôi đã thực hiện một số tài liệu phân tích kỹ thuật một cách bài bản, sau đây xin giới thiệu một số vấn đề rút từ những tài liệu đó.
I. Vài số liệu thống kê về hệ thống âm-vần-chữ cái tiếng Việt
Đây không phải là các thống kê ngôn ngữ học mà chỉ tập trung vào các dữ liệu liên quan tới việc xây dựng bộ bàn phím tiếng Việt.
1. Tổng số đơn âm tiếng Việt theo thống kê chưa đầy đủ của chúng tôi là: 7432.
Số này cũng xấp xỉ số liệu của GS Hoàng Phê, chủ biên từ điển Chính Tả Tiếng Việt. Số tuyệt đối không quan trọng vì dưới đây chỉ để ý tỉ lệ so sánh tương đối.
2. Số âm có dấu thanh: 6050, tỉ lệ: 81,4%
3. Số đơn âm viết có ít nhất một dấu thanh hoặc dấu phụ: 6761, tỉ lệ: 91%
4. Thanh sắc: 1861, tỉ lệ: 25%
5. Thanh nặng: 1474, tỉ lệ: 19,8%
6. Không dấu: 1382, tỉ lệ: 18,6%
7. Thanh huyền: 1177, tỉ lệ: 15,8%
8. Thanh hỏi: 980, tỉ lệ: 13,2%
9. Thanh ngã: 558, tỉ lệ: 7,5%
10. Số âm có phụ âm đầu: 7110, tỉ lệ: 95,7%
11. Số âm không phụ âm đầu: 322, tỉ lệ: 4,3%
12. Số dạng tổ hợp nguyên âm (không tính phụ âm cuối): 64
a. Số nguyên âm đơn: 12 (a, e, o, i, u, y, â, ê, ô, ơ, ă, ư)
b. Tổ hợp kép 2 nguyên âm: 32
c. Tổ hợp kép 3 nguyên âm: 20
13. Số vần (tổ hợp nguyên âm + phụ âm cuối): 228
14. Có 8 phụ âm cuối: M, N, C, T, P, CH, NG, NH
15. Và có 8 phụ âm đầu kép: CH, KH, NG, NGH, NH, TR, TH, PH.
II. Tần suất sử dụng phím
Chúng tôi thực hiện thống kê trên một văn bản thuần Việt và đủ lớn là Truyện Kiều, vì Truyện Kiều là một thể hiện điển hình của tiếng Việt. Chúng tôi đã chọn bản Nôm Liễu Văn Đường (1871), gồm 3244 câu, 22708 chữ.
Bảng 1: Dùng kiểu gõ Telex
Trung bình: 4,68 lần gõ phím trên 1 chữ
Phím dùng | Số lần gõ | Tỉ lệ % |
A | 12411 | 11,69 |
N | 10327 | 9,727 |
O | 9427 | 8,879 |
H | 6347 | 5,978 |
F | 6205 | 5,844 |
W | 6087 | 5,733 |
I | 5774 | 5,438 |
G | 5384 | 5,071 |
E | 5161 | 4,861 |
T | 5029 | 4,737 |
S | 4844 | 4,563 |
D | 4531 | 4,268 |
U | 4271 | 4,023 |
C | 3555 | 3,348 |
R | 2978 | 2,805 |
M | 2573 | 2,423 |
J | 2525 | 2,378 |
X | 1748 | 1,646 |
Y | 1685 | 1,587 |
L | 1606 | 1,513 |
B | 1065 | 1,003 |
V | 907 | 0,854 |
K | 719 | 0,677 |
P | 700 | 0.659 |
Q | 310 | 0,292 |
Tính theo hàng | ||
home row | 44572 | 41,982 |
qwer row | 41422 | 39,015 |
zxcv row | 20175 | 19,003 |
num row | 0 | 0 |
Tổng số lượt gõ | 106169 |
Bảng 2: Dùng kiểu gõ VNI
Trung bình: 4,72 lần gõ phím trên 1 chữ
Phím dùng | Số lần gõ | Tỉ lệ % |
N | 10327 | 9,621 |
A | 10141 | 9,448 |
O | 7523 | 7,009 |
6 | 6384 | 5,948 |
H | 6347 | 5,913 |
2 | 6205 | 5,781 |
I | 5774 | 5,379 |
U | 5438 | 5,066 |
G | 5384 | 5,016 |
T | 5029 | 4,685 |
7 | 4938 | 4,601 |
1 | 4006 | 3,732 |
C | 3555 | 3,312 |
E | 2951 | 2,749 |
D | 2653 | 2,472 |
M | 2573 | 2,397 |
5 | 2525 | 2,352 |
9 | 1878 | 1,75 |
Y | 1685 | 1,57 |
L | 1606 | 1,496 |
R | 1602 | 1,493 |
3 | 1376 | 1,282 |
4 | 1252 | 1,166 |
8 | 1149 | 1,07 |
B | 1065 | 0,992 |
V | 907 | 0,845 |
S | 838 | 0,781 |
K | 719 | 0,67 |
0,67 | 700 | 0,652 |
X | 496 | 0,462 |
Q | 310 | 0,289 |
Tính theo hàng | ||
home row | 27688 | 25,796 |
qwer row | 29327 | 27,323 |
zxcv row | 20608 | 19,201 |
num row | 29713 | 27,682 |
Tổng số lượt gõ | 107336 |
Bảng 3: Tần suất sử dụng các vần
(chỉ kê ra 32 vần thông dụng nhất)
Vần | Số lần | Tỉ lệ % |
a | 140 | 1 6,153 |
ai | 781 | 3,430 |
ơi | 697 | 3,061 |
ang | 679 | 2,982 |
ay | 654 | 2,872 |
i | 644 | 2,828 |
ên | 603 | 2,648 |
ao | 581 | 2,552 |
ong | 568 | 2,495 |
ây | 566 | 2,486 |
o | 561 | 2,464 |
inh | 544 | 2,389 |
ương | 510 | 2,240 |
ôi | 509 | 2,235 |
ăng | 491 | 2,156 |
ơ | 473 | 2,077 |
ưa | 443 | 1,946 |
âu | 439 | 1,928 |
ông | 436 | 1,915 |
ê | 408 | 1,792 |
ung | 386 | 1,695 |
ư | 385 | 1,691 |
anh | 384 | 1,686 |
ôt | 346 | 1,520 |
ươi | 330 | 1,449 |
ên | 308 | 1,353 |
on | 295 | 1,296 |
iêu | 294 | 1,291 |
e | 274 | 1,203 |
an | 271 | 1,190 |
ươc | 267 | 1,173 |
âm | 245 | 1,076 |
u | 230 | 1,010 |
Nhận xét chung
– Nhìn chung nếu chia bình quân thì tần suất sử dụng các phím dấu thanh gần bằng các phím nguyên âm và lớn hơn tần suất dùng các phím phụ âm. Đây là một chi tiết rất quan trọng mà chúng ta sẽ cần dùng trong phần so sánh các kiểu gõ Telex, VNI dưới đây.
– Nhưng xét trị tuyệt đối thì phụ âm n và hai phím nguyên âm a, o đứng đầu bảng tức là dùng nhiều nhất, trong cả 2 kiểu gõ.
III. Các luật gõ tiếng Việt
Mô hình cấu trúc một từ tiếng Việt, dấu ngoặc tròn là thành phần luôn phải có, ngoặc vuông có thể có hoặc không:
[C] ((V1) [V2] [V3] [T]) [C]
C: phụ âm đầu
V1: nguyên âm 1, luôn có ít nhất một nguyên âm
V2: nguyên âm 2
V3: nguyên âm 3
T: dấu thanh
C: phụ âm cuối
Các luật gõ chính thức của các kiểu gõ Telex, VNI, TCVN 6064 chỉ là một bảng các quy tắc ánh xạ phím, khá quen thuộc nên chúng tôi xin lược bỏ để giới thiệu sang quy luật về vị trí dấu thanh, thiết thực hơn. Quy luật vị trí dấu thanh trên các tổ hợp nguyên âm, theo GS Hoàng Phê, như sau:
1. Khi chỉ có 1 nguyên âm thì dấu đặt trên nguyên âm đó
2. Khi có phụ âm cuối thì dấu nằm ở nguyên âm sát phụ âm cuối
3. Vần có nguyên âm đệm oa, oe, uê, uơ, uy thì dấu nằm ở nguyên âm chính (sau)
4. Các vần tận cùng là nguyên âm (có thể 2 hay 3 nguyên âm) và khác oa, oe, uê, uơ, uy thì dấu nằm trên nguyên âm đứng trước nguyên âm tận cùng.
Tuy nhiên qua thực tiễn ở VN thì các vần bất định oa, oe, uy phần nhiều vẫn theo kiểu bỏ dấu cũ, dấu thanh đặt trên nguyên âm đệm. Vì vậy các bộ gõ đều cung cấp khóa chuyển cho phép chọn kiểu bỏ dấu mới hay cũ cho chúng – bộ gõ m17n cũng thế.
IV. Phân tích ưu điểm của kiểu gõ Telex so với VNI, TCVN
Nhiều người khẳng định kiểu gõ Telex là tiện lợi nhất khi gõ thuần tiếng Việt, nhưng thuận lợi ở điểm nào thì lại không nói, ở đây chúng tôi thử phân tích:
1. Kiểu gõ Telex hoàn toàn chỉ sử dụng 3 hàng phím tiếng Anh cơ bản (QWER … ASDF … ZXCV..). Trong đó hàng phím ASDF… tiếng Anh là “home row” chính là hàng phím cơ sở, trong kiểu gõ 10 ngón tay thì hai ngón trỏ được định vị trên hai phím F&J trên hàng phím này (hai phím này có gờ nhỏ để đánh dấu), các ngón khác xếp tự nhiên ở các phím bên cạnh trên home row. Khi gõ 10 ngón tay, dễ dàng nhận thấy là ngón tay càng phải dời xa hàng phím cơ sở thì càng khó gõ đồng thời càng dễ gõ sai hơn. Kiểu gõ Telex có lợi thế hơn VNI và TCVN chính ở điểm này, do không dùng đến hàng phím số ở xa home row.
2. Trong kiểu gõ Telex, hàng phím cơ sở dễ gõ nhất đồng thời lại là hàng phím có tần suất sử dụng lớn nhất, tần suất của hai hàng còn lại cũng khá cân đối (xem bảng thống kê ở phần II).
3. Khi dùng kiểu gõ VNI tất cả các dấu phụ đều bị đẩy lên hàng phím số, phần lớn dấu phụ của kiểu gõ TCVN cũng thế, cho nên hàng phím khó gõ nhất này lại có tần suất sử dụng lớn nhất (xem bảng thống kê tần suất ở trên, hoặc có thể đoán qua con số 91% các từ tiếng Việt có dấu phụ).
4. Kiểu gõ VNI & TCVN bỏ phí không dùng đến 4 phím w,f,j,z ở khu vực dễ gõ. Trong khi Telex nguyên thủy chỉ bỏ phí một phím z thôi. Chú ý thêm là hai phím định vị quan trọng F&J trong kiểu gõ Telex được dùng với tần suất khá lớn thì VNI/TCVN lại bỏ phí.
5. Cơ chế gõ lặp phím để tạo dấu cho đ-â-ô-ê (các cải tiến hiện nay còn cho phép hủy dấu, mở rộng sang cả dấu thanh) của kiểu gõ Telex là rất tiết kiệm. Tuy cũng phải gõ 2 lượt phím như VNI nhưng thực chất ngón tay chỉ di chuyển lên xuống thêm chừng 5mm, đồng thời rất khó gõ sai. Chính các điện thoại di động cũng dùng cơ chế gõ lặp phím để sinh ra nhiều chữ, nên cơ chế này tạo cảm giác khá thân thuộc cho người dùng.
V. Phân tích nhược điểm của kiểu gõ Telex so với VNI, TCVN và định hướng giải quyết
Cho đến nay chúng tôi chỉ xác định được một nhược điểm của kiểu gõ Telex so với VNI và TCVN là khó gõ hỗn hợp Anh-Việt. Tiếc thay, đây lại là một nhược điểm chí mạng trong điều kiện giao lưu quốc tế rộng rãi ngày nay, nhất là với những người làm chuyên về KHKT, CNTT…
Tuy các phần mềm đều có phím nóng để chuyển qua lại giữa trạng thái gõ Anh và Việt, nhưng nhiều người lại không thích dùng mà muốn các bộ gõ tự động xử lý vấn đề này.
Để xử lý được việc gõ hỗn hợp thì trước hết bộ gõ phải được cung cấp các tiêu chí phân biệt từ Anh/Việt để quyết định xử lý từ đang đánh như tiếng Việt hay tiếng Anh, đây chính là chỗ mà mục này sẽ phân tích.
Giải quyết trọn vẹn nhất là gắn vào bộ gõ một modul kiểm tra chính tả và một từ điển chính tả tiếng Việt, tuy không khó nhưng cũng khá phiền phức. Nếu không thì phải tìm kiếm một số tiêu chí để chuyển tự động về tiếng Anh dựa trên phân tích, tổng hợp các quy luật chính tả, ngữ âm tiếng Việt. Sau đây xin giới thiệu một vài tiêu chí mà bộ gõ vi-telex mã nguồn mở chạy trên môi trường Linux của nhóm m17n (Viện AIST, Nhật Bản) đã ứng dụng (xem www.m17n.org):
1. Sau nguyên âm mà gặp các phụ âm cuối không có trong tiếng Việt thì cho chuyển sang tiếng Anh đến hết từ, sau đây sẽ gọi là “temp-escape”, cụ thể là các phụ âm sau: q,d,g,h,k,l,z,v,b.
2. Với các phụ âm đã mượn làm dấu tiếng Việt s,f,j,r,x thì không thể temp-escape như thế mà phải dùng kiểu gõ lặp lại. Nhấn lần đầu là tạo dấu, nhấn lần nữa là hủy dấu đồng thời temp-escape luôn, người dùng phải chủ động trong quyết định này.
3. Tiếng Việt là đơn âm nên với các từ có hơn 1 âm cũng cho temp-escape khi phát hiện âm thứ 2, như từ “changes” khi gõ đến “e” sẽ temp-escape cho nên “s” không bị biến thành dấu sắc nữa.
4. DD/dd chỉ là Đ/đ khi đứng đầu từ, còn lại cho temp-escape, ví dụ từ address.
5. w chỉ là ư khi đi ngay sau phụ âm, hoặc sau u/a/o để tạo dấu, còn lại vẫn là w, ví dụ từ view sẽ không bị biến ra vieư.
6. z chỉ xóa dấu khi trước đó đã có nguyên âm được bỏ dấu, còn lại cho temp-escape.
Dự kiến có thể đưa ra môt tiêu chí nữa là nhận dạng các tổ hợp phụ âm đầu kép của tiếng Việt, nhưng có lẽ hiệu quả không cao vì các phụ âm đó (ch, kh, ng, ngh, nh, tr, th, ph) cũng có trong các ngôn ngữ Latinh… Đưa vào quá nhiều tiêu chí sẽ làm code lộn xộn thiếu sáng sủa, nhiều hơn nữa thì quay về phương án kiểm tra qua từ điển chính tả lại hợp lý hơn.
VI. Các xu hướng cải tiến bộ gõ tiếng Việt
Xu hướng phát triển chung là gắn thêm vào bộ gõ các phần kiểm tra chính tả và hỗ trợ tốc ký, hoặc mở rộng cho các thứ tiếng dân tộc ở VN như chữ Nôm, Tày, Thái, Chăm… đó là những cải tiến nên có, có dịp chúng tôi sẽ giới thiệu ở một bài khác.
Ở đây chỉ bàn tới những cải tiến còn gây tranh cãi, ví dụ một số người dùng muốn có kiểu bỏ dấu tự do (cả dấu thanh lẫn dấu mũ, dấu móc), nhưng phân tích kĩ thì thấy kiểu bỏ dấu tự do này chỉ phù hợp với VNI, chứ với Telex thì sẽ làm trầm trọng thêm nhược điểm khó gõ hỗn hợp Anh Việt. Vấn đề là do các phím dấu trong kiểu gõ Telex có hai chức năng tạo dấu và chữ cái nên dễ bị lẫn lộn, còn trong VNI chỉ có một chức năng tạo dấu thôi. Các từ như data, Japan, common, receive khi gõ Telex kiểu bỏ dấu tự do thì hóa ra dât, Jâpn, cômmn, rêcive… Phải sáng suốt trong vấn đề này, không nên vì những nhận xét kiểu gõ này “thông minh”, kiểu gõ kia không mà sa vào những cái phức tạp, ít hiệu quả thực tiễn. VNI thêm các cải tiến này cũng không hiệu quả đến mức áp đảo được các ưu điểm của Telex đã phân tích trên. Còn Telex “học” theo VNI cải tiến này cũng không có hiệu quả gì hơn nếu không nói là ngược lại. Ví dụ Telex tự do gõ chữ ôm = omo, đầu tiên là tên bột giặt “OMO” sẽ biến ra ÔM, làm nặng thêm khuyết điểm khó gõ hỗn hợp Anh Việt, sau nữa là rất nhiều người chỉ quen gõ một tay thì cự ly di chuyển sẽ xa thêm: từ phím O sang M rồi về O cự li di chuyển gần gấp đôi so với gõ đúp O rồi chuyển sang gõ M. Gõ “thông minh” chưa rõ có lợi gì, nhưng tốc độ thì đã thua kiểu gõ “chân quê”.
Phan Anh Dũng
R&D Department
Thua Thien Hue Center of Information Technology (Huesoft).