B phông ch Vnk

Một phần của tài liệu Nghiên Cứu Và Xây Dựng Công Cụ Tách Từ Tự Động Trong Tiếng JRAI (Trang 52)

B phông ch Vnk đ c xây d ng d a trên các phông mư Unicode nh lƠ Times New Roman, Arial, Tahoma. Các phông Vnk dùng đ hi n th ti ng dân t c thi u s , trong đó có ti ng Jrai trên máy tính. Lu n v n s d ng các phông Vnk đ phát tri n ng d ng.

3.1.2.5. Môi tr ng phát tri n ng d ng

Visual Studio 2010 do hãng Microsoft cung c p.

Hình 3.1: Microsoft Visual Studio 2010

3.2. THI TăK ăVĨăXÂYăD NGăCH NGăTRỊNH

3.2.1. Côngăc ătáchăt ăt ăđ ngăti ngăJrai

Công c tách t t đ ng đ c đóng gói thƠnh t p tin th vi n liên k t đ ng jraimm.dll đi kèm v i t p d li u là t đi n các t Jrai, t đi n đ c l u tr d i d ng m c t trong t p tin d li u data.txt. V i m t câu ti ng Jrai đ u vào sau khi qua x lý c a công c thì đ u ra lƠ cơu đư đ c đánh d u tách t . Trong t p tin này bao g m các hàm h tr x lý chu i và các hàm x lý chính c a thu t toán tách t .

3.2.1.1. Hàm h tr x lý chu i

Hàm countch(string s, char ch) : Hàm này tr v k t qu b ng s l n xu t

3.2.1.2. Các hàm x lý chính trong công c tách t

Hàm hv(string input): Hàm này có ch c n ng tách m t chu i cơu đ u vào ti ng Jrai thành m t m ng các hình v theo th t .

Ví d :

Câu đ u vào hàm: “Sang k dlông hrup hang Jrai H drung”.

u ra: m ng hv [ “Sang”, “k dlông”, “hrup”, “hang”, “Jrai”, “H drung”] .

Thu t toán:

u vào: chu i câu Jrai S.

u ra: M ng các ph n t là các hình v hv trong S. M ng hv(S)

{ các bi n: ES, S, B, E, L1, h

B1: ES= các kí t đ c bi t cu i câu.

B2: S= S đư xóa các kỦ t đ c bi t cu i câu.

B3: S còn kí t tr ng sang B4, ng c l i nh y sang B12 {

B4: L1 = chu i con l y t v trí 0 đ n kí t tr ng đ u tiên trong S. B5: N u chu i con L1 có kí t đ c bi t đ u.

{

B=các ký t đ c bi t trong L1.

L1= chu i con l y t L1 không có ký t đ t bi t. }

B6: N u chu i con L1 có kí t đ c bi t cu i {

L1= chu i con l y t L1 không có ký t đ c bi t. }

B7: N u B khác r ng đ a B vào m ng h. B8: a L1 vào m ng h.

B9: N u E khác r ng đ a E vào m ng h.

B10: S = chu i con b t đ u t kho ng tr ng đ u tiên +1 đ n h t chu i. B11: Quay L i B3. } B12: a S vào m ng h. B13: N u ES khác r ng đ a vƠo m ng h. B14: Tr v k t qu hàm hv= h. }

Hàm ws(ArrayList db, ArrayList hv, int start, int end): Hàm này có ch c

n ngxác đnh t t c các t có th có t v trí hình v th start, t dài t i đa 6 hình v .

Ví d :

u vào: M ng hv [ “Sang”, “k dlông”, “hrup”, “hang”, “Jrai”, “H drung”] . Là m ng đ u vào, b t đ u t đ u tiên start = 0, v trí k t thúc end là s ph n t hv-1 là 5.

Ta có: Các t b t đ u t v trí hình v th 0 có trong d li u db là:

“Sang”, “Sangk dlông”

u ra: M ng ws [ “Sang”, “Sang k dlông”]

Thu t toán:

u vào: t đi n, m ng hình v hv, v trí hình v th start trong m ng hv. u ra: Các t có th có t v trí hình v đó.

{ các bi n: i, t, w.

//db là t đi n, hv là m ng hình v , start là v trí b t đ u c a hình v , end là v trí hình v cu i. B1: i = start. B2: { N u i < = end thì sang B3. Ng c l i sang B8. }

B3: N u i> start+ 5 ho c hv[i] có kí t đ c bi t thì nh y sang B8. B4:

{

N u i = = start thì t = t+ hv[i] . Ng c l i t = t+ “ ” + hv[i] . }

B5: N u có các hình v t có trong t đi n db thì đ a vƠo m ng w. B6: i++.

B7: Quay l i b c B2.

B8: N u m ng w ch a có ph n t nào thì m ng w[0] = hv[start] . B9: Tr v k t qu ws = w.

}

Hàm tword(ArrayList db, ArrayList hv, int start, int end): Hàm này có tác

d ng l y ra nh ng b ba t có th có t v trí hình v th start. Các t đ c phân cách v i nhau b ng kí t ắ/”.

Ví d :

“H drung”] . Là m ng đ u vào, li u db, v trí b t đ u start là 0, k t thúc end là hv.count-1 = 5

u ra: M ng tword

tword[0] = “sang/k dlông/hrup”, tword[1] = “sang k dlông/hrup/hang”,

tword[2] = “sang k dlông/hrup hang/Jrai

Thu t toán:

u vào: t đi n, m ng hình v hv, t v trí hình v th start trong m ng hv. u ra: Các b ba t b t đ u t hình v đó. M ng tword(db,hv,start,end) { các bi n: i, t, 1, w1, w2, w3, wt, C, //db là t đi n, hv là m ng hình v , start là v trí b t đ u c a hình v , end hình v cu i. B1: S d ng hàm ws, w1= ws(db,hv,start,end), các t có th có t v trí hình v th start. B2: N u s ph n t w1> 1 thì sang B3, Ng c l i sang B23 B3: i= 0 B4: i <= s ph n t w1 -1 sang B5, ng c l i sang B13 { B5: C= s kí t tr ng trong w1[i] + 1, v trí c a hình v ti p theo. Dùng hàm countch().

B6: N u C < = end, sang B7, Ng c l i, sang B10 {

B7: wt= ws(db,hv,C,end)

B8: V i m i ph n t chu i s2 trong m ng chu i wt, a b 2, s+ “/” +s2 vào m ng w2

B9: Sang B11 B10: a s vào m ng w2 B11: i+ + } B12: Quay l i B4 } B13: i= 0 B14: i <= s ph n t w2 -1 sang B15, ng c l i sang B24 {

B15: C= s kí t tr ng vƠ ắ/” trong w2[i] + 1, v trí c a hình v ti p theo.

B16: N u C < = end, sang B17, Ng c l i, sang B20 {

B17: wt= ws(db,hv,C,end)

B18: V i m i ph n t chu i s2 trong m ng chu i wt, a b 3, s+ “/” +s2 vào m ng w3 B19: Sang B21 B20: a s vào m ng w3 B21: i+ + } B22: Quay l i B14 } B23: w3 = w1. B24: tr v k t qu b ba t tword = w3. }

Hàm L1(ArrayList tword): HƠm nƠy dùng đ kh các nh p nh ng, hàm này có ch c n ng ch n ra nh ng b ba t có chi u dài dài nh t.

Ví d :

u vào: M ng tword [“sang/k dlông/hrup”, “sang k dlông/hrup/hang”, sang k dlông/hrup hang/Jrai”]. Là m ng đ u vào.

u ra: M ng L1 [“sang k dlông/hrup hang/Jrai”]

Thu t toán:

u vào: Các b ba t .

u ra: Các b ba t có chi u dài dài nh t. M ng L1(tword)

{ các bi n: i, MAX, L B1:

{

N u có nh p nh ng, ngh a lƠ s ph n t tword > 1, sang B2 Ng c l i, sang B8

}

B2: Xác đnh chi u dài t i đa c a các b ba t = MAX B3: i = 0 B4: { i <= s ph n t c a tword thì sang B5, Ng c l i, sang B9 }

B5: N u đ dài b ba t tword[i] = = MAX, đ a tword[i] vào m ng L B6: i+ +

B7: Quay l i B4 B8: L= tword

B9: Tr v k t qu hàm L1= L }

Hàm L2(ArrayList L1): Lu t 2, dùng đ kh các nh p nh ng, hàm này có ch c n ng ch n ra nh ng b mƠ đ dài trung bình t l n nh t.

Ví d :

u vào: M ng L1 [“nai/p tô”, nai p tô”]. dài trung bình c a L1[1] = 2/2, L1[2] = 2/1.

u ra: M ng L2 [“nai p tô”]. Thu t toán:

u vào: Các b ba t .

u ra: Các b ba t mƠ đ dài trung bình t l n nh t. M ng L2(L1) { các bi n: i, MAX, L. B1: { N u có nh p nh ng, ngh a lƠ s ph n t L1 > 1, sang B2 Ng c l i, sang B8 }

B2: Xác đnh đ dài trung bình t t i đa c a các b t = MAX B3: i = 0 B4: { i <= s ph n t c a L1-1 thì sang B5, Ng c l i, sang B9 }

B5: N u đ dài trung bình t L1[i] = = MAX, đ a L1[i] vào m ng L B6: i+ + B7: Quay l i B4 B8: L= L1 B9: Tr v k t qu hàm L2= L } Hàm L3(ArrayList L2): Lu t 3, dùng đ kh các nh p nh ng, hàm này có ch c n ng ch n ra nh ng b mƠ đ bi n đ i các t trong b nh nh t. Ví d :

u vào: M ng L2[“nai/ia jrao”, nai ia jrao”]. bi n đ i L2[1]= 1, L2[2] = 0.

u ra: M ng L3 [“nai ia jrao”]. Thu t toán:

u vào: Các b ba t .

u ra: Các b ba t mƠ đ bi n đ i các t trong b nh nh t. M ng L2(L1) { các bi n: i, MIN, L B1: { N u có nh p nh ng, ngh a lƠ s ph n t L2 > 1, sang B2 Ng c l i, sang B8 } B2: Xác đnh đ bi n đ các t trong b nh nh t = MIN. B3: i = 0 B4:

{

i <= s ph n t c a L2 -1 thì sang B5, Ng c l i, sang B9

}

B5: N u đ bi n đ i các t L2[i] = = MIN, đ a L2[i] vào m ng L B6: i+ + B7: Quay l i B4 B8: L = L2 B9: Tr v k t qu hàm L3 = L } Hàm L4(ArrayList L3): Lu t 4, dùng đ kh các nh p nh ng, hàm này l y ra t đ u tiên có chi u dài dài nh t trong b .

Thu t toán:

u vào: Các b ba t .

u ra: b t mà t đ u tiên có chi u dài dài nh t trong b . M ng L4(L3) { các bi n: L. B1: { N u có nh p nh ng, ngh a lƠ s ph n t L3 > 1, sang B2 Ng c l i, sang B4 }

B2: Xác đ nh t đ u tiên có chi u dài dài nh t trong các b , đ a b vào m ng L

B3: Sang B5 B4: L = L3

B5: Tr v k t qu hàm L4 = L }

Hàm tách t sentence(ArrayList db, string t_input): ơy lƠ hƠm tách t t đ ng ti ng Jrai. V i đ u vào là d li u và câu ti ng Jrai, sau khi qua các b c x lý, hàm này cho đ u ra là câu ti ng Jrai đư đ c đánh d u tách t . Các t đ c đánh d u b i kí t ắ/”.

Thu t toán:

u vào: t đi n, chu i câu ti ng Jrai s.

u ra: Câu ti ng Jrai đư đ c đánh d u tách t . Chu i sentence(db,s)

{ các bi n: i, sen, hv.

B1: Tách chu i s thành các hình v (hv) riêng l theo th t . B2: i=0, chu i t m sen=””.

B3: N u i <= s ph n t hv-1, ng c l i sang B9 B4: Xác đ nh các b ba t có th có t v trí i B5: S d ng các hàm L1,L2,L3,L4

B6: L y t đ u tiên c a b t i u, thêm vƠo chu i t m sen v i phân cách là kí t ắ/”.

B7: i = (s ký t tr ng vƠ ắ/” trong chu i sen )+1 B8: Quay sang B3

B9: Tr v k t qu sentence = sen }

3.2.2. Ch ngătrìnhăh ătr ăch nhăs aăcơuăsauăkhiătáchăt

Ch ng trình ch nh s a l i câu sau khi tách là m t WinForm g m các ch c n ng:

Winform đ c tích h p b gõ ti ng Jrai, nên có th nh p ti ng Jrai mà không c n đ n b t k b gõ nào.

Tách t t đ ng v i mô đun th vi n liên k t đ ng jraimm.dll. Hi n th các tr ng h p tách t đ minh h a thu t toán.

Ch nh s a câu sau khi tách. G m các mô đun ghép t , chia t n u t có có hai hình v tr lên.

Tùy ch n ghi cơu đư chnh s a ra t p d li u.

3.3.TH ăNGHI M

Nh đư nêu trên chúng tôi xây d ng ch ng trình g m mô đun tách t và giao di n cho phép ch nh s a t sau khi tách t đ ng khi ng i dùng cho r ng cơu đ c tách ch a hoƠn toƠn chính xác.

Mô đun tách t jraimm.dll là m t th vi n liên k t đ ng nên nó không th t ch y đ c, mà c n ph i tích h p vƠo ch ng trình nƠo đó đ g i các hàm tách t th c thi. Các hàm tách t v i ki u d li u tr v nh sau:

public static ArrayList data(string filename): Hàm l y d li u, v i

filename tên t p tin d li u. T p tin d li u t đi n là m t t p tin t đi n ch a các m c t ti ng Jrai.

public static string sentence(ArrayList db, string t_input): Hàm tách

t , v i chu i đ u vào câu ti ng Jrai t_input và d li u db, đ u ra là chu i cơu đư tách t , các t đ c phân cách b i ký t ắ/”.

nƠy c ng tách t , nh ng đ u ra là m ng các tr ng h p tách t khác nhau, tr ng h p t i u đ c l u ph n t đ u tiên c a m ng.

Giao di n WinForm minh h a tách t t đ ng và h tr ch nh s a l i câu sau khi tách t t đ ng:

Hình 3.2: Giao di n tách t và ch nh s a

Trong ch ng trình ng i dùng c n nh p chu i câu ti ng Jrai và th c hi n tách t . Các tr ng h p tách t đ c li t kê trong danh sách, tr ng h p t i u theo ph ng pháp đư ch n đ c đ t trên cùng c a danh sách.

N u các tr ng h p ch a đ c hoƠn toƠn chính xác, ng i dùng mu n ch nh s a l i cơu đư tách t đ ng thì ch n câu c n s a thì s có các mô đun ch nh s a đ ng i dùng ch nh s a l i câu cho chính xác nh t.

Hình 3.3: Ch nh s a l i câu sau khi tách t đ ng

Sau khi ch nh s a theo ý mu n thì có th l u ra t p tin d li u đ t trong cùng th m c v i ch ng trình. Ngoài ra, chúng ta có th l u l i đ c các cơu đư đ c tách t .

3.4. ÁNH GIÁ

Ch ng trình tách t đ c xây d ng trên thu t toán Maximum Matching, thu t toán d a vào t đi n đ th c hi n tách t , cho nên chúng tôi t ch c đánh giá b ng cách l y t l các t tách đ c so v i t ng các t có trong t p d li u đ đo đ chính xác t ng đ i c a ch ng trình.

Do nhi u v n đ khó kh n v vi c thu th p d li u, c ng nh ngu n tài nguyên s ti ng Jrai còn r t h n ch , đ đánh giá hi u su t chính xác t ng đ i c a ch ng trình, chúng tôi thu th p t p d li u bao g m h n 120 cơu, có h n 1400 t .

Khi đánh giá thu t toán v i t p d li u trên thì có kho ng 1200 t là có th tách đ c, nh v y đ chính xác t ng đ i v i t l chính xác là kho ng 85%.

MƠn hình đánh giá:

Hình 3.4: ánh giá

M c đ chính xác c a thu t toán ph thu c ch y u vào t đi n, cho nên đ c i thi n đ chính xác thì c n thêm vào ngu n t đi n đ các m c t đ c phong phú h n. T đó nơng cao đ c t l chính xác c a ch ng trình.

3.5.K TăLU N

đ ng ti ng Jrai d a trên n n thu t toán Maximum Matching. Ch ng trình đ c vi t b ng ngôn ng C#, trên n n t ng .NET Framework 4.0 v i b công c Visual Studio 2010. V i ch ng trình h tr ch nh s a cơu đư tách, chúng ta có th xây d ng m t kho d li u ch a các câu ti ng Jrai đư đ c đánh d u v ranh gi i t , kho d li u này có th s d ng đ nơng cao đ chính xác c a công c tách t t đ ng.

Một phần của tài liệu Nghiên Cứu Và Xây Dựng Công Cụ Tách Từ Tự Động Trong Tiếng JRAI (Trang 52)

Tải bản đầy đủ (PDF)

(70 trang)