Khóa luận Kiểm lỗi chính tả tiếng Việt

ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Lê Tuấn Linh  
KIM LI CHÍNH TTING VIT  
KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghthông tin  
Li cảm ơn  
Tôi xin chân thành cảm ơn thầy giáo hướng dn Ths. Bùi Ngọc Thăng, người đã  
tạo điu kin giúp tôi có ththc hiện đưc luận văn này.  
Tôi xin chân thành cảm ơn thầy Lê Anh Cường. Thầy đã giúp đỡ và chbo tn  
tình vchuyên môn giúp tôi gii quyết được nhiu vấn đề còn khúc mắc. Đồng thi,  
thy cũng là người định hướng và giúp tôi theo đuổi lĩnh vực xlý ngôn ngtnhiên  
mà tôi yêu thích.  
Tôi cũng xin chân thành cảm ơn thầy Nguyễn Phương Thái, anh Nguyễn Vit  
Cường đã giúp đỡ tôi giải đáp một svấn đề lý thuyết và dliu trong quá trình thc  
hin luận văn.  
Cui cùng, nhưng không kém phần quan trng, tôi xin chân thành cảm ơn người  
thân, bạn bè đã luôn giúp đỡ, động viên tôi trong sut quá trình hc tp và hoàn thành  
luận văn.  
Tóm tt luận văn  
Hin nay, vấn đề kim li chính tả văn bản tự động là mt vấn đề được rt nhiu  
cá nhân, đơn vị trên thế gii nghiên cu và trin khai. Vi tiếng Vit, hin cũng có  
không ít công trình nghiên cu và sn phm gii quyết bài toàn này, tuy nhiên các  
chương trình kim li chính tcm ngcnh tiếng Vit còn rất ít, và đặc bit là chưa  
có chương trình kim li chính tcm ngcnh tiếng Việt nào được thc thi trên nn  
web mà chdng li mức độ âm tiết. Luận văn này sẽ tp trung nghiên cu vấn đề  
kim li chính ttiếng Vit nói chung và kim li chính tcm ngcnh tiếng Vit  
nói riêng. Bên cạnh đó, luận văn đề xut vic kim li chính ttrc tuyến nhm ng  
dụng được rng rãi hơn, giúp giảm bt công sc của con người.  
Luận văn “Kiểm li chính ttiếng Vit” nghiên cu vic sdng mô hình ngôn  
ngcho vic gii quyết bài toán kim li chính tcm ngcnh tiếng Vit.  
Mc lc  
Mở đu ........................................................................................................................1  
Chương 1: Tổng quan ..................................................................................................2  
1.1. Gii thiu..........................................................................................................2  
1.1.1. Bài toán kim li chính t..........................................................................2  
1.1.2. Mt số phương pháp kiểm li chính t.......................................................2  
1.2. Mt số đặc điểm trong tiếng Vit ......................................................................3  
1.2.1. Đặc đim ca tiếng Vit.............................................................................3  
1.2.2. Các đơn vị ca tiếng Vit...........................................................................3  
1.3. Mt sli chính tả cơ bản và phương pháp kiểm li mức độ âm tiết.................5  
1.3.1. Lỗi do đánh máy ........................................................................................5  
1.3.2. Li do phát âm...............................................................................................6  
1.4. Mc tiêu ca luận văn.......................................................................................7  
Chương 2: Mô hình ngôn ng......................................................................................8  
2.1. Gii thiu..........................................................................................................8  
2.2. Tính toán xác sut da trên n-gram ...................................................................8  
2.3. N-gram đơn giản...............................................................................................9  
2.4. Làm mn (smoothing)......................................................................................12  
2.5. Áp dng cho tiếng Vit ...................................................................................14  
Chương 3: Phương pháp kiểm li chính ttiếng Vit da trên n-gram.......................15  
3.1. Collocation .....................................................................................................15  
3.2. Hun luyn......................................................................................................16  
3.3. Thut toán kim li.........................................................................................17  
3.3.1. Sinh tp nhm ln âm tiết.........................................................................17  
3.3.2. Sdng n-gram để đưa ra âm tiết gi ý....................................................21  
3.4. Kết quvà tho lun .......................................................................................22  
3.4.1. Kết qu....................................................................................................22  
3.4.2. Tho lun.................................................................................................24  
Chương 4: Ứng dng trên môi trưng Web................................................................25  
4.1. Môi trường lp trình web ................................................................................25  
4.2. Ưu điểm và nhược điểm..................................................................................25  
4.2.1. Ưu đim...................................................................................................25  
4.2.2. Nhược điểm .............................................................................................26  
4.2.3. Mt skthut nhm khc phục nhược điểm ..........................................26  
Kết lun.....................................................................................................................29  
Phlc.......................................................................................................................30  
Phlc 1: Bng kết hp nguyên âm vi các phâm gi, qu ....................................30  
Phlc 2: Bng mt sli phát âm tiếng Vit .......................................................32  
Tài liu tham kho .....................................................................................................33  
Tiếng Anh..............................................................................................................33  
Tiếng Vit..............................................................................................................33  
Mở đầu  
Hthng chviết tiếng Vit là mt hthng chviết linh động, thông minh, có  
thddàng biu thtiếng nói dưới dng chviết chcn da trên nhng lut nhất định  
mà không đòi hi quá nhiu vmt kiến thc tvựng như nhiều ngôn ngkhác (tiếng  
Anh, Pháp, Trung…). Tuy nhiên, vic giao tiếp hng ngày chyếu là qua tiếng nói,  
điều này dẫn đến vic có nhiu cách phát âm không ging nhau gia các vùng min  
khác nhau đối vi cùng mt t. Vic này rt ddẫn đến mc li sai chính ttrong khi  
viết. Thêm vào đó, công nghệ thông tin ngày càng phát trin, vic son thảo văn bản  
bng hình thc viết tay dần được thay thế bng son thảo văn bản qua hình thức đánh  
máy. Do đó, xuất hin thêm mt loi li chính tna là lỗi do đánh máy gây ra. Những  
lỗi sai này, người son thảo văn bản thường không hoc khó có thnhn ra li chính tả  
ca mình. Điều này đã dn nhu cu kim li chính ttự động cho nhiu ngôn ngtrên  
các hson tho khác nhau.  
Có hai loi li chính ttiếng Vit là li sai âm tiết và li sai tvng (âm tiết  
đúng). Luận văn này sdng thông tin ngcảnh để sa loi li thhai. Thông tin ngữ  
cảnh được thng kê từ corpus văn bản thô da trên mô hình ngôn ngn-gram. Ngun  
dliệu cho corpus được lc tách tInternet.  
Luận văn nhắm đến ng dng kim li chính ttự động trên nn web (web  
application). Ưu điểm của chương trình thừa hưởng ưu điểm ca Internet là không tn  
tài nguyên trên máy của người sdng, không phthuộc vào nơi sử dụng chương  
trình (phm vi ng dng ln). Do đó, chương trình có thsdng trên các thiết bdi  
động (Laptop, netbook, smartphone…).  
Luận văn gồm có 4 chương:  
Chương 1: Giới thiu tng quan vtiếng Vit, bài toán kim li chính tvà  
phương pháp kiểm li chính tả đưc sdng.  
Chương 2: Trình bày mt svấn đề lý thuyết vmô hình ngôn ngn-gram.  
Chương 3: Kim li chính tda vào ngcnh sdng n-gram.  
Chương 4: Mt svấn đề về ứng dng trên nn web và cách gii quyết.  
1
Chương 1: Tng quan  
Chương này giới thiu vbài toán kim li chính t, mt số phương pháp kiểm  
li chính tvà phương pháp sẽ được sdng trong luận văn này. Chúng tôi cũng trình  
bày mt số đặc điểm ca tiếng Vit và chviết tiếng Vit, tp trung vào những đặc  
điểm có thsdụng để kim tra và sa li chính ttiếng Vit. Luận văn chỉ đề cập đến  
vấn đề chính ttiếng Việt, do đó khi nói “tiếng Vit” cũng có thể được hiu là “chữ  
viết tiếng Vit”. Chương này có tham khảo mt số tư liệu tin cy trên Internet và cun  
“Chính ttiếng Vit” ca cố Giáo sư Hoàng Phê [8].  
1.1. Gii thiu  
1.1.1. Bài toán kim li chính tả  
Bài toán kim li chính tlà mt bài toán khá phc tạp, được không ít đơn vị  
nghiên cu, phát trin và nó có tính ng dụng cao, đặc bit là trong các ng dng son  
tho hay nhn dạng văn bản.  
Chương trình kim li chính tcn có hai chức năng chính, cơ bản là chra li  
sai và đưa ra gợi ý sa li. Tuy nhiên, các chức năng kiểm li chính tả được tích hp  
trong nhiu ng dng son tho tiếng Vit hiện nay (Vietkey, Unikey…) không đưa ra  
gi ý cho người dùng la chn.  
Đề gii quyết bài toàn này, hin nay đã có mt scá nhân hoc nhóm nghiên cu  
và phát trin phn mm kim li chính tả như:  
- Kim li chính ttrên hson tho ngoi tuyến (offline): Chương trình kim li  
chính tCopCon ca ThS. Mai Tun Khôi - Giảng viên khoa CNTT ĐH Sư Phạm Kỹ  
Thut TPHCM; Chương trình kim li chính tCú Mèo do Công ty cphần đầu tư  
phát trin công nghSOBIC phát trin. Các phn mm này có khả năng sửa li chính  
tả ở mức độ tghép hai hoc ba âm tiết.  
- Kim li chính ttrc tuyến hu hết là cho tiếng Anh. Các chương trình kim  
li chính ttrc tuyến đa số là chưa hoàn chỉnh, và chdng li mức độ kim li âm  
tiết.  
1.1.2. Mt số phương pháp kiểm li chính tả  
Ta có thtạm chia ra hai phương pháp chính đó là dựa vào lut và da vào thng  
kê. Các phương pháp dựa theo luật có ưu điểm là không tn quá nhiu tài nguyên ca  
2
thiết bị, tuy nhiên các chương trình sdụng phương pháp này không có khả năng học,  
và hin ti kết qucũng chưa cao đối vi nhiu ngôn ng.  
Có khá nhiều phương pháp dựa vào thống kê khác nhau đã được đưa ra để kim  
li chính ttiếng Anh. Trong phm vi gii hn ca luận văn, chúng tôi xin chỉ lit kê  
một vài phương pháp được đánh giá là nổi bt.  
“Mt snghiên cu sdng mô hình kênh nhiễu như Mays và cộng s(1990),  
Church và Gale (1991), Brill và Moore (2001)”. “Phương pháp lai Bayes, sử dng  
hàm phân loi Naive Bayes”. “Kết hp mô hình trigram tloi và hàm phân loi  
Bayes”. Các phương pháp: “học da trên biến đổi (Mangu và Brill, 1997), phân tích  
nghĩa ẩn (Jones và Martin, 1997), differential-grammars (Powers, 1997), Winnow-  
based (Golding và Roth, 1999), và khôi phc ckết tvng (Hirst và Budanitsky,  
2001)1  
1.2. Mt số đặc điểm trong tiếng Vit  
1.2.1. Đặc đim ca tiếng Vit  
Tiếng Vit là mt ngôn ngữ đơn lập, quan hgia các từ được biu thbng  
những phương tiện nm ngoài từ như trật ttừ, hư từ. Đặc điểm này được áp dng cho  
cvngâm, ngpháp và ngnghĩa.  
1.2.2. Các đơn vị ca tiếng Vit  
* Tiếng (âm tiết)  
Âm tiết là đơn vị phát âm tnhiên nhnht trong ngôn ng. Trong tiếng Vit,  
mt âm tiết bao gicũng được phát ra vi một thanh điệu, và khi viết được tách ri  
vi âm tiết khác bng mt khong trng. Trên chviết, mi âm tiết tiếng Việt được  
ghi thành mt “chữ” và đọc thành mt “tiếng”.  
Có nhiu cách mô tcu trúc âm tiết tiếng Vit khác nhau: 3 thành phn, 4 hay 5  
thành phn.  
Bng 2.1. Cu trúc 3 thành phn:  
<Thanh điệu>  
[Phâm]  
<Vn>  
1 Nguyễn Phương Thái, Kiểm li chính tcm ngcnh tiếng Vit, 2003, Luận văn thạc sĩ, Hà Ni  
3
Bng 2.2. Cu trúc 4 thành phn:  
[Phụ âm đầu]  
<Thanh điệu>  
<Nguyên âm> [Phâm cui]  
Bng 2.3. Cu trúc 5 thành phn:  
<Thanh điệu>  
Vn  
[Âm đầu]  
[Âm đệm]  
<Âm chính>  
[Âm cui]  
- Các thành phn trong du < > là bt buc  
- Các thành phn trong du [ ] là không bt buc  
- Thanh ngang (không được viết) cũng được tính là mt du thanh.  
Luận văn này sử dng cu trúc âm tiết bn thành phn.  
Bng 2.4. Các thành phn âm tiết:  
Phụ âm đầu  
b c d đ g h k l m n q r s t v x ch gh gi kh ng nh ph qu th tr ngh  
a ă â e ê i o ô ơ u ư y ai ao au ay âu ây eo êu ia iu iê oa oă oe oi  
oo ôi ơi ua uâ ui uê uô uơ uy ưa ưi ươ ưu yê oai oay uây uôi  
iêu uyê ươu ươi uya yêu uyu  
Nguyên âm  
Phâm cui  
Thanh điệu  
c p t m n ch ng nh  
Ngang, huyn, hi, ngã, sc, nng  
T:  
Từ là đơn vị ngôn ngcó nghĩa hoàn chnh. Ttiếng Vit bao gm mt hay  
nhiu âm tiết sp xếp theo mt thtnhất đnh. Có tđơn, tghép và tláy.  
Ttrong tiếng Vit có khả năng hoạt động tự do và độc lp vmt cú pháp. Từ  
tiếng Vit không có sbiến dng (snhiu, ngôi th, bị động…) như trong nhiều ngôn  
ngkhác.  
Câu:  
4
Câu do các thp thành theo nhng quy tc nhất định. Trong tiếng Vit, các quy  
tc này rất đa dạng.  
Du thanh  
Tiếng Vit gồm có 6 thanh điệu: ngang, huyn, hi, ngã, sc, nng. Trong đó có  
5 dấu thanh, thanh ngang không được biu din bi dấu thanh nào. Trong văn bản viết  
tay, dấu thanh được đánh khá tùy tiện, không đặt vào đúng vị trí ca âm chính. Tuy  
nhiên, trong văn bản đánh máy, việc đánh dấu thanh cn tuân thmt squy tc sau:  
- Vi nhng âm tiết chcó mt con chnguyên âm, thì dấu thanh được đặt vào con  
chữ nguyên âm đó. Vd: á à, ì ch, ọ ẹ, rũ, ọp p, c ch, hà, lán, giá, giục, quả,  
quỹ, quỵt... (Chú ý: gi và qu được coi là phâm).  
- Vi nhng âm tiết, mà trong âm tiết đó chỉ cn có mt con chnguyên âm mang  
du ph(Ă, Â, Ê, Ô, Ơ, Ư) và không kkết thúc bng con chgì, thì du thanh  
bao gicũng đặt con chữ đó (riêng ƯƠ, dấu đặt ở Ơ). Vd: thuyền, trưng…  
- Vi nhng âm tiết có hai con chnguyên âm và kết thúc bng mt con chphụ  
âm hoc thp con chphâm, thì dấu thanh được đặt vào con chnguyên âm  
cui cùng.  
- Vi những trường hp còn li thì du thanh được đặt vào con chnguyên âm áp  
chót.  
Hin ti với các trường hp nguyên âm là oa, oe, uy mà không có phâm kết  
thúc như hòa, hòe, thùy… có hai cách đánh dấu thanh là: hòa hoc hoà. luận văn  
này thng nht cách viết thnht – hòa – giống như các quy tắc đánh dấu thanh trên.  
1.3. Mt sli chính tả cơ bản và phương pháp kiểm li mức độ âm tiết  
Các vấn đề chính ttiếng Vit có thgp phi gm có: sai cu tạo, đúng cấu to  
nhưng không có trong từ điển, có trong từ điển nhưng sai về ngnghĩa, sai cu to  
nhưng có thể là ttiếng nước ngoài. Các li sai vcu to âm tiết có thddàng phát  
hin bng cách sdng từ điển, tp âm tiết. Dưới đây chúng tôi chỉ tập trung đến các  
li sai vnghĩa của tkhi âm tiết có trong từ điển. Có nhiu nguyên nhân khác nhau  
dẫn đến các li trên, trong luận văn này chúng tôi chỉ xét đến hai nguyên nhân: do  
đánh máy và do lỗi phát âm (tiếng địa phương).  
1.3.1. Lỗi do đánh máy  
Đây là loại li phbiến, và hu hết đu mc âm tiết. Loi li này gây ra các li  
sai chính tả đơn và lỗi chính tphc. Có bn loi li chính tả đơn:  
5
- Chèn: như nhầm “an” thành “anh”  
- Xoá: như nhầm “chung” thành “chun”  
- Thay thế: như nhầm “vào” thành “cào”  
- Hoán v: như nhầm “hoà” thành “hào”  
Li chính tphc là skết hp liên tiếp trong scác li chính tả đơn ở trên.  
Để phát hiện được lỗi và đưa ra gợi ý sa li, chúng ta cần xác định được tp  
nhm ln âm tiết ca âm tiết mà ta đang xét. Với các lỗi do đánh máy, tập nhm ln  
âm tiết đưc sinh ra gm các âm tiết có “khong cách son tho” (edit distance) so vi  
âm tiết đang xét nhỏ hơn một ngưỡng chọn trước. Khong các son tho cho biết mc  
độ khác nhau giữa xâu ban đầu và xâu bbiến đổi.  
Trưc khi tính khong cách son tho nhnht, chúng tôi tách riêng du thanh và  
biến đổi xâu ban đầu đã loi bdu vdạng đánh máy TELEX. Ví dụ: “chào” ->  
“chao” + “f”, “trưởng” -> “truwowng” + “r”. Khi đó, việc tính khong cách son tho  
scho kết quả tính giá tương đối đúng với vic son tho trên bàn phím. Vic tính giá  
cho phép thay thế da vào vtrí các phím trên bàn phím. Các phím lin knhau có giá  
thấp hơn so với các phím không lin k(c -> v nhỏ hơn c -> s).  
Để to tp nhm ln cho các li son tho, chúng tôi tách từ ban đầu ra thành 4  
phn theo cu trúc âm tiết, sau đó xử lý tng phn và ghép chúng li vi nhau. VD: âm  
tiết (sai) hcào được tách ra thành 4 phần và được xlý:  
- hc: c, ch, h,…  
-> cào, chào, hào,…  
-> hcòa, hcèo, hcàu,…  
- ao: oa, eo, au,…  
- (rng): n, m, t,…  
- f(du huyn): s, r, x,…  
-> hcàon, hcàom, hcàot,…  
-> hcáo, hco, hcão,…  
Tiếp đó, các âm tiết mới được to ra sẽ được kim tra trong từ điển âm tiết1, âm  
tiết có trong từ điển sẽ được đưa vào tập nhm ln âm tiết và tp này sẽ được sp xếp  
theo thtự tăng dần vkhong cách son tho so vi âm tiết ban đầu.  
1.3.2. Li do phát âm  
1 Hoàng Phê (chbiên), Từ điển tiếng Vit, 2002, Nhà xut bản Đà Nẵng  
6
Li do phát âm xy ra cả trong văn bản viết tay và văn bản đánh máy. Lỗi này  
xảy ra do thói quen “đọc như thế nào thì viết như thế”, do đó lỗi này thường gn lin  
với các phương ngữ.  
VD: nhiu -> nhìu; hi -> hi; ra, gia -> da…  
Có thtp hp mt sli phát âm theo như trong bng Phlc 2.  
Tp nhm lẫn do phát âm có tính đối xng, tc là các âm trong cùng mt tp có  
thnhm ln với nhau. Để đưa ra các đề nghcho loi li này chcn tra âm tiết da  
vào bng li phát âm.  
1.4. Mc tiêu ca luận văn  
Do nhược điểm của phương pháp kiểm li chính ttiếng Vit chda theo lut là  
khá phc tp và không có khả năng học.  
Luận văn này hướng ti vic tìm hiu và ng dng kim li chính ttiếng Vit  
mức độ tvng da vào thông tin ngcnh, sdụng phương pháp hc máy thng kê  
trên mô hình ngôn ngn-gram. Nhkhả năng học, chương trình có ththích ứng đưc  
vi sự thay đổi không ngng ca ngôn ngmà không tn quá nhiu công sc ca con  
ngưi.  
Đồng thi, luận văn cũng đề xut vic kim li chính ttrc tuyến và cài đặt  
chương trình ng dng chy trên nn web, dựa trên phương pháp lý thuyết được nêu ra  
trong luận văn.  
7
Chương 2: Mô hình ngôn ngữ  
Chương này nhắc li mt slý thuyết vn-gram và đưa ra hướng tiếp cn sử  
dng n-gram vào vic kim li chính tcm ngcnh. Chương này có tham kho tài  
liu [1].  
2.1. Gii thiu  
Mô hình n-gram là mt mô hình xác sut sdng cho vic dự đoán phần ttiếp  
theo trong mt dãy tun tự các đối tượng. Các đối tượng chúng ta xét ti ở đây là các  
âm tiết và du câu.  
2.2. Tính toán xác sut da trên n-gram  
Gista mun dự đoán âm tiết tiếp theo s5 da trên thông tin ngcảnh trước đó  
ca các âm tiết s1s2s3s4. Chúng ta cn tính xác sut ca skin âm tiết tiếp theo là s5  
khi các âm tiết trưc nó là s1…s4, hay nói cách khác, ta cn tìm xác sut:  
P(s1,…,s5)  
Tng quát, vi sn, ta cn tìm:  
P(s1,…,sn)  
Theo quy tc dây chuyn (chain rule) ta có:  
P(s1,…,sn) = P(s1).P(s2|s1)…P(sn|s1,…,sn-1)  
Áp dng công thc trên cho mt câu có n âm tiết, ta stìm ra được thp âm tiết  
“tt nht” cho câu, và thợp này được coi là đúng chính tả. Tuy nhiên, vic tính xác  
suất đó trong thực tế là điều gần như không thể: bi chúng hiếm khi xy ra, và nếu có  
thể tính được thì cũng cn có một lưng dliu rt lớn được dùng để tính toán.  
Để gii quyết vấn đề trên, chúng ta có thxp xnhng xác suất đó bằng mt giá  
trn-gram nhất đnh vi n cho trước.  
Vi n = 1, ta có 1-gram (Unigram):  
P(sn|s1,…,sn-1) P(sn)  
Vi n = 2, ta có 2-gram (Bigram)  
P(sn|s1,…,sn-1) P(sn|sn-1)  
8
Vi luận văn này, chúng tôi chn n = 3 (Trigram). Trong chương trình ng dng,  
chúng tôi sdng kết hp linh hot cunigram, bigram và trigram (không nht thiết  
chsdng trigram) để tính toán xác sut ca mt âm tiết trong những trưng hp mt  
câu có quá nhiu li sai hay có nhiu lỗi sai đứng sát nhau dẫn đến thiếu thông tin do  
gii hn ca phm vi ngcnh 3 âm tiết.  
2.3. N-gram đơn giản  
phn này, chúng tôi nêu lên cách sdng n-gram vào vic dự đoán một từ  
trong tiếng Anh, từ đó suy ra cách áp dụng phương pháp cho âm tiết trong tiếng Vit.  
Gischúng ta có thông tin lch sh “its water is so transparent that” và  
chúng ta mun tính toán xác sut tw tiếp theo s“the:  
P(the|its water is so transparent that)  
Để tính toán xác sut trên ta có thda vào tn sut xut hin ca w h. Ví d,  
chúng ta có thly một lượng dliệu đầu vào (corpus) rt lớn, đếm sln xut hin  
ca h và sln xut hin w đi theo sau h. Vic này có thtrlời được câu hi: “Trong  
tng sln xut hin h, có bao nhiêu lần đứng tiếp sau nó w”:  
Vi một corpus đủ lớn, như internet chẳng hn, chúng ta có thể đếm được các tn  
suất và ước lượng được xác sut nêu công thc trên. Tuy nhiên, chúng ta có thdễ  
dàng nhn thy rng ngay cdliu trên internet cũng không đủ lớn để cho ta nhng  
ước lưng tt trong hu hết các trường hp thc tế. Bi lngôn ngữ con người hết sc  
sáng to, nó biến đổi không ngừng, và do đó mà không phải lúc nào chúng ta cũng có  
thể đếm được toàn bcác câu nói. Thm chí chmt sửa đổi nhca mt câu thôi  
cũng có thkhiến sln xut hin ca nó trên web là bng không.  
Tương tự như vậy, nếu chúng ta mun biết xác sut liên kết ca toàn bchui từ  
W như “its water is so transparent”, chúng ta có thể đặt ra câu hi “trong toàn btổ  
hp khác nhau có thcó ca chui 5 từ đó, có bao nhiêu trong số chúng có thtự như  
trên?”. Chúng ta sphải đếm sln xut hin ca “its water is so transparent” và sau  
đó chia chúng cho tổng sln xut hin ca tng ttrong s5 từ đó. Việc này đòi hi  
một lưng tính toán không hnh.  
9
Chính bi lẽ đó, chúng ta cn có những phương pháp tốt hơn để ước lượng giá trị  
xác sut ca tw vi thông tin lch sh cho trước, và xác sut ca toàn bchui tW.  
Để dễ dàng hơn trong việc diễn đạt, chúng ta scó một vài quy ước như sau: Để biu  
thxác sut ca mt biến độc lp ngu nhiên Xi ly giá tr“the, hay P(Xi = “the”),  
chúng ta srút gn li là P(the). Chui N tcó thbiu din dng w1…wn hoc  
.
Vi xác sut liên kết ca tng triêng bit trong chui: P(X = w1, Y = w2, … ,) được  
thay bng P(w1,w2,…,wn).  
Để tính xác sut P(w1,w2,…,wn) ca các chui t, ta có thphân tích xác sut này  
sdng quy tc dây chuyn:  
Áp dng cho t, ta có:  
Quy tc dây chuyn cho thy mi liên hgia vic tính xác sut liên kết ca mt  
chui vi vic tính xác suất điều kin ca mt tvi các từ cho trước. Công thc trên  
cho thy ta có thể ước lượng xác sut liên kết ca mt chi bng cách nhân các xác  
suất điều kin vi nhau. Tuy nhiên, sdng quy tc dây chuyn vẫn chưa giải quyết  
được vấn đề mà chúng ta đã đề cp trên: Ta không thể ước lưng xác sut bng cách  
đếm sln xut hin ca chui t, bi ngôn ngrt phong phú, tng ngcnh riêng  
biệt đu có thể chưa bao giờ xut hiện trước đó.  
Có thhiu vic sdng mô hình n-gram là thay vì tính xác sut ca từ cho trước  
da trên toàn bthông tin lch sh, chúng ta xp xỉ thông tin đó chỉ bng mt vài từ  
cui, gn nht.  
10  
Ví dvi mô hình bigram, xp xxác sut ca mt từ cho trước vi toàn btừ  
trước đó bng xác suất điu kin ca từ đứng ngay trước nó  
Hay nói cách khác, thay vì tính xác sut:  
P(the|Walden Pond’s water is so transparent that)  
Chúng ta xp xbi xác sut:  
.
P(the|that)  
Vic này githiết rng xác sut ca mt tchphthuc vào từ trước đó, được  
gi là mt githuyết Markov (Markov assumption). Các mô hình Markov là mt lp  
các mô hình xác sut githiết rng chúng ta có thdự đoán được xác sut ca một đơn  
vị (unit) nào đó trong tương lai mà không cn phi da vào quá nhiu thông tin trong  
quá kh. Chúng ta có thể suy ra được bigram (ly thông tin ca mt từ trước đó),  
trigram (ly thông tin ca hai từ trước đó) cho tới N-gram (ly thông tin ca N – 1 từ  
đứng trước).  
Suy ra công thc tng quát xp xN-gram cho xác suất điều kin ca ttiếp theo  
trong mt chui là:  
Tgithiết bigram cho xác sut ca mt từ đc lp, chúng ta có thtính xác sut  
ca mt chuỗi đầy đủ bng cách áp dng công thc trên vi N = 2 vi công thc ca  
quy tc dây chuyn:  
Vy làm thế nào để ước lượng được các giá trxác sut bigram hay n-gram này?  
Một cách đơn giản và dnhn thy nhất để ước lượng xác sut đó là ước lượng hp lý  
cực đại (Maximum Likelihood Estimation hay MLE). Chúng ta dùng MLE cho các  
tham sca mt mô hình n-gram bng cách đếm trong corpus, và chun hóa chúng  
sao cho giá trca nó nm gia 0 và 1.  
Ví dụ, để tính mt giá trxác sut bigram ca mt ty vi từ cho trước x đứng  
trước nó, chúng ta stính toán giá trị đếm bigram C(xy) và chun hóa nó vi tng số  
tt ccác bigram khác cùng có từ đứng trước là x:  
11  
Chúng ta có thể đơn giản hóa công thc trên, khi tng sln xut hin ca tt cả  
các bigram bắt đu bi twn-1 cho trước phi bng vi giá trunigram cho twn-1 đó:  
Với trường hp tng quát sdng MLE cho N-gram, ta có công thc:  
2.4. Làm mn (smoothing)  
Có mt vấn đề gp phi trong quá trình tính toán ước lưng hp lý cực đại, đó là  
vấn đề dliu thưa (sparse data) xảy ra do ước lượng hp lý cực đại da trên mt tp  
dliu hun luyn riêng bit. Vi mt n-gram bt kỳ, đôi khi chúng ta có thể có được  
xp xtt ca xác suất. Nhưng do bất kcorpus nào cũng có giới hn nhất định, mt  
vài từ nào đó hoàn toàn chính xác nằm trong chui li không xut hin trong corpus.  
Lượng dliu bthiếu này cho thy N-gram cho bt kmột corpus cho trước nào cũng  
có mt số lượng lớn trường hp xác xut N-gram bng không cn có mt xác sut nào  
đó khác không cho nó. Hơn nữa, phương pháp ước lượng hp lý cực đại cũng sinh ra  
các xp xkhông tt khi các giá trị đếm khác không nhưng li quá nh, dẫn đến giá trị  
ước lưng xp xbng không.  
Chúng ta cn có một phương pháp giúp có được những ước lượng tốt hơn so với  
nhng tn sut thp hay tn sut bng không. Các giá trị đếm bng không thm chí còn  
gây ra mt vấn đề nghiêm trng hơn. Khi xử lý hiện tượng nhp nhng cho mt câu,  
mà câu đó lại cha mt giá trN-gram không hxut hin trong tp hun luyn, thì  
ước lượng hp lý cực đại xác sut ca N-gram này, cũng như của toàn bcâu, scó  
giá trbằng không! Điều này có nghĩa rng để đánh giá được mô hình ngôn ng, chúng  
ta cần thay đổi phương thức ước lượng hp lý cực đại sao cho tt ccác giá trN-gram  
đều phi khác không, kckhi chúng không xut hin trong tp hun luyn.  
Vì nhng lý do nêu trên, chúng ta cn sdng các phương pháp làm mịn để gii  
quyết, gim thiu các vấn đề gp phải do lượng dliu có hn. luận văn này, chúng  
12  
tôi chsdng phương pháp làm mịn Laplace (Laplace Smoothing, hay còn gi là  
Add One Smoothing – thêm mt).  
Mt cách làm mịn đơn giản là cng thêm 1 vào tt ccác giá trị đếm trước khi  
chúng ta chun hóa chúng thành giá trxác sut. Gii thuật này được gi là làm mn  
Laplace, hay lut Laplace(Lidstone, 1920; ?; Jeffreys, 1948).  
Chúng ta sáp dng làm mn Laplace bắt đầu vi các xác sut unigram. Ước  
lượng xp xcực đại ca xác sut unigram cho twi là giá trị đếm ci được chun hóa  
bi tng stvng N:  
Làm mn Laplace chỉ đơn giản cng mt vào mi giá trị đếm. Và khi trong bng  
tvng có V t(hay V là tng stcó trong tp dliu), mi từ đưc cng thêm mt,  
chúng ta cũng cần cng thêm vào mu smt giá trV:  
Tương tự như vậy, vi các giá trxác sut bigram ta có công thc làm mn:  
Trong đó V là sloi t(mi từ khác nhau được coi là mt loi) có trong tp dữ  
liu, hay V chính là số lượng các unigram. Và như vậy ta có thphát triển tính tương  
tcho các giá trN-gram khác như 3-gram, 4-gram,…  
Có mt gii pháp khá hiu qucho vic tính toán các giá trxác sut n-gram trên  
máy tính đó là sử dng dng logarit hóa ca các giá trxác sut. Vì sau khi làm mn  
như ở trên, tt các xác sut P đều có giá trnm trong khong 0 < P < 1. Do đó, việc  
logarit hóa giúp cho tránh được vấn đề vgii hn dliu do giá trxác sut quá nh,  
nm ngoài khả năng biểu thca kiu dliu (underflow), đặc bit là khi ta nhân nhiu  
giá trxác sut n-gram vi nhau. Vì khi giá trquá nh, máy tính scoi nó bng không,  
và đồng thi cũng làm tăng tốc độ tính toán do thay vì nhân – chia các giá trvi nhau  
thì vi logarit, chúng trthành các phép toán cng – tr, mt công vic dễ dàng hơn  
nhiu cho bxlý. Ví d:  
p1.p2.p3.p4 = exp(log p1 + log p2 + log p3 + log p4)  
13  
2.5. Áp dng cho tiếng Vit  
Do đặc điểm ca tiếng Anh, các từ được ngăn cách nhau bởi khong trng hoc  
các du câu. Tuy nhiên trong tiếng Vit, mt tcó thể được kết hp bi nhiu âm tiết  
(tiếng), các âm tiết ca từ được cách nhau bi khong trng. Tuy nhiên trong tiếng  
Vit, trt tca các tiếng trong mt tlà mt trong nhng yếu tquyết định nghĩa ca  
từ đó, do vậy ta hoàn toàn có tháp dng mô hình n-gram cho tiếng Vit với đơn vị là  
mt âm tiết. Và khi đó, các giá trị biu thcho mt twi trên có thể được hiểu như  
mt âm tiết trong tiếng Vit.  
14  
Chương 3: Phương pháp kiểm li chính ttiếng Vit  
da trên n-gram  
Như đã trình bày ở chương trước, chúng ta có thsdng mô hình N-gram cho  
tiếng Vit vào vic tính toán khả năng xuất hin ca mt âm tiết da vào các âm tiết  
đứng trước nó. Trong chương này, chúng tôi xin trình bày một phương pháp kiểm li  
chính tsdng thông tin ngcnh bng mô hình ngôn ngN-gram.  
3.1. Collocation  
Thut ngcollocation mà chúng tôi sdng ở đây dùng để chcác âm tiết đứng  
lin knhau trong phm vi “ca stừ” (hay chính xác hơn là “cửa sâm tiết”).  
Trong luận văn này, chúng tôi chọn các âm tiết nm các vtrí trong khong ±2 so vi  
âm tiết đang xét. Cụ th:  
Gi âm tiết đang xét là s, ta xét 2 âm tiết đứng trước là b2, b1 và xét 2 âm tiết  
đứng sau là a1, a2. Như vậy thtslà: b2 b1 s a1 a2  
Chúng tôi tính tn sut n-gram theo âm tiết, bao gm unigram, bigram và  
trigram. Tcác tn sut này ta sẽ tính được xác sut ca mt âm tiết da vào các âm  
tiết lân cn.  
Ngoài việc xét đến các âm tiết tiếng Vit, chúng tôi cũng phân loại mt sthành  
phần đc biệt khác trong câu như dấu câu, chs, ngày tháng, chviết hoa. Cth:  
- numbergroup: mt tp các chsố như 10, 12.5, hay 1,000,000 …  
- dategroup: cm các ch, svà các ký hiu biu thngày. VD: 10/6/2010…  
- timegroup: cm các ch, svà các ký hiu biu ththi gian. VD: 11h20  
- capitalword: dãy các âm tiết được viết hoa chữ cái đầu đng lin nhau (dãy này  
có thchcha mt âm tiết). VD: “Nguyễn văn A” sẽ được chuyn thành  
“capitalword văn capitalword”, và “trường Công Nghsẽ được chuyn thành  
“trưng capitalword”.  
- webaddressgroup: các đa chweb có dạng như http://abc.def.ghi  
Vic phân loi trên chúng tôi sdng các pattern tương ứng và biu thc chính  
quy (Regular Expression) để xlý xâu ký t.  
15  
3.2. Hun luyn  
Vic hun luyện được thc hiện trên văn bản tiếng Việt đã được phân tích và  
chun hóa thành các loại như trên.  
Dliệu văn bản thô được ly tinternet, cthlà từ năm ngun: báo Dân trí  
(dantri.com.vn), báo VietNamNet (vietnamnet.vn), báo VnExpress (vnexpress.net), báo  
Lao Động (laodong.com.vn), website về văn học Vit Nam và thế gii  
vanhoc.xitrum.net.  
Dliệu trên được ly từ internet dưới dạng HTML, sau đó được xlý, loi bỏ  
các mã HTML và các ni dung không cn thiết (các menu, qung cáo…), tách câu và  
lưu dưới dng tệp văn bản Unicode. Việc này được thc hin bởi Cao Văn Việt, lun  
văn “Xây dng mô hình ngôn ngcho tiếng Vit”.  
Công đoạn đánh dấu văn bản, phân tích tt(tokenize), chun hóa du câu (hoà  
-> hòa…) được thc hin ngay trong quá trình hun luyện. Điều này thun tin cho  
việc đưa dữ liu hun luyn thêm sau này, và có thsdụng để hc theo hình thc  
“người dùng đóng góp”, do chương trình hoạt động trên môi trường web (tương tự như  
tính năng đóng góp bản dch tốt hơn ca Google Translate).  
Như đã trình bày trên, dliệu được tách thành tng câu, mi câu slại được  
phân loi các thành phần đặc bit (số đếm, ngày tháng…) và từ đó phân tích từ t,  
phc vcho vic thng kê tn sut n-gram.  
Dliu thng kê n-gram được chúng tôi lưu trên hệ qun trị cơ sở dliu  
(CSDL) MySQL. Các thng kê unigram, bigram, trigram được lưu trữ trong 3 bng  
(table) riêng bit. Mi bảng đều cha thông tin các âm tiết, thtca chúng và sln  
xut hin ca thợp đó trong corpus. Ngoài ra, để thun tin cho vic truy vn và tính  
toán, chúng tôi có 2 bng dliu khác là bng danh sách các âm tiết trong tiếng Vit  
(6699 bn ghi), bng còn lại lưu trữ thông tin vsố lượng bn ghi và tng các giá trị  
tn sut ca mi bng trong 3 bng hun luyn ktrên. Bảng thông tin này được sử  
dng trong vic tính các xác sut n-gram và làm mn.  
Chương trình sdng bdliu hun luyn là tệp văn bản đầu vào có kích thước  
300MB, sau khi chy phn hun luyn cho unigram, bigram và trigram chúng tôi thu  
được 3 bng với thông tin như sau:  
16  
Bng thông in các bng dliu hun luyn:  
Kích thước tp dữ  
liu MySQL sinh ra  
Bng  
Sbn ghi  
Tng giá trị đếm  
Ct_unigram  
Ct_bigrams  
Ct_trigrams  
7597  
52,030,196  
49,354,488  
52,030,066  
316KB  
1,788,725  
12,409,262  
96,635KB  
736,667KB  
Chú ý: du phy (,) ở trên dùng để phân cách phn nghìn, triu.  
Do mt số đặc điểm ca hCSDL MySQL và ngôn nglp trình web PHP,  
chúng tôi có thc hin mt skthut nhằm tăng tốc độ hun luyn, tính toán. Nhng  
kthuật đó chúng tôi strình bày trong chương sau.  
3.3. Thut toán kim li  
Phn này chúng tôi strình bày hai thut toán kim li chính tcho mt câu. Hai  
thut toàn này về cơ bản là ging nhau, chkhác nhau ở bước soát li và quyết định  
âm tiết nào là “đúng”. Thut toán ca chúng tôi bao gồm hai bước:  
- Sinh tp nhm ln âm tiết.  
- Sdng n-gram la chn các âm tiết tt nht trong tp nhm ln âm tiết.  
Ở bước thứ hai, chúng tôi đưa ra hai thuật toán, tm gi là thut toán thnht và  
thut toán thhai. Thut toán thnht coi tt ccác âm tiết trong câu là sai; thut toán  
thhai githiết chcó mt âm tiết sai và các âm tiết khác đều đúng. Chi tiết chúng tôi  
xin trình bày dưới đây.  
3.3.1. Sinh tp nhm ln âm tiết  
Công đoạn sinh ra tp nhm ln âm tiết được thc hin riêng bit cho tng âm  
tiết, sau khi đã được phân tách tt.  
Vi mi âm tiết, chúng tôi dùng hàm phân tích cu to âm tiết tiếng Vit, tách âm  
tiết đó thành 4 phần: phụ âm đu, nguyên âm, phâm cui, du thanh. Chúng tôi phân  
tích da vào bng các nguyên âm, phâm và du thanh ca mt âm tiết. Với điều kin  
rng mt âm tiết phi có nguyên âm, chúng tôi xác định vtrí nguyên âm trong âm tiết  
trước, tphần nguyên âm được trích xuất, chúng tôi xác định được du thanh ca âm  
tiết. Công đoạn trên da vào kết quca hàm chuyển đổi tdng có du sang dng  
đánh máy TELEX.  
17  
Tiếp đó, khi đã xác định được nguyên âm, ta có thdễ dàng xác định được phn  
phụ âm đầu và phâm cui ca âm tiết đó. Phụ âm đầu và phâm cui ca nguyên âm  
đều có thlà rng (âm tiết chcó nguyên âm). Việc xác định này có thtrích xuất đưc  
các thành phn ca âm tiết ngay ckhi âm tiết đó bị đánh máy sai do chúng tôi xác  
định các “khu vc” ca âm tiết da vào khong ký tlin nhau ln nht nm trong các  
bng nguyên âm và phâm.  
d:  
- âm tiết: đào  
Dng telex: ddaof  
Xâu telex còn li  
Vtrí bắt đu ca nguyên âm: 2  
=> Phụ âm đu: dd -> đ  
=> Phâm cui: (rng)  
=> Nguyên âm: aof -> ao  
=> Du thanh: f (du huyn)  
aof  
aof  
f
- âm tiết: đườgn (âm tiết này bị đánh máy sai)  
Dng telex: dduwowfgn  
Vtrí bắt đu ca nguyên âm: 2  
=> Phụ âm đu: dd -> đ  
uwowfgn  
uwowf  
f
=> Phâm cui: gn  
=> Nguyên âm: uwowf -> ươ  
=> Du thanh: f  
Tkết quả ở trên, chúng tôi to tp nhm ln âm tiết da trên lỗi đánh máy cho  
tng phn ca âm tiết. Do chỉ xét đến các trưng hp lỗi sai do đánh máy nhầm, và li  
sai do phát âm nên chúng tôi coi mi âm tiết chsai duy nht mt trong 4 thành phn  
kể trên (không xét các trường hp cý đánh sai chính t).  
Vi mi âm tiết, sau khi được chia ra 4 thành phần như trên, chúng tôi thực hin  
vic to tp nhm ln cho tng thành phần, sau đó kết hp vi các phn còn li. Vi  
18  
mi thành phn mới được to ra, chúng tôi so sánh vi thành phần ban đầu bng cách  
tính toán khong cách son tho nhnht (Minimum Edit Distance - MED), các thành  
phần được to ra có MED lớn hơn ngưỡng chọn trước sbloi b. Ở đây chúng tôi  
chọn ngưỡng MED là 1 cho phụ âm và 2 cho nguyên âm, không xét MED đối vi du  
thanh. Chương trình sdng gii thut Damerau–Levenshtein distance da trên thut  
toán quy hoạch động tính khong cách son tho nhnhất được công bbi Wagner  
và Fischer. Gii thuật này có tính đến giá (cost) ca phép hoán v(gii thuật ban đầu  
coi phép hoán vlà kết hp ca phép chèn và xoá). Dưới đây là giả mã ca thut toán  
MED:  
int DamerauLevenshteinDistance(char str1[1..lenStr1], char str2[1..lenStr2])  
// d is a table with lenStr1+1 rows and lenStr2+1 columns  
declare int d[0..lenStr1, 0..lenStr2]  
// i and j are used to iterate over str1 and str2  
declare int i, j, cost  
//for loop is inclusive, need table 1 row/column larger than string length.  
for i from 0 to lenStr1  
d[i, 0] := i  
for j from 1 to lenStr2  
d[0, j] := j  
//Pseudo-code assumes string indices start at 1, not 0.  
//If implemented, make sure to start comparing at 1st letter of strings.  
for i from 1 to lenStr1  
for j from 1 to lenStr2  
d[i, j] := minimum(  
d[i-1, j ] + del-cost(str1[i]),  
d[i , j-1] + ins-cost(str2[j]),  
// deletion  
// insertion  
d[i-1, j-1] + subs-cost(str1[i],str2[j]) // substitution  
)
if(i > 1 and j > 1 and str1[i] = str2[j-1] and str1[i-1] = str2[j]) then  
d[i, j] := minimum(  
d[i, j],  
d[i-2, j-2] + cost // transposition  
)
return d[lenStr1, lenStr2]  
19  
Sau khi kết hp, âm tiết mới được to ra, chúng tôi kim tra các âm tiết đó trong  
từ đim âm tiết tiếng Vit để loi bnhng âm tiết không có trong tiếng Vit. Cn làm  
vic này do thành phn bị đánh máy sai có thể không phi thành phần mà ta đang xét.  
d, vi âm tiết sai trưgn, như đã phân tích trên, ta xét tng thành phn:  
- Phụ âm đầu: tr -> t, r, th  
Ta có các âm tiết mi: tườgn, rườgn, thườgn. Ddàng nhn thy rng thành phn  
bị đánh máy sai là thành phần phâm cui, đo đó tất cnhng âm tiết mới được to ra  
khi xét các thành phần khác đều không xut hin trong từ đin âm tiết. Do vy trong ví  
dnày ta sbqua vic xét các thành phn khác mà chỉ xét đến thành phn phâm  
cui.  
Phâm cui: gn -> n, ng.  
Để ý rng các phụ âm như g, nh không được xét bi: vi nh, MED so vi gn là 2  
(2 thao tác 1 xóa và 1 chèn), còn vi phâm g, chúng tôi có xét đến thuc tính vkhả  
năng đứng sau nguyên âm ca phụ âm đó, và trong tiếng Vit, phâm g không bao giờ  
đóng vai trò ca phâm cui. Các phâm có thể đứng cui âm tiết là: ng, ch, nh, c,  
t, m, n, p.  
Có 2 trường hợp đặc bit ca phụ âm đầu đó là 2 phụ âm qu gi. Khi xét thành  
phn nguyên âm ta cn chú ý ti 2 phâm này, và chúng tôi cũng xét thuộc tính ca  
nguyên âm vkhả năng đứng sau 2 phâm trên. Bng phlc 1 cho thy khả năng kết  
hp vi 2 phâm trên ca các nguyên âm.  
Có một điểm chú ý liên quan ti phâm gi đó là trong các âm tiết như , gìn thì  
nguyên âm là i và phụ âm đầu là g.  
Sau khi to ra tp nhm ln âm tiết do đánh máy, chúng tôi tạo tp nhm ln âm  
tiết do lỗi phát âm. Để to ra tập này, như đã nêu ở Chương 1, chúng tôi sdng bng  
li phát âm. Các lỗi phát âm được chúng tôi chia ra thành 4 loi: phụ âm đầu, nguyên  
âm, du thanh, và “phần đuôi”. Phần đuôi ở đây được hiu là skết hp ca nguyên  
âm và phâm cui. Vic to tp nhm ln do phát âm cũng tương tự như tạo tp nhm  
lẫn do đánh máy, đó là xét theo từng loi, mi loi stra trong bảng tương ứng. Tuy  
nhiên vi 4 loại trên, chúng tôi không xét đến du thanh bi ở trên chúng tôi đã xét  
toàn bcác du thanh có th.  
Kết hp hai tp trên ta đưc tp nhm ln cho âm tiết đang xét.  
20  
3.3.2. Sdng n-gram để đưa ra âm tiết gi ý  
Ở công đoạn này, trong quá trình thc hin, chúng tôi có thnghiệm hai phương  
pháp khác nhau như đã nói trên. Tuy nhiên, do hiu quvà tốc độ thc thi ca thut  
toán thnht và thut toán thhai chênh nhau khá nhiều, do đó trong chương trình  
thc tế và các kết qukim th, chúng tôi chsdng gii thut thhai.  
Vi gii thut thnht, ta gistt ccác âm tiết đều sai. Khi đó, ta cần xác  
định được ít nht mt âm tiết được cho là đúng làm cơ sở. Ở đây, chúng tôi dựa vào  
tp nhm ln âm tiết ca 3 âm tiết đầu tiên, tính xác sut tt nht trong tt ccác tổ  
hp 3 âm tiết có tht3 tp nhm ln âm tiết ca chúng. Công thc tính xác sut:  
P(s1s2s3) = P(s1).P(s2|s1).P(s3|s1s2)  
T3 âm tiết đã được la chọn và được cho là đúng này, ta lần lượt tính xác sut  
cho tng âm tiết tiếp theo: s4, s5,…  
P(s2s3s4) = P(s1).P(s3|s2).P(s4|s2s3)  
Gii thuật này có ưu điểm là cài đặt đơn giản và hoàn toàn áp dụng tư tưởng ca  
mô hình n-gram. Tuy nhiên, gii thuật này có nhược điểm là tốc độ thc hin chm do  
phi tính xác sut ca tt ccác thp ca âm tiết đầu. Gismi âm tiết có 15  
candidates khác nhau, ta phi tính xác sut 153 = 3375 ln, chriêng cho 3 âm tiết đầu.  
Hơn nữa, gii thut này sdng ít thông tin ngcảnh nên độ chính xác không cao. Do  
vậy chúng tôi đã sdng mt gii thuật khác, được đánh giá tốt hơn, chính là giải  
thut thhai chúng tôi trình bày sau đây.  
Vi gii thut này, ta gischcó mt âm tiết sai, tt ccác âm tiết còn li là  
đúng. Lúc này, ta cần xác định âm tiết nào có thể dùng để sa li tt nhất. Để làm  
được điều này, vi tng âm tiết, ta lần lượt gisâm tiết si đó là sai, sau đó tìm ra âm  
tiết sa sai tt nht s’i trong tp nhm ln cho âm tiết đó. Âm tiết si có xác sut là pi và  
s’i có xác sut p’i. Ta có tlmức độ sa lỗi đối vi âm tiết si là  
.
Lần lượt xét toàn bcác âm tiết ca câu ta stìm được âm tiết có Fi ln nht; âm tiết  
đó chính là âm tiết cn sa. Sau khi thay thế âm tiết cn sa bi candidate tt nht ca  
nó, ta lp li quá trình trên cho ti khi không tìm được âm tiết nào cn sa.  
Để tính được các xác sut pi p’i, chúng tôi sdng hàm tính xác sut:  
21  
P(s1s2s3) = P(s1).P(s2|s1).P(s3|s1s2)  
Khác vi gii thut thnht, chúng tôi áp dng hàm tính xác sut trên cho các bộ  
3 âm tiết: si-2si-1si , si-1sisi+1 sisi+1si+2 sau đó tính giá trị trung bình ca chúng. Cth:  
Da vào công thc trên, có ththy ta cn tính toán các xác sut da trên  
trigrams. Điều này dẫn đến mt vấn đề vi các âm tiết nm vtrí cn biên ca câu:  
vi âm tiết đầu tiên, ta không tính được các xác sut  
, cũng  
như vy vi các âm tiết cui. Có một cách khá đơn giản là khi ta không tính được mt  
xác suất nào đó trong s3 xác sut trên, ta loi bnó. Ví dvi âm tiết đầu tiên, ta  
tính xác sut:  
Và vi âm tiết th2, ta sdng xác sut:  
Có mt vấn đề khác na khi kim tra các âm tiết là trường hp có quá nhiu li  
trong một câu. Khi đó, chương trình sphi xét các âm tiết trong câu rt nhiu lần để  
tìm ra được thp tt nht, và vic này tn khá nhiều năng lực ca bxlý khi tính  
toán các xác suất trigram. Để tránh vấn đề trên, trước mỗi lượt xét câu, chúng tôi tính  
trung bình xác sut ca tt ccác âm tiết trong câu (các xác suất này được tính toán  
trong lượt xét câu trước đó nên không tốn thêm thi gian tính toán). Vi giá trtrung  
bình xác sut nhỏ hơn ngưỡng chọn trước, chúng tôi stính toán sdng các xác sut  
bigram và unigram tương ứng vi tng ngưỡng (ở đây chúng tôi tạm chn 10-6 cho  
bigram và cho 10-9 unigram). Và khi đó, với mi vòng tính toán cho câu, chúng tôi li  
xác đnh “mc” cho các tính toán xác sut tiếp theo ca vòng đó.  
3.4. Kết quvà tho lun  
3.4.1. Kết quả  
Để tiến hành kim th, chúng tôi sdng dliệu đầu vào là mt tệp văn bản  
cha khong 1000 câu tiếng Vit vi ni dung trong nhiu lĩnh vực khác nhau (thi s,  
văn hóa, kinh tế, văn học…), và dliệu văn bản này là đúng chính tả.  
22  
Chương trình kim thnp dliệu các câu đúng vào, sau đó tách câu và tự động  
sinh li ngu nhiên theo từng câu. Các câu sau khi được sinh li tự động tiếp tục được  
ly làm dliệu đầu vào cho chức năng kiểm li chính tả mà chúng tôi đã cài đặt theo  
gii thut trên, kết quả là 3 văn bản: văn bản gốc (đúng chính tả), văn bản sinh li và  
văn bản sau khi kim lỗi. Các văn bản sinh li và sau khi kim lỗi được chúng tôi đánh  
dấu để tin cho vic theo dõi và đánh giá.  
Sau khi thc hin mt số lưng test nhất định, chúng tôi xin đưa ra bảng thng kê  
ca mt skết quả đánh giá như dưới đây:  
Sli ti  
Sli sa  
Sli sa  
STT Tng scâu Sli sinh ra  
đa trong  
thành công  
không đúng  
mt câu  
1
2
3
4
5
6
7
8
998  
998  
998  
998  
998  
998  
998  
998  
76  
64 (84.21%)  
65 (82.28%)  
355 (85.54%)  
377 (89.55%)  
363 (89.19%)  
660 (82.29%)  
414 (84.32%)  
238 (79.07%)  
128 (168.42%)  
86 (108.86%)  
607 (146.26%)  
546 (129.69%)  
556 (136.61%)  
648 (80.80%)  
269 (54.79%)  
207 (68.77%)  
1
1
1
1
1
2
3
4
79  
415  
421  
407  
802  
491  
301  
Ở đây, sli sửa không đúng bao gồm li sa không thành công và li do làm sai  
đi những âm tiết đúng. Vấn đề này là vấn đề tt yếu gp phi khi sdụng phương pháp  
kim li có tính “mù”, do chsdng thông tin ngcnh bng thng kê N-gram mà  
không sdng thêm loi tri thc ngôn ngnào khác.  
Qua bng kết quả ở trên, ta có ththy kết qusa li thành công là chưa cao, và  
tlsa lỗi không đúng lại rt ln. Điều này thường xy ra nhng câu dài, có sli  
chính tít như:  
“Cthể, Trung tâm đề nghcác doanh nghip gửi đến Trung tâm danh sách chi  
tiết xe taxi đang hoạt động ca tng doonh nghiệp trước ngày 25/5 để tiến hành cht  
s”  
23  
Được sa thành:  
“Cthể, Trung tâm đề nghcác doanh nghip gửi đến Trung tm danh sách ghi  
tiết xem taxi đang hoạt động ca tng doanh nghiệp trước ngày 25/5 để tiến hành cht  
s”  
Tuy nhiên, li có những trường hp câu rt ngn, li sai trong câu rt nhiu  
nhưng chương trình vn có thsa lỗi đúng 100% như:  
Ăn iu em nhìu lém! Em có iu ăn hông?” được sa thành “Anh yêu em nhiu  
lm! Em có yêu anh không?”  
Hay: “chún tôi cóa thể làm được đìu đóa” được sa thành “chúng tôi có thlàm  
được điều đó”  
Để sửa được nhng lỗi như 2 ví dụ trên chúng tôi phi kết hp sdng unigram  
mà không chsdng trigram do thông tin ngcnh quá nghèo nàn.  
3.4.2. Tho lun  
Tnhng kết quả ở trên, ta có ththy rng chsdng thông tin ngcnh bng  
thng kê N-gram đkim li chính tả là chưa hiệu qu. Tuy nhiên, các kết quả đó cũng  
cho thy khả năng nâng cao kết qusa li là rt ln. Vì khi chsdng N-gram, sự  
phthuc ca kết quvào dliu hun luyn là rt lớn. Hơn nữa, ta có thể để ý rng,  
khi sli trong một câu tăng lên thì tlli mi sinh ra li gim xung khá nhiu,  
trong khi tlsa lỗi đúng không thay đổi là my. Điều này cho thy các li mi sinh  
ra trong quá trình kiểm tra thường xy ra vi các thp âm tiết nhất định, tlnày  
thay đổi khi thp âm tiết đó bị thay đổi. Chng t, các lỗi đó là do sự phthuc ca  
công tác kim li vào dliu hun luyn gây ra.  
Do vy, ta có thnghĩ tới mt số hướng gii quyết vn đề trên đó là sdng  
thêm các tri thc ngôn ngkhác ngoài âm tiết. Đồng thi có thsdng kết hp mô  
hình N-gram với các phương khác để gim bớt độ “mù” của chương trình nhm nâng  
cao kết qusa li và tốc độ xlý.  
24  
Chương 4: ng dụng trên môi trường Web  
Chương này chúng tôi trình bày mt svấn đề vlp trình trên nn web cho lun  
văn này, một số ưu điểm, nhược điểm cũng như một vài phương pháp khắc phc các  
nhược điểm đó.  
4.1. Môi trường lp trình web  
Như ta đã biết, ngày này, Internet không còn xa lvới người dùng phthông, và  
song song vi sphát trin ca Internet là các ng dng trên nn web (web  
applications) càng ngày càng phát trin cvsố lượng ln chất lượng. Các ng dng  
này có rt nhiu loi khác nhau, vnhiu lĩnh vực khác nhau và cũng được viết trên  
nhiu hngôn nglp trình khác nhau. Trong luận văn này, chúng tôi sử dng các  
ngôn nglp trình web vi nội dung động là: HTML, Javascript, PHP, MySQL và có  
sdng thêm C++ cho mt số công đoạn tối ưu hóa. Sau đây chúng ta sẽ ng đi vào  
nhng vấn đề chi tiết hơn.  
4.2. Ưu điểm và nhược điểm  
4.2.1. Ưu điểm  
Ưu điểm đầu tiên ca các ng dng chạy trên web đó là có thể sdng bt kỳ  
đâu có Internet và không phụ thuc vào platform. Mt ng dng web có thsdng  
trên gần như tất ccác hmáy bi nó chcn có mt trình duyt (browser) và có kết  
ni internet.  
Một ưu điểm khác na ca các ng dng web khiến nó không phthuc vào hệ  
máy bi các xlý phc tp ca ng dụng được thc hin ti server (server-side  
applications), do đó máy ca người dùng đầu cui (end-user) không cn có tài nguyên  
phn cng quá ln, thm chí là rt nhỏ như các thiết bị di động: netbook,  
smartphone…  
Bên cạnh đó, các chức năng độc lp của chương trình có thể được sdng trong  
các chương trình khác như một module. Ví dụ như chức năng kiểm li chính ttiếng  
Vit này có thể đưc sdng trong vic kim tra li chính tkhi son email.  
Một ưu điểm khác khi sdng hệ CSDL đó là có thể truy xut dliu tng phn  
mà không phi np toàn bdliu vào trong bnhchính (RAM).  
25  

Tải về để xem bản đầy đủ

pdf 39 trang yennguyen 13/04/2025 300
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Kiểm lỗi chính tả tiếng Việt", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_kiem_loi_chinh_ta_tieng_viet.pdf