1
XÂY DNG CÔNG C KIM TRA CHÍNH T TING VIT
TRONG MÔI TRNG MICROSOFT WINDOWS
DESIGN A TOOL KIT TO CHECK THE SPELLING OF VIETNAMESE TEXT
IN MICROSOFT WINDOWS
Phan Huy Khánh
E-mail:
Tóm tt⎯Bài báo này trình bày gii pháp thit k mt công c gi là VitTools cho phép kim tra chính t
ting Vit bng cách xây dng mt c s d liu t vng trên mã VIQR. VitTools đc m rng thành
công c vn nng đ có th chuyn mã vn bn, sp xp, tra cu t đin ting Vit hoc t đin đa ng, x
lý ngôn ng t nhiên.
T khoá⎯c s d liu, mã, chuyn mã, mã trc, phông ch, ting Vit, chính t, t đin, x lý vn bn.
I t vn đ
Hin nay, hu nh mi công vn, giy
t giao dch thng ngày đu đc to ra và
in n bng máy vi tính. Mt trong nhng
phn mm “vn phòng” đc s dng
tng đi thông dng là trình son tho vn
bn Microsoft Word (gi tt là WinWord).
Có th nói vic ch bn, in n t đng đã
làm vn bn đc trình bày đp hn, ni
dung phong phú hn và do vy, cht lng
hiu qu công vic cng đc tng lên.
Tuy nhiên, vic son tho các vn bn
ting Vit vn còn đt ra nhng vn đ cha
đc gii quyt tt, trong đó có vn đ tìm
và khc phc các li chính t. Nguyên nhân
là vic s dng máy vi tính tng đi ph
cp, s bn rn và phc tp ca cuc sng
nên con ngi có ít thi gian, các phn
mm hin nay hu nh ch làm vic vi
ting Anh...
Nhng li chính t hay gp nht là :
− B du thanh sai, vit sai do cách phát
âm sai t vùng này qua vùng khác, ví d
nghip gõ thành ngip, s gõ thành x,
ngõ gõ thành ng trong ngõ ph, ngõ
hm...
− t du câu sai, hay gp là các du phy
(,), du chm (.), du chm lng (...)
v.v... không có du cách phía sau mà li
có du cách phía trc, ví d gà, bò,
heo... li gõ thành gà ,bò ,heo ...
− Không theo chun hoá chính t, s dng
nhiu t mt cách tu tin không nht
quán ngay trong cùng mt vn bn, ví d
gy mà không phi gãy, màu (sc) thay
cho mu (nhim), gi thay cho gi, v.v...
Nh đã bit, chính t ting Vit là mt
vn đ luôn luôn đc nhi
u ngi quan
tâm, bi vì tính thng nht ca ngôn ng
đc th hin tính thng nht v chính t.
T hàng th k nay, ting Vit luôn đi mi
và phát trin cùng vi vn hoá, xã hi, kinh
t và giao lu quc t. có th s dng
đúng đn cng nh góp phn làm phong
phú ting Vit, vic chun hoá và thng
nht chính t rõ ràng là mt vn đ có tính
thi s.
Nh vy, vn đ đt ra là làm sao có th
khc phc các li chính t ting Vit khi
son tho vn bn trên máy vi tính ? Do
trình son tho vn bn Winword ch có
chc nng phát hin và sa li chính t
(check and correct spelling) áp dng đc
cho ting Anh, hin nay đã có nhng gii
pháp đ áp dng cho ting Vit. Ví d trình
VietSpell Checker (ca Trung tâm Tin hc,
HKH tp.HCM), VitKey (ca ng Minh
Tun), các phông ch VNI tân k, ABC...
Bài báo này trình bày mt gii pháp
tng quát và có tính m đ xây dng mt
công c, đc gi là VitTools, có chc
nng phát hin - sa li chính t và các
chc nng x lý ting Vit khác nh :
− Chuyn đi các vn bn ting Vit son
tho trên mt h phông ch bt k sang
mt h phông ch bt k khác.
− Sp xp vn bn ting Vit theo th t
ABC không ph thuc vào phông ch
đang s dng.
− Khai thác tra cu t vi chc nng là
mt t đin đn ng và/hoc đa ng.
Xây dng công c kim tra chính t ting Vit
2
Âm tit
− Kh nng m rng đ x lý ting Vit
theo quan đim x lý ngôn ng t nhiên...
Theo t đin chính t ca Hoàng Phê [
1], ting Vit có 6.760 âm tit ch vit đ
cu to t đn hay t ghép. Mi âm tit
gm hai phn : ph âm đu (có th vng
mt) và khuôn vn (gm vn và thanh điu).
Ví d các t đn n, hc, đp, trng... là
do các âm tit n, hc, đp, trng... to
thành, các t ghép chm ch, đp đ do các
ph âm đu ch, đ và các âm tit m, , p và
to thành.
Nh vy, đ phát hin và sa li chính
t, cn da trên vic phân tích mt âm tit
bng cách nhn din (v mt hình hc) ph
âm đu và khuôn vn. Cu trúc âm tit có
th đc phân bit nh sau (Hình 1) :
Hình 1 Cu trúc âm tit ting Vit
Theo thng kê ca Hoàng Phê, ting
Vit có tt c 25 ph âm đu và 1160 khuôn
vn, cu trúc âm tit luôn luôn gm mt ph
âm đu ghép vi mt khuôn vn hoc âm
tit ch gm mt khuôn vn.
II Thit k công c VitTools
VitTools s đc thit k trong môi
trng Microsoft Windows đ có th áp
dng cho các ng dng vn phòng nh
Winword, Excel, Access, PowerPoint.... V
mt lý thuyt, cn phi gii quyt ba vn đ
là xây dng b phát hin - sa li chính t,
c s d liu t vng và chuyn đi mã.
II.1. Xây dng b phát hin và sa
li chính t
xây dng b phát hin - sa li
chính t, cn gii quyt hai vn đ là phát
hin li chính t và sa li. Ta có th s
dng thut toán sau (Hình 2) :
Repeat
c_mt_âm_tit
Phân_tích_âm_tit
Kim_tra_li_chính_t
If Có_li then Sa_li
Until Ht_ âm_tit or Yêu_cu_dng
Khuôn vn
Vn Thanh điu
Ph âm đu
Hình 2 Thut toán phát hin và sa li chính t
Vic c_mt_âm_tit đc tin hành
ln lt t đu vn bn đang xét tr đi
hoc bt đu t v trí du chèn tr v cui
vn bn (down) hoc ngc (up) v đu
vn bn. Mt âm tit là mt xâu ký t ch
gm toàn ch cái thuc phông ch ting
Vit đang s dng hin hành, đc đt
gia các ký t ngt câu, hoc ký t ngt
dòng, hoc ký t khác ch cái.
Phân_tích_âm_tit tc là tách âm tit
thành 2 phn, ph âm đu và khuôn vn.
Khi nhn din, ta thy ph âm đu gi có
hai trng hp phân bit là g (trong gic,
giã...) và gi (trong gin, giêng...) còn các
ph âm đu khác đu không cha nguyên
âm. Ph âm đu qu mc dù có cha
nguyên âm u nh
ng d tách ra khi âm tit
vì không có q đng mt mình.
Các cp ph âm đu có đ dài 1, ch,
gh, kh, ph, th, tr và ng), hoc 3 (ngh). Nu
mt âm tit bt đu bi mt nguyên âm thì
âm tit đó không có ph âm đu.
Sau khi phân tích âm tit thành ph âm
đu và khuôn vn, Kim_tra_li_chính_t
đc tin hành theo hai bc :
1. Ph âm đu (nu có) và khuôn vn có
thuc danh sách các ph âm đu và
khuôn vn cho phép không ?
2. Âm tit có hp l không ?
Nu âm tit đang xét vi phm mt
trong hai li trên (đ tin trình bày, ta gi
là li loi 1 và là li loi 2), giá tr bin
logic Có_li đc khng đnh, ngha là đã
phm li chính t.
Trong trng hp này, vic Sa_li s
cn c vào bn cht ca li là lo
i 1 hay
Xây dng công c kim tra chính t ting Vit
loi 2. Tính “thông minh” ca b phát hin
- sa li chính t là ch có th “đoán”
đc ý đ ca tác gi vn bn mà gi ý
cách sa cha.
Vic phát hin - sa li dng khi
không còn âm tit hoc ngi s dng yêu
cu dng công vic.
II.2. Xây dng c s d liu t
vng
Do cu trúc âm tit ting Vit và đ s
dng các bng thng kê âm tit trong [ 1],
ta có th thit k c s d liu là mt mng
hai chiu. Mi phn t ca mng cho phép
kim tra tính đúng đn (hay s có mt) mt
âm tit cn c vào v trí hàng ca ph âm
đu và v trí ct ca khuôn vn.
Ví d âm tit ngoi là phn t đc
xác đnh t ph âm đu th và khuôn vn
oi t bng sau (bên phi Hình 3 là cách
xác đnh âm tit đó) :
...
oi ...
...
ng
⌦
...
oi
ng
•
Hình 3 Cách xác đnh mt âm tit
Cu trúc mt phn t mng nh sau :
Type Phn_t_mng = Record
Vn_đ_chính_t
Loi_t
Ngha
Ni_t
Chuyn_ng
end
Hình 4 Cách xác đnh mt âm tit
Mc Vn_đ_chính_t có th có các
giá tr nh sau :
− Có âm tit s dng trong ting Vit
− Có vn đ v chính t, ví d v thanh
điu (ha hay ho, qúy hay quý...), v
phát âm các phng ng vi ch vit (z
tng đng d và gi, k d, lý lun,
k...), v t ng vay mn ca nc
ngoài (karaole, photocopy, fax, bp
gas...)...
− Có yu t cu to t Hán-Vit, ví d
cng - cng..., bãi - b...
− Không th có cu to âm tit nh qút,
quôn, coan (quan), cuê (quê)...
Tu theo mc đ nghiên cu chính t,
có th thêm các giá tr mi vào mc này.
Mc Loi_t cho bit đây là loi t gì
v mt ng pháp, nu âm tit là mt t
đn. Chng hn loi t có th là danh t,
đi t, đng t, ph t, tính t, v.v...
Mc Ngha cho bit ngha (semantic)
ca t biên son theo ni dung cun T
đin ting Vit [ 2]. V mt chng trình,
trng Ngha đc thit k là mt con tr
(pointer) tr đn ni cha các dòng vn
bn gii thích ngha ca t.
Mc Ni_t cho phép liên kt vi các
âm tit khác đ to thành các t ghép. Ví
các t ghép ti đp, xinh ti, xinh đp,
xinh xinh, xinh xn, đp đ đc minh ho
cách ni ghép nh sau (Hình 5) :
3
p
4
Hình 5 Cách to các t ghép
Vi t ghép đôi, có th xy ra các mi
ni hai chiu, nh ân ái - ái ân, bo đm -
đm bo... hoc các mi ni vòng, nh
chung chung, xinh xinh... Trng hp các
t ghép ba, nh tng tòng tong..., các t
ghép bn nh lt thà lt tht, ko cà
ko kt... hoc t ghép dài hn thì phi xây
dng các mi ni bc cu.
Hình 6 di đây mô t Ni_t là mt
cu trúc con tr đc bit cho phép x lý
các loi mi ni khác nhau nh va trình
bày. d trin khai, có th quy c các
t ghép ch xác đnh bi âm tit đu.
Type
Ni_t = Record
Ni_đôi
Ni_vòng
Ni_bc_cu
end
Hình 6 Cu trúc mi ni t
Các trng Ni_đôi, Ni_vòng và
Ni_bc_cu là nhng con tr tr đn mt
danh sách gm các con tr tr đn các
phn t ca mng (s phn t ca danh
sách là s t ghép tng ng).
Mc Chuyn_ng cho phép ghi ngha
tng đng ca âm tit (t đn) và t
ghép trong mt ngôn ng nào đó, ví d
Anh ng, Pháp ng, v.v... Nh vy có th
thit k mc Chuyn_ng có cùng cu trúc
vi mc Ni_t.
II.3. Chuyn đi mã
Hin nay có rt nhiu phông ch
(fonts) ting Vit xây dng trên nhiu b
mã khác nhau (khác nhau v s bytes s
dng là 1 byte hoc 2 byte, th t du
thanh, cách b trí các ký t...). Do cha s
dng mã thng nht nên gii pháp tt nht
là nên s dng mt b mã trc (pivot code)
đ d dàng chuyn đi qua li gia các mã.
B mã trc đc chn là VIQR
(VIetnamese Quoted Readable
Specifications). B mã này do nhóm Viet-
Std (Vietnamese Standardization Working
Group) phát trin ch s
dng các ký t
ASCII chun 7-bits đ biu din du ting
Vit nên tính tng thích rt cao.
Ví d đ gõ vào câu i hc à nng :
DDa.i ho.c DDa` na(~ng.
t
i
•
x
inh
•
đ
đ
•
n
x
•
•
5
Hình 7 B mã trc VIQR
Trc khi chuyn mã ngun v mã
VIQR cn có th tc Nhn_din_
mã_ngun và trc khi chuyn mã VIQR
sang mt mã đích khác cn có th tc
Nhn_din_mã_đích.
Nh vy đ phát hin li chính t, công
c VitTools s làm vic trên các âm tit đã
đc chuyn sang mã VIQR. VitTools
phân tích các âm tit đ dò tìm ph âm đu
và khuôn vn tìm đc trong các vect ph
âm đu và khuôn v
n tng ng theo mã
VIQR.
III Kt lun
V mt lý thuyt, ta đã thit k xong
công c VitTools cho phép phát hin và
sa li chính t. u đim ca phng pháp
là công c hot đng không ph thuc vào
mã phông ch ting Vit đang s dng và
không ph thuc vào ng dng hin hành.
VitTools cng đc thit k theo
hng m bng cách thêm các chc nng
sp xp, chuyn mã vn bn hoc d liu
ting Vit, v.v...
Cu trúc c s d liu t vng đã thit
k cho phép xây dng t đin đa chc nng
(multipurpose), đa ng (multilingual) phc
v x lý ngôn ng t nhiên, trc ht là t
đin chính t và t đ
in tra ngha.
Tài liu tham kho
[ 1 ] Hoàng Phê. T đin chính t. Trung tâm t
đin hc, NXB à nng 1995
[ 2 ] Hoàng Phê. T đin ting Vit. Trung tâm
t đin hc, NXB à nng 1997
[ 3 ] Nguyn Kim Thn. Ng pháp ting Vit.
NXB Giáo dc 1997
[ 4] W. J. Hutchins & H. L. Somers. An
Introduction to Machine Translation.
Academic Press 19ìc
[ 5] B. T. S Atkins & A. Zampolli.
Computational Approaches to the Lexicon.
Oxford University Press 1994
VIQR
IBM
CP 01129
TCVN3
VietKey
VISCII
VietWare
VNI
BKtpHCM
Microsoft
CP 1258