u
3.2.1. Tách cm ting
Do u vào là m t t p tin v n có th có nh d ng, công vi c u tiên là lo i b các i t ng “l ” nh hình nh, tham chi u, m c l c,… ch gi l i ph n text x lý.
Vi c tách thành c m ti ng có hai m c ích. M c ích th nh t là t o ti n cho b c tách ti n. M c ích th hai, quan tr ng h n, là tính các xác su t n- gram. Do các ti ng b ng n cách b i các d u câu xem nh không có m i liên h
i nhau, vi c tính xác su t n-gram trên c m ti ng v a làm gi m không gian x lý, a không làm gi m tính liên k t và s t ng quan gi a các ti ng v i nhau trong n b n.
Tuy nhiên, vi c tách c m có nh c m là s không x lý c các l i v u câu. ây không ph i là m c tiêu chính c a tài.
3.2.2. Tách ti ng
Do ph n c m ti ng ã tách c trên là m t chu i liên t c các ký t nên ch ng trình c n ph i tách nó thành t ng ti ng riêng bi t ti n x lý.
Quá trình tách v n b n u vào thành t ng ti ng ph i qua các giai n sau:
• Tách v n b n thành t ng n.
• Tách n thành t ng “c m ti ng”. C m ti ng là m t chu i ký t ch cái kh ng tr ng, d u g ch n i, không có các d u câu khác nh d u ch m, d y ph y, d u ngo c,… Vi c nh n ra ti ng Anh, l c ra các c m toàn ti ng Anh, t vi t t t, tên riêng, phiên âm,… có th c gi i quy t b ng các heuristic (chi ti t xin xem trong ph n k ti p).
• Các c m ti ng Vi t c tách thành t ng chu i ti ng riêng bi t. M i chu i ti ng ch g m các ký t ch cái (có d u ho c không d u).
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
chu n hoá cách b d u và các x lý khác nh so sánh, tìm ki m, thay th , c ng nh các v n v b ng mã ti ng Vi t,… c thu n l i và nhanh chóng, các chu i ti ng nên c chuy n thành m t d ng mã th ng nh t.
3.2.3. L c “nhi u”
Sau khi ã có các c m ti ng, b c ti p theo là l c ra nh ng nh ng t ti ng Anh, phiên âm, vi t t t, các ký t l , các ch s ,…
3.2.3.1. Nh n di n ti ng Anh
Trong các v n b n ti ng Vi t, vi c xu t hi n các t ti ng Anh là u th ng x y ra, nh t là trong các v n b n khoa h c. Vi c nh n ra âu là t ti ng Anh không xem chúng nh l i chính t là khá quan tr ng.
nh n ra ti ng Anh l n trong câu ti ng Vi t, h th ng s ph i kh nh p nh ng khi g p nh ng t mà c hai th ti ng u có. VD: “the”, “to”, “hi”, … Vi c này tho t nhìn có v khá ph c t p. Tuy nhiên, trong th c t , ti ng Anh l n vào ti ng Vi t th ng có hai lo i: tên riêng và thu t ng . Hai lo i này hi m khi gây nh p nh ng nên v n tr nên n gi n h n. Ch c n dùng t n ti ng Anh và Heuristic là có th gi i quy t c.
i v i nh ng c m toàn ti ng Anh, vi c gi i quy t c ng t ng t . Khi ó m này s c chuy n qua cho m t h ki m l i chính t ti ng Anh x lý.
3.2.3.2. Nh n di n t vi t t t
vi t t t có th c nh n ra b ng m t danh sách các t vi t t t và Heuristic. Thông th ng, các t vi t t t u là ch hoa, và ph âm chi m t l l n, ho c i kèm d u ch m. VD: CHXHCN, TS. , TW, NA,…
3.2.3.3. Nh n di n phiên âm
Cho n nay, v n ch a có chu n th ng nh t v cách phiên âm ti ng n c ngoài, nên vi c nh n ra âu là ti ng phiên âm âu là ti ng sai chính t s g p tr ng i. Trong ph m vi tài này, chúng tôi ch dùng Heuristic x lý các phiên âm
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
ch n i, và không có kho ng tr ng gi a chúng. VD: Trê-b -sép, Lê-nin, công- c,… V i nh ng t phiên âm thông d ng nh “axit”, “baz ”, “vect ”,… thì có th dùng t n nh n ra chúng.
3.3. Ki m l i non-word
3.3.1. Phát hi n l i
Do b c ti n x lý ã l c b các chu i không là ti ng Vi t, nên vi c phát hi n l i non-word khá n gi n, ch c n m t t n ti ng. N u m t chu i ti ng không có trong t n, ho c không chu n hoá thành d ng mã c, ta xem nó là ti ng sai chính t và thông báo cho ng i dùng.
Công vi c còn l i là phát sinh các ti ng thay th ng i dùng có th thay th ngay mà không ph i nh p l i.
3.3.2. S a l i
phát sinh các ti ng thay th , h th ng s d a vào các nguyên nhân gây i tái t o l i ti ng úng. Nh ã các ph n trên, có hai nguyên nhân chính, ó là l i phát âm và l i nh p li u.
3.3.2.1. a l i phát âm
i phát âm tùy thu c vào t ng a ph ng trong c n c. Tuy nhiên, các i phát âm có quy lu t nh t nh, và c chia thành l i sai ph âm u, l i sai n, và l i sai d u. Do ó, chúng tôi l p m t danh sách t t c các thành ph n có th nh m l n v i nhau, t ó phát sinh ra các ti ng ng viên.
t ph n c a danh sách này có d ng nh sau:
d v ac at ? ~
ng ngh an ang ~ ?
s x in inh ~ .
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
Thu t toán c th nh sau:
c 1: Tách ti ng thành ba thành ph n: ph âm u, v n, và d u. c 2: V i m i thành ph n, tìm các thành ph n cùng lo i và d b phát âm nh m l n v i nó. c 3: T h p các thành ph n t o thành các ti ng thay th . Quá trình t p có th ph i tho ràng bu c v m c phát sinh, ví d nh : ti ng g c và ti ng phát sinh ch khác t i a m t ho c hai thành ph n.
c 4: Lo i b các ti ng thay th không có trong t n.
Thu t toán 1: Phát sinh ti ng ng viên d a vào l i phát âm
Ví d : Phát sinh cho ti ng g c “sãng”
• Tách thành t ng ph n: sãngà {s, ang, ~}
• Phát sinh ph n t ng t : {s}à {x}; {ang}à {an}; {~}à{?}
• h p: {s ng, sãn, s n, xãng, xãn, x ng, x n}
• Lo i b phát sinh không h p l , còn l i: {s ng, s n}
3.3.2.2. a l i nh p li u
Các l i nh p li u c x lý trong h th ng bao g m:
• Thi u m t ký t : trag (trang)
• m t ký t : tranng (trang)
• Thi u m t d u thanh: tât (t t, t t)
• Nh m m t ký t b i m t ký t khác: x t (c t)
• Nh m d u thanh b i d u thanh khác: t t (t t, t t)
• o v trí hai ký t li n k : rtang (trang)
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
a l i thi u m t ký t
i m t ký t có th c ph c h i b ng cách chèn l n l t các ký t vào các v trí khác nhau trong ti ng. Các ti ng h p l c t o ra t nh ng cách chèn trên s c gi l i. H th ng gi nh r ng m i ti ng gõ sai ch thi u t i a m t ký t .
a l i d m t ký t
i d m t ký t có th c ph c h i b ng cách th xoá l n l t các ký t i các v trí khác nhau trong ti ng. Các ti ng h p l c t o ra t nh ng cách xoá trên s c gi l i. H th ng gi nh r ng m i ti ng ch d t i a m t ký t .
a l i thi u d u thanh
i thi u d u thanh c s a b ng cách l n l t k t h p ti ng v i các d u thanh. Các ti ng h p l c t o ra t nh ng cách k t h p trên s c gi l i.
a l i d d u thanh
i d d u thanh c s a b ng cách th xoá b d u thanh trong ti ng. Ti ng h p l c t o thì s c gi l i.
a l i nh m ký t
i nh m ký t c t o ra khi ng i dùng gõ sai phím. L i này có th c ph c h i b ng cách duy t l n l t t ng ký t trong ti ng g c, thay th ký t c b ng ký t khác, và gi a l i các ti ng h p l c t o ra.
Tuy nhiên cách làm trên có h n ch là s l ng ch cái trong ti ng Vi t khá nhi u, vi c thay th s chi m nhi u th i gian, và t o ra quá nhi u ti ng ng viên không c n thi t.
Thông th ng phím gõ sai s n m g n v i phím úng. Trong các bàn phím thông d ng hi n nay, m i ti ng có 6 ti ng lân c n. Bên c nh ó, các ký t d ng có u m và không có d u m c ng c xem là lân c n v i nhau (VD: ‘o’ – ‘ , ‘ ’
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
– ‘â’). T ó, chúng tôi t o ra danh sách các phím và phím lân c n s a các l i ng sai phím này. Phím g c Phím lân c n Phím g c Phím lân c n a q w s z â n h j m b b h n v g o p l k i c d f v x p l o d e r f c x s q w s a e r d s w ê r t f d e f r t g v c d s w e d x z a g t y h b v f t y g f r h y u j n b g u i j h y i o k j u v f g b c j u i k m n h w e s a q k i o l m j x s d c z l o p k y u h g t m j k n z a s x ng 2: Phím g c và các phím lân c n a l i nh m d u thanh
i nh m d u thanh c s a b ng cách l n l t thay th các d u thanh khác vào ti ng và gi a l i ti ng phát sinh phù h p. Do l ng d u thanh ít nên không c n x lý gì thêm.
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
a l i o v trí hai ký t li n k
i o v trí c ph c h i b ng cách th hoán v l n l t hai ký t k nhau trong ti ng và gi a l i các ti ng phát sinh phù h p làm ngh thay th . H th ng gi nh r ng trong ti ng ch có t i a hai ký t b nh m v trí.
a l i thi u kho ng tr ng
ng t nh l i thi u ký t , l i thi u kho ng tr ng c x lý b ng cách th chèn kho ng tr ng vào t ng v trí trong ti ng. Tuy nhiên có m t m khác bi t, là vi c s a l i này s t o ra hai ti ng ng viên i cùng nhau. Do ó, cách chèn nào t o ra c hai ti ng u h p l s c gi a l i làm ng viên s a l i.
3.3.2.3. Các l i khác
i v i h nh n d ng ti ng nói ti ng Vi t, l i th ng g p là l i phát âm. Cách x lý c ng gi ng nh ã nói trên.
i v i h OCR, l i ch g m lo i nh m m t ký t b i m t ký t khác. Hai ký t nh m l n th ng có hình d ng khá gi ng nhau. V n này không khó gi i quy t, nh ng không c xem xét trong lu n v n này.
3.4. Ki m l i real-word
Không nh l i non-word, vi c phát hi n l i real-word r t khó kh n do không th dùng t n mà ph i xem xét n ng c nh c a câu v n. Các mô hình ki m l i chính t c m ng c nh c dùng x lý lo i l i này.
Nh ã c p trong Ch ng 1 T ng quan, sau khi tham kh o các mô hình ã c áp d ng thành công cho các ngôn ng n c ngoài, chúng tôi quy t nh ch n ph ng pháp tính xác su t n-gramti ng d a theo h th ng CInsunSpell làm mô hình chính x lý các l i real-word.
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
3.4.1. Phát hi n l i b ng bigram
3.4.1.1. Ý t ng chính
lý thuy t, trigram s t t h n bigram. M t câu h i c t ra là t i sao i dùng bigram mà không dùng trigram? Lý do chính chúng tôi ch n bigram là vì khi dùng trigram, v i l ng ng li u quá ít i, các xác su t PF và PB s r t th p nên không th dùng phát hi n l i m t cách chính xác. Qua th nghi m c a chúng tôi, bigram khi c k t h p v i m t vài c i ti n nh và các heuristic tách
v n cho ra k t qu kh quan.
Ý t ng chính ây là, phát hi n l i, h th ng s dùng m t “c a s ” bigram “ o” liên k t gi a các ti ng trong c m cùng. N u v trí nào có s liên k t quá l ng l o thì n i ó b xem nh có l i chính t . Cách làm này c ng phù
p v i cách tu duy c a con ng i. Khi c qua m t câu ki m l i chính t , con ng i s ch chú ý t i nh ng ch “khác th ng”, ti n hành “phát sinh t ” nh ng ch ó tìm t thay th h p lý h n.
i ci là m t ti ng, WIN_bi = {c1, C, c2} là m t c a s có kích th c 3. Trong ó, C là ti ng ang c xem xét.
PF_bi(c1, C) là xác su t i cùng nhau c a các ti ng trong bigram <c1, C>, i là “xác su t tr c” c a WIN_bi. T ng t nh v y, PB_bi(C, c2) là xác su t i cùng nhau c a các ti ng trong bigram <C, c2> và c g i là “xác su t sau” c a WIN_bi.
PF_bi(c1, C) c tính theo công th c sau:
) x , N(x C) , N(c C) , PF_bi(c 2 1 1 1 =
Trong ó, N(c1, C) là s l n xu t hi n c a bigram <c1, C> trong ng li u hu n luy n. N(x1, x2) là t ng s bigram trong ng li u hu n luy n.
Cách ti p c n d a trên ng li u cho ki m l i chính t ti ng Vi t
Thu t toán:
c 1: Kh i ta c a s WIN_bi = {c1, C, c3) t u v n b n.
c 2: PF_bi nh h n ng ng F_bi và PB_bi nh ng ng B_bi thì tìm ng viên thay th . N u tìm c thì xem C là ti ng sai chính t .
c 4: D ch chuy n c a s t i m t ti ng r i tr l i b c 2.
Thu t toán 2: Phát hi n l i b ng bigram
Thu t toán trên có m t m khác v i thu t toán g c trong CInsunSpell, ó là khi các xác su t PF và PB nh h n ng ng, h th ng không v i k t lu n ngay ó là n i b l i chính t . B i vì, trong u ki n th c t c a chúng tôi, ng li u không th l n bao trùm h t t t c các bigram th ng có. Nên s x y ra tr ng h p, là PF_bi và PB_bi th p nh ng ti ng C v n là úng chính t . Thêm vào ó, dù ng li u l n, v n có tr ng h p ti ng C n m gi a hai liên k t l ng l o nh ng l i không ph i ti ng sai chính t , b i vì ti ng sai th c s là ti ng li n sau nó, chính ti ng li n sau này là nguyên nhân làm gi m xác su t PB_bi c a ti ng
ang xét.
gi i quy t hai v n trên, chúng tôi dùng ph ng án tìm ng viên thay th cho ti ng C ang b nghi ng . N u tìm c ng viên th a u ki n v xác su t thì lúc ó C m i b xem là sai chính t .
3.4.1.2. t h p v i trigram
ây, l i này sinh m t v n , ó là bigram không m nh kh ng nh chính xác vùng b l i nên h th ng có th ph m nhi u l i tích c c. Do ó, chúng tôi quy t nh t n d ng trigram làm m t b l c tr c khi x lý b ng bigram.