Tài liệu về Microsoft Windows
Giải pháp quản lí công văn và điều hành tác nghiệp là một giải pháp hoàn chỉnh trong
việc tin học hóa công việc chính. Giải pháp tập trung vào hai nhiệm vụ chính: Một là
giúp cho việc quản lí công văn cũng như các loại văn bản giấy tờ tại cơ quan một
cách dễ dàng và hợp lí, hai là giúp cho người chỉ huy, người đứng đầu đơn vị ra các
chỉ thị, các quyết sách điều hành một cách nhanh chóng chuyển đến...
XÂY DỰNG CÔNG CỤ KIỂM TRA CHÍNH TẢ TIẾNG VIỆT
TRONG MÔI TRƯỜNG MICROSOFT WINDOWS
DESIGN A TOOL KIT TO CHECK THE SPELLING OF VIETNAMESE TEXT
IN MICROSOFT WINDOWS
Phan Huy Khánh
E-mail: [email protected]
Tóm tắt⎯Bài báo này trình bày giải pháp thiết kế một công cụ gọi là ViệtTools cho phép kiểm tra chính tả
tiếng Việt bằng cách xây dựng một cơ sở dữ liệu từ vựng trên mã VIQR. ViệtTools được mở rộng thành
công cụ vạn năng để có thể chuyển mã văn bản, sắp xếp, tra cứu từ điển tiếng Việt hoặc từ điển đa ngữ, xử
lý ngôn ngữ tự nhiên.
Từ khoá⎯cơ sở dữ liệu, mã, chuyển mã, mã trục, phông chữ, tiếng Việt, chính tả, từ điển, xử lý văn bản.
I Đặt vấn đề Như đã biết, chính tả tiếng Việt là một
vấn đề luôn luôn được nhiều người quan
Hiện nay, hầu như mọi công văn, giấy tâm, bởi vì tính thống nhất của ngôn ngữ
tờ giao dịch thường ngày đều được tạo ra và được thể hiện ở tính thống nhất về chính tả.
in ấn bằng máy vi tính. Một trong những Từ hàng thế kỷ nay, tiếng Việt luôn đổi mới
phần mềm “văn phòng” được sử dụng và phát triển cùng với văn hoá, xã hội, kinh
tương đối thông dụng là trình soạn thảo văn tế và giao lưu quốc tế. Để có thể sử dụng
bản Microsoft Word (gọi tắt là WinWord). đúng đắn cũng như góp phần làm phong
Có thể nói việc chế bản, in ấn tự động đã phú tiếng Việt, việc chuẩn hoá và thống
làm văn bản được trình bày đẹp hơn, nội nhất chính tả rõ ràng là một vấn đề có tính
dung phong phú hơn và do vậy, chất lượng thời sự.
hiệu quả công việc cũng được tăng lên.
Như vậy, vấn đề đặt ra là làm sao có thể
Tuy nhiên, việc soạn thảo các văn bản khắc phục các lỗi chính tả tiếng Việt khi
tiếng Việt vẫn còn đặt ra những vấn đề chưa soạn thảo văn bản trên máy vi tính ? Do
được giải quyết tốt, trong đó có vấn đề tìm trình soạn thảo văn bản Winword chỉ có
và khắc phục các lỗi chính tả. Nguyên nhân chức năng phát hiện và sửa lỗi chính tả
là việc sử dụng máy vi tính tương đối phổ (check and correct spelling) áp dụng được
cập, sự bận rộn và phức tạp của cuộc sống cho tiếng Anh, hiện nay đã có những giải
nên con người có ít thời gian, các phần pháp để áp dụng cho tiếng Việt. Ví dụ trình
mềm hiện nay hầu như chỉ làm việc với VietSpell Checker (của Trung tâm Tin học,
tiếng Anh... ĐHKH tp.HCM), ViệtKey (của Đặng Minh
Những lỗi chính tả hay gặp nhất là : Tuấn), các phông chữ VNI tân kỳ, ABC...
− Bỏ dấu thanh sai, viết sai do cách phát Bài báo này trình bày một giải pháp
âm sai từ vùng này qua vùng khác, ví dụ tổng quát và có tính mở để xây dựng một
nghiệp gõ thành ngiệp, sờ gõ thành xờ, công cụ, được gọi là ViệtTools, có chức
ngõ gõ thành ngỏ trong ngõ phố, ngõ năng phát hiện - sửa lỗi chính tả và các
hẻm... chức năng xử lý tiếng Việt khác như :
− Đặt dấu câu sai, hay gặp là các dấu phẩy − Chuyển đổi các văn bản tiếng Việt soạn
(,), dấu chấm (.), dấu chấm lửng (...) thảo trên một hệ phông chữ bất kỳ sang
v.v... không có dấu cách phía sau mà lại một hệ phông chữ bất kỳ khác.
có dấu cách phía trước, ví dụ gà, bò, − Sắp xếp văn bản tiếng Việt theo thứ tự
heo... lại gõ thành gà ,bò ,heo ... ABC không phụ thuộc vào phông chữ
− Không theo chuẩn hoá chính tả, sử dụng đang sử dụng.
nhiều từ một cách tuỳ tiện không nhất − Khai thác tra cứu từ với chức năng là
quán ngay trong cùng một văn bản, ví dụ một từ điển đơn ngữ và/hoặc đa ngữ.
gẫy mà không phải gãy, màu (sắc) thay
cho mầu (nhiệm), gửi thay cho gởi, v.v...
1
Xây dựng công cụ kiểm tra chính tả tiếng Việt
− Khả năng mở rộng để xử lý tiếng Việt Hình 1 Cấu trúc âm tiết tiếng Việt
theo quan điểm xử lý ngôn ngữ tự nhiên...
Theo thống kê của Hoàng Phê, tiếng
Theo từ điển chính tả của Hoàng Phê [ Việt có tất cả 25 phụ âm đầu và 1160 khuôn
1], tiếng Việt có 6.760 âm tiết chữ viết để vần, cấu trúc âm tiết luôn luôn gồm một phụ
cấu tạo từ đơn hay từ ghép. Mỗi âm tiết âm đầu ghép với một khuôn vần hoặc âm
gồm hai phần : phụ âm đầu (có thể vắng tiết chỉ gồm một khuôn vần.
mặt) và khuôn vần (gồm vần và thanh điệu).
Ví dụ các từ đơn ăn, học, đẹp, trường... là II Thiết kế công cụ ViệtTools
do các âm tiết ăn, học, đẹp, trường... tạo ViệtTools sẽ được thiết kế trong môi
thành, các từ ghép chăm chỉ, đẹp đẽ do các trường Microsoft Windows để có thể áp
phụ âm đầu ch, đ và các âm tiết ăm, ỉ, ẹp và dụng cho các ứng dụng văn phòng như
ẽ tạo thành. Winword, Excel, Access, PowerPoint.... Về
Như vậy, để phát hiện và sửa lỗi chính mặt lý thuyết, cần phải giải quyết ba vấn đề
tả, cần dựa trên việc phân tích một âm tiết là xây dựng bộ phát hiện - sửa lỗi chính tả,
bằng cách nhận diện (về mặt hình học) phụ cơ sở dữ liệu từ vựng và chuyển đổi mã.
âm đầu và khuôn vần. Cấu trúc âm tiết có II.1. Xây dựng bộ phát hiện và sửa
thể được phân biệt như sau (Hình 1) : lỗi chính tả
Để xây dựng bộ phát hiện - sửa lỗi
Âm tiết
chính tả, cần giải quyết hai vấn đề là phát
Khuôn vần
Phụ âm đầu hiện lỗi chính tả và sửa lỗi. Ta có thể sử
Vần Thanh điệu dụng thuật toán sau (Hình 2) :
Repeat
Đọc_một_âm_tiết
Phân_tích_âm_tiết
Kiểm_tra_lỗi_chính_tả
If Có_lỗi then Sửa_lỗi
Until Hết_ âm_tiết or Yêu_cầu_dừng
Hình 2 Thuật toán phát hiện và sửa lỗi chính tả
Việc Đọc_một_âm_tiết được tiến hành Các cặp phụ âm đầu có độ dài 1, ch,
lần lượt từ đầu văn bản đang xét trở đi gh, kh, ph, th, tr và ng), hoặc 3 (ngh). Nếu
hoặc bắt đầu từ vị trí dấu chèn trở về cuối một âm tiết bắt đầu bởi một nguyên âm thì
văn bản (down) hoặc ngược (up) về đầu âm tiết đó không có phụ âm đầu.
văn bản. Một âm tiết là một xâu ký tự chỉ Sau khi phân tích âm tiết thành phụ âm
gồm toàn chữ cái thuộc phông chữ tiếng đầu và khuôn vần, Kiểm_tra_lỗi_chính_tả
Việt đang sử dụng hiện hành, được đặt được tiến hành theo hai bước :
giữa các ký tự ngắt câu, hoặc ký tự ngắt 1. Phụ âm đầu (nếu có) và khuôn vần có
dòng, hoặc ký tự khác chữ cái. thuộc danh sách các phụ âm đầu và
Phân_tích_âm_tiết tức là tách âm tiết khuôn vần cho phép không ?
thành 2 phần, phụ âm đầu và khuôn vần. 2. Âm tiết có hợp lệ không ?
Khi nhận diện, ta thấy phụ âm đầu gi có Nếu âm tiết đang xét vi phạm một
hai trường hợp phân biệt là g (trong giục, trong hai lỗi trên (để tiện trình bày, ta gọi
giã...) và gi (trong giận, giêng...) còn các là lỗi loại 1 và là lỗi loại 2), giá trị biến
phụ âm đầu khác đều không chứa nguyên logic Có_lỗi được khẳng định, nghĩa là đã
âm. Phụ âm đầu qu mặc dù có chứa phạm lỗi chính tả.
nguyên âm u nhưng dễ tách ra khỏi âm tiết Trong trường hợp này, việc Sửa_lỗi sẽ
vì không có q đứng một mình. căn cứ vào bản chất của lỗi là loại 1 hay
2
Xây dựng công cụ kiểm tra chính tả tiếng Việt
loại 2. Tính “thông minh” của bộ phát hiện âm tiết căn cứ vào vị trí hàng của phụ âm
- sửa lỗi chính tả là ở chỗ có thể “đoán” đầu và vị trí cột của khuôn vần.
được ý đồ của tác giả văn bản mà gợi ý Ví dụ âm tiết ngoại là phần tử được
cách sửa chữa. xác định từ phụ âm đầu th và khuôn vần
Việc phát hiện - sửa lỗi dừng khi oại từ bảng sau (bên phải Hình 3 là cách
không còn âm tiết hoặc người sử dụng yêu xác định âm tiết đó) :
cầu dừng công việc.
... oại ... oại
II.2. Xây dựng cơ sở dữ liệu từ ...
vựng ng ⌦
Do cấu trúc âm tiết tiếng Việt và để sử ... ng •
dụng các bảng thống kê âm tiết trong [ 1], Hình 3 Cách xác định một âm tiết
ta có thể thiết kế cơ sở dữ liệu là một mảng
hai chiều. Mỗi phần tử của mảng cho phép Cấu trúc một phần tử mảng như sau :
kiểm tra tính đúng đắn (hay sự có mặt) một
Type Phần_tử_mảng = Record
Vấn_đề_chính_tả
Loại_từ
Nghĩa
Nối_từ
Chuyển_ngữ
end
Hình 4 Cách xác định một âm tiết
Mục Vấn_đề_chính_tả có thể có các Mục Loại_từ cho biết đây là loại từ gì
giá trị như sau : về mặt ngữ pháp, nếu âm tiết là một từ
− Có âm tiết sử dụng trong tiếng Việt đơn. Chẳng hạn loại từ có thể là danh từ,
− Có vấn đề về chính tả, ví dụ về thanh đại từ, động từ, phụ từ, tính từ, v.v...
điệu (họa hay hoạ, qúy hay quý...), về Mục Nghĩa cho biết nghĩa (semantic)
phát âm các phương ngữ với chữ viết (z của từ biên soạn theo nội dung cuốn Từ
tương đương d và gi, kỳ dị, lý luận, điển tiếng Việt [ 2]. Về mặt chương trình,
kỉ...), về từ ngữ vay mượn của nước trường Nghĩa được thiết kế là một con trỏ
ngoài (karaole, photocopy, fax, bếp (pointer) trỏ đến nơi chứa các dòng văn
gas...)... bản giải thích nghĩa của từ.
− Có yếu tố cấu tạo từ Hán-Việt, ví dụ Mục Nối_từ cho phép liên kết với các
cọng - cộng..., bãi - bỏ... âm tiết khác để tạo thành các từ ghép. Ví
− Không thể có cấu tạo âm tiết như qút, các từ ghép tươi đẹp, xinh tươi, xinh đẹp,
quôn, coan (quan), cuê (quê)... xinh xinh, xinh xắn, đẹp đẽ được minh hoạ
Tuỳ theo mức độ nghiên cứu chính tả, cách nối ghép như sau (Hình 5) :
có thể thêm các giá trị mới vào mục này.
3
ẹp ẽ
đ đ •
•
ươi ắn
inh
t • x • x •
Hình 5 Cách tạo các từ ghép
Với từ ghép đôi, có thể xảy ra các mối kẽo kẹt... hoặc từ ghép dài hơn thì phải xây
nối hai chiều, như ân ái - ái ân, bảo đảm - dựng các mối nối bắc cầu.
đảm bảo... hoặc các mối nối vòng, như Hình 6 dưới đây mô tả Nối_từ là một
chung chung, xinh xinh... Trường hợp các cấu trúc con trỏ đặc biệt cho phép xử lý
từ ghép ba, như tỏng tòng tong..., các từ các loại mối nối khác nhau như vừa trình
ghép bốn như lượt thà lượt thượt, kẽo cà bày. Để dễ triển khai, có thể quy ước các
từ ghép chỉ xác định bởi âm tiết đầu.
Type
Nối_từ = Record
Nối_đôi
Nối_vòng
Nối_bắc_cầu
end
Hình 6 Cấu trúc mối nối từ
Các trường Nối_đôi, Nối_vòng và dụng là 1 byte hoặc 2 byte, thứ tự dấu
Nối_bắc_cầu là những con trỏ trỏ đến một thanh, cách bố trí các ký tự...). Do chưa sử
danh sách gồm các con trỏ trỏ đến các dụng mã thống nhất nên giải pháp tốt nhất
phần tử của mảng (số phần tử của danh là nên sử dụng một bộ mã trục (pivot code)
sách là số từ ghép tương ứng). để dễ dàng chuyển đổi qua lại giữa các mã.
Mục Chuyển_ngữ cho phép ghi nghĩa Bộ mã trục được chọn là VIQR
tương đương của âm tiết (từ đớn) và từ (VIetnamese Quoted Readable
ghép trong một ngôn ngữ nào đó, ví dụ Specifications). Bộ mã này do nhóm Viet-
Anh ngữ, Pháp ngữ, v.v... Như vậy có thể Std (Vietnamese Standardization Working
thiết kế mục Chuyển_ngữ có cùng cấu trúc Group) phát triển chỉ sử dụng các ký tự
với mục Nối_từ. ASCII chuẩn 7-bits để biểu diễn dấu tiếng
Việt nên tính tương thích rất cao.
II.3. Chuyển đổi mã
Ví dụ để gõ vào câu Đại học Đà nẵng :
Hiện nay có rất nhiều phông chữ DDa.i ho.c DDa` na(~ng.
(fonts) tiếng Việt xây dựng trên nhiều bộ
mã khác nhau (khác nhau về số bytes sử
4
IBM
CP 01129
VISCII TCVN3
VNI VIQR VietWare
VietKey BKtpHCM
Microsoft
CP 1258
Hình 7 Bộ mã trục VIQR
Trước khi chuyển mã nguồn về mã Cấu trúc cơ sở dữ liệu từ vựng đã thiết
VIQR cần có thủ tục Nhận_diện_ kế cho phép xây dựng từ điển đa chức năng
mã_nguồn và trước khi chuyển mã VIQR (multipurpose), đa ngữ (multilingual) phục
sang một mã đích khác cần có thủ tục vụ xử lý ngôn ngữ tự nhiên, trước hết là từ
Nhận_diện_mã_đích. điển chính tả và từ điển tra nghĩa.
Như vậy để phát hiện lỗi chính tả, công
cụ ViệtTools sẽ làm việc trên các âm tiết đã Tài liệu tham khảo
được chuyển sang mã VIQR. ViệtTools [ 1 ] Hoàng Phê. Từ điển chính tả. Trung tâm từ
phân tích các âm tiết để dò tìm phụ âm đầu điển học, NXB Đà nẵng 1995
và khuôn vần tìm được trong các vectơ phụ [ 2 ] Hoàng Phê. Từ điển tiếng Việt. Trung tâm
âm đầu và khuôn vần tương ứng theo mã từ điển học, NXB Đà nẵng 1997
VIQR. [ 3 ] Nguyễn Kim Thản. Ngữ pháp tiếng Việt.
NXB Giáo dục 1997
III Kết luận [ 4] W. J. Hutchins & H. L. Somers. An
Về mặt lý thuyết, ta đã thiết kế xong Introduction to Machine Translation.
công cụ ViệtTools cho phép phát hiện và Academic Press 19ìc
sửa lỗi chính tả. Ưu điểm của phương pháp [ 5] B. T. S Atkins & A. Zampolli.
là công cụ hoạt động không phụ thuộc vào Computational Approaches to the Lexicon.
mã phông chữ tiếng Việt đang sử dụng và Oxford University Press 1994
không phụ thuộc vào ứng dụng hiện hành.
ViệtTools cũng được thiết kế theo
hướng mở bằng cách thêm các chức năng
sắp xếp, chuyển mã văn bản hoặc dữ liệu
tiếng Việt, v.v...
5