(Post 30/10/2009) 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 |
1401 |
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:
- Khi chỉ có 1 nguyên âm thì dấu đặt trên nguyên âm đó
- Khi có phụ âm cuối thì dấu nằm ở nguyên âm sát phụ âm cuối
- Vần có nguyên âm đệm oa, oe, uê, uơ, uy thì dấu nằm ở nguyên âm
chính (sau)
- 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:
- 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.
- 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).
- 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ụ).
- 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í.
- 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):
- 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.
- 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.
- 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.
- DD/dd chỉ là Đ/đ khi đứng đầu từ, còn lại cho temp-escape, ví dụ
từ address.
- 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ư.
- 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)
(theo PC World VN) |