intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Kỹ thuật tối ưu đa mục tiêu thiết kế bảng băm từ điển cho kiểm lỗi tiếng Việt

Chia sẻ: Thi Thi | Ngày: | Loại File: PDF | Số trang:10

62
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài toán thiết kế bảng băm cho từ điển âm tiết tiếng Việt phải giải quyết hai vấn đề có liên quan trong sự đối lập nhau, đó là kích thước bảng băm và khả năng đụng độ. Chúng tôi đưa ra cách giải quyết bài toán này nhằm cả hai mục tiêu là khả năng dụng độ và kích thước bảng băm cùng phải nhỏ. Kết quả thử nghiệm với các điểm tối ưu trên tập Pareto với kích thước bảng băm cỡ 1,11n (n là kích thước từ điển), độ phức tạp thời gian tìm kiếm trên bảng băm là O(1). Mời các bạn tham khảo!

Chủ đề:
Lưu

Nội dung Text: Kỹ thuật tối ưu đa mục tiêu thiết kế bảng băm từ điển cho kiểm lỗi tiếng Việt

Kü thuËt ®iÖn tö & Khoa häc m¸y tÝnh<br /> <br /> <br /> Kü THUËT TèI ¦U §A MôC TI£U THIÕT KÕ<br /> B¶NG B¡M Tõ §IÓN CHO KIÓM LçI TIÕNG VIÖT<br /> TRẦN NGỌC ANH*, TRƯƠNG QUỐC HÙNG*, PHAN TUẤN ANH*,<br /> PHẠM HỒNG SƠN**, NGUYỄN LONG*.<br /> Tóm tắt: Bài toán thiết kế bảng băm cho từ điển âm tiết tiếng Việt phải giải quyết hai<br /> vấn đề có liên quan trong sự đối lập nhau, đó là kích thước bảng băm và khả năng đụng<br /> độ. Chúng tôi đưa ra cách giải quyết bài toán này nhằm cả hai mục tiêu là khả năng dụng<br /> độ và kích thước bảng băm cùng phải nhỏ. Kết quả thử nghiệm với các điểm tối ưu trên tập<br /> Pareto với kích thước bảng băm cỡ 1,11n (n là kích thước từ điển), độ phức tạp thời gian<br /> tìm kiếm trên bảng băm là O(1), cho thấy ưu điểm của thuật toán được đề xuất so với một<br /> số thuật toán khác như tìm kiếm nhị phân, automat hữu hạn đơn định hoặc phân tích dựa<br /> trên cấu trúc âm tiết tiếng Việt.<br /> Từ khoá: Tối ưu đa mục tiêu; Tập Pareto; Bảng băm tối ưu.<br /> <br /> 1. ĐẶT VẤN ĐỀ<br /> Bài toán kiểm lỗi âm tiết tiếng Việt là một trong những bài toán cơ bản nhất của xử lý<br /> ngôn ngữ tự nhiên tiếng Việt[3][4]. Hiện nay, đã có rất nhiều phương pháp tiếp cận khác<br /> nhau như: Tìm kiếm nhị phân dựa theo từ điển đã được sắp xếp[3][4]; Dùng các từ điển và<br /> hàm băm dạng Soundex, Editex, Phontex hỗ trợ sửa lỗi[4]; Dùng mảng cấu trúc âm tiết<br /> tiếng Việt[3][4]; Dùng cây từ điển ký tự: B-Tree hay cây hậu tố Suffix-Tree[4]; Dùng<br /> Automat hữu hạn đơn định, Automat tối thiểu[4]; Dùng mô hình thống kê n-grams ký<br /> tự[2][4]; Dùng bảng băm từ điển tối ưu[4]. Trong đó, dùng bảng băm từ điển tối ưu là<br /> hướng tiếp cận mới, sử dụng lời giải tối ưu đa mục tiêu cho thiết kế bảng băm. Cụ thể:<br /> mục tiêu 1 là tối thiểu hoá đụng độ, và mục tiêu 2 là tối thiểu hoá kích thước bảng<br /> băm[14]. Rõ ràng hai mục tiêu này mâu thuẫn loại trừ lẫn nhau. Trên cơ sở nghiên cứu về<br /> bộ mã ký tự Việt[4], về bảng băm từ điển âm tiết[4], về thống kê âm tiết tiếng Việt[1] và<br /> phương pháp tìm lời giải tối ưu đa mục tiêu[7][10][12], để tìm ra các tham số thiết kế tối<br /> ưu cho bảng băm từ điển.<br /> Với cách tiếp cận đó, bài báo được trình bày tiếp tục theo thứ tự sau: Tách âm tiết tiếng<br /> Việt bằng Automat hữu hạn; Xây dựng các hàm mục tiêu cho thiết kế bảng băm từ điển<br /> âm tiết; Tìm tập Pareto thiết kế bảng băm tối ưu; Thử nghiệm đánh giá; cuối cùng là phần<br /> kết luận.<br /> 2. VẤN ĐỀ TÁCH ÂM TIẾT TRONG VĂN BẢN<br /> Bước đầu tiên trước khi thực hiện kiểm tra âm tiết tiếng Việt là cần phải tách được từng<br /> âm tiết trong văn bản. Để thực hiện tách âm tiết tiếng Việt, có thể dùng Automat hữu hạn<br /> tiền định DFA (Deterministc Finite Automata) được mô tả như hình 1.<br /> DFA có 2 trạng thái q0 và q1, trong đó trạng thái bắt đầu q0 cũng là trạng thái kết thúc.<br /> Với  là bảng chữ cái chấp nhận được (tiếng Việt). Ban đầu thẻ từ Token =  (rỗng),<br /> trạng thái xuất phát q0, DFA sẽ đọc từng ký tự a để chuyển trạng thái. Tại trạng thái q1,<br /> dãy ký tự đọc vào sẽ đưa vào thẻ từ Token. Nếu trạng thái mới trở lại q0 mà thẻ từ Token <br />  thì xuất Token rồi gán lại thẻ từ Token = . Cứ như vậy, DFA sẽ tách được toàn bộ các<br /> âm tiết trong văn bản tiếng Việt. Bảng chữ cái chấp nhận được (tiếng Việt)  gồm: 17 chữ<br /> cái phụ âm (b c d đ g h k l m n p q r s t v x) và 12 chữ cái nguyên âm (a ă â e ê i o ô ơ u ư<br /> y). Mỗi chữ cái nguyên âm có thể kết hợp với 6 thanh (ngang, huyền, hỏi, ngã, sắc, nặng),<br /> nên số chữ cái nguyên âm có dấu thanh là 126 = 72. Do vậy, tổng số ký tự Việt là<br /> 17+72 = 89.<br /> <br /> <br /> <br /> <br /> 76 T. N. Anh, … , Long, "Kü thuËt tèi ­u ®a môc tiªu… kiÓm lçi tiÕng ViÖt."<br /> Nghiªn cøu khoa häc c«ng nghÖ<br /> <br /> <br /> <br /> <br /> Hình 1. Automat hữu hạn tiền định (DFA) tách âm tiết.<br /> <br /> Thuật toán minh hoạ DFA tách âm tiết:<br /> (* trạng thái bắt đầu q0 *)<br /> 1) Token  ’’;<br /> 2) Repeat<br /> a) i  0;<br /> b) SizeRealBuffer  ReadFile(File, Buffer);<br /> c) While (i < SizeRealBuffer) Do<br /> c1) If Buffer[i]  AlphabetTable Then<br /> (* chuyển sang trạng thái q1 *)<br /> c1t) Token  Token + Buffer[i]<br /> Else (* chuyển sang trạng thái q0 *)<br /> c1f) If Token  ’’ Then<br /> (*Kiểm tra thẻ từ Token, ví dụ:*)<br /> c1f1) (*If SyllableCheck(Token) Then *)<br /> (*-----------------------------*)<br /> c1f2) Token  ’’; (*sau khi xử lý*)<br /> c2) i  i + 1;<br /> Until SizeRealBuffer = 0; (*kết thúc tệp văn bản*)<br /> 3) If token  ’’ Then<br /> (*Kiểm tra thẻ từ Token sau cùng*)<br /> (* If SyllableCheck(Token) Then *)<br /> <br /> 3. XÂY DỰNG CÁC HÀM MỤC TIÊU THIẾT KẾ BẢNG BĂM TỪ ĐIỂN<br /> 3.1. Bảng băm và hàm băm<br /> Bảng băm T (hash table) là một mảng có kích thước M. Hàm băm h là một ánh xạ từ<br /> tập khoá K sang tập chỉ số i của bảng băm: h: K i, 0  i  M-1. Phần tử của bảng băm:<br /> T[i] (hình 2). Ở đây, tập khoá chính là từ điển âm tiết tiếng Việt. Mỗi âm tiết (syllable) là<br /> một chuỗi ký tự Việt, ứng với một khoá K. Ta biết rằng, mỗi ký tự Việt tương ứng với một<br /> mã của nó. (Chẳng hạn, chúng ta sử dụng ký tự Việt theo bảng mã Unicode TCVN<br /> 6909:2001). Như vậy, mỗi âm tiết w có thể tương ứng với một khoá K theo cách tính:<br /> Kw = m1an-1 + m2an-2 + ... + mna0,<br /> trong đó, n là độ dài của chuỗi âm tiết; m1, m2,..., mn là các mã tương ứng của từng ký tự<br /> trong chuỗi âm tiết; a là cơ số  |  | = 89 (là kích thước bảng chữ cái), a có thể được chọn<br /> khảo sát trong khoảng từ 89 đến 255. Từ đó, ta có hàm băm tương ứng cho âm tiết w<br /> như sau:<br /> h(w) = (m1an-1 + m2an-2 + ... + mna0) mod M. (1)<br /> <br /> <br /> <br /> <br /> T¹p chÝ Nghiªn cøu KH&CN Qu©n sù, Sè 30, 04 - 2014 77<br /> Kü thuËt ®iÖn tö & Khoa häc m¸y tÝnh<br /> <br /> <br /> <br /> <br /> Hình 2. Mô tả bảng băm và hàm băm.<br /> 3.2. Khả năng đụng độ<br /> Trường hợp w1  w2 và h(w1)  h(w2): không xảy ra đụng độ.<br /> Trường hợp w1  w2 và h(w1) = h(w2): xảy ra đụng độ.<br /> Trong thực tế khi thiết kế bảng băm, nếu không tính toán cẩn thận sẽ gặp phải khá<br /> nhiều đụng độ, điều đó làm tăng thời gian tìm kiếm.<br /> Để ước lượng thời gian tìm kiếm, có thể mô tả cấu trúc bảng băm như sau: Giả sử bảng<br /> băm T sử dụng phương pháp kết nối trực tiếp như hình 3.<br /> <br /> <br /> <br /> <br /> Hình 3. Mô tả bảng băm T theo phương pháp kết nối trực tiếp.<br /> Khi thêm một phần tử vào bảng băm mà xảy ra đụng độ, có nghĩa là danh sách kết nối<br /> tăng thêm một phần tử. Như vậy, có thể tính được tổng số đụng độ cho toàn bộ bảng băm<br /> khi các danh sách liên kết có kích thước lớn hơn 1. Cũng có thể nói một cách khác, đụng<br /> độ chính là chi phí thời gian tìm kiếm một từ khoá trong bảng băm.<br /> Với bảng băm T bằng phương pháp kết nối trực tiếp (hình 3), ta gọi T[k].count là kích<br /> thước danh sách liên kết của phần tử thứ k của bảng băm T, khi đó, D[k] là số khả năng<br /> đụng độ tại phần tử thứ k của bảng băm T, được xác định:<br /> T [k ].count  1 khi T [k ].count  1<br /> D[k ]   , (2)<br />  0 khi T [k ].count  1<br /> khả năng đụng độ cực đại của bảng băm T là:<br /> Dmax  max {D[k ]} , (3)<br /> k  0  M 1<br /> tổng khả năng đụng độ của toàn bộ bảng băm T là:<br /> M 1<br /> Ddic   D[k ] .<br /> k 0<br /> (4)<br /> <br /> Xét văn bản huấn luyện thực tế, mỗi từ wi trong danh sách đụng độ là D[k] sắp xếp tần<br /> suất xuất hiện là fw[i] giảm dần, tương ứng với xác suất xuất hiện là pw[i] giảm dần. Do<br /> vậy, tổng khả năng đụng độ theo thống kê âm tiết sẽ là:<br /> M 1 D [ k ]<br /> D fre   i  p<br /> k  0 i 1<br /> w [i ] , (5)<br /> <br /> <br /> <br /> <br /> 78 T. N. Anh, … , Long, "Kü thuËt tèi ­u ®a môc tiªu… kiÓm lçi tiÕng ViÖt."<br /> Nghiªn cøu khoa häc c«ng nghÖ<br /> <br /> M 1 D[ k ]<br /> trong đó, p<br /> k 0 i 0<br /> w [i ]  1 (tổng toàn bộ xác suất của bảng băm).<br /> <br /> 3.3. Không gian bài toán<br /> Như vậy, bài toán thiết kế bảng băm tối ưu<br /> với 2 mục tiêu (xung đột[9]) cụ thể:<br /> - Tối thiểu hoá kích thước bảng băm:<br /> fM = M  min a<br /> - Tối thiểu hoá thời gian tìm kiếm:<br /> fD = Ddic (hoặc Dfreq)  min a)<br /> * Không gian quyết định (hình 4a). Qua thống<br /> kê từ điển tiếng Việt[11], chúng tôi xác định<br /> fM<br /> được từ điển có chứa 6950 âm tiết tiếng Việt<br /> khác nhau. Do vậy, ta có các tham số sau: fD<br /> + Từ điển N = 6950 âm tiết<br /> + Cơ số a: 89  a  255 (mã ký tự Việt)<br /> + Giới hạn bảng băm: ta chọn kích thước<br /> bảng băm để khảo sát trong vùng lân cận trên<br /> so với kích thước từ điển. Có thể khảo sát M b)<br /> trong khoảng: N  M  3N(6950  M  20850).<br /> * Không gian mục tiêu (hình 4b): {(fD, fM)}.<br /> fM<br /> Hình 4. Không gian bài toán<br /> 3.4. Kiểm tra âm tiết tiếng Việt dựa vào bảng băm<br /> Với bảng băm T và hàm băm h(w), ta có thuật toán kiểm lỗi chính tả âm tiết sau:<br /> <br /> Function SyllableCheck(w: string): Boolean;<br /> 1) List  T[h(w)];<br /> 2) i  0;<br /> 3) Repeat<br /> i  i + 1;<br /> Until (List[i] = w) or (i = List.Count);<br /> 4) Return (List[i] = w);<br /> <br /> Trong thuật toán này, List là danh sách chứa các âm tiết có cùng địa chỉ băm, và<br /> List.count chính là khả năng đụng độ theo công thức (2). Do vậy, độ phức tạp của thuật<br /> toán này là O(Dmax). Tốc độ tìm kiếm không chỉ phụ thuộc Dmax, mà còn phụ thuộc hệ số<br /> tải  = N/M của bảng băm, thường người ta chọn   0.9, tức là kích thước bảng băm<br /> thường chọn lớn hơn N/ số phần tử cần được lưu trữ. (Với từ điển tiếng Việt có N = 6950<br /> âm tiết, ta chọn M  Mmin = 6950/0.9  7722).<br /> 4. TÌM TẬP PARETO THIẾT KÊ BẢNG BĂM TỐI ƯU<br /> Trong bài toán tối ưu đa mục tiêu, kết quả cần đạt được là một tập giải pháp xấp xỉ để<br /> người ra quyết định lựa chọn phương án phù hợp, tập xấp xỉ này được gọi là tập tối ưu đa<br /> mục tiêu. Tập này thường được lựa chọn theo phương pháp tối ưu Pareto.<br /> <br /> <br /> <br /> <br /> T¹p chÝ Nghiªn cøu KH&CN Qu©n sù, Sè 30, 04 - 2014 79<br /> Kü thuËt ®iÖn tö & Khoa häc m¸y tÝnh<br /> <br /> <br /> <br /> <br /> Hình 5. Minh hoạ tập Pareto của miền mục tiêu (f1, f2)  min.<br /> Một tập hợp điểm được gọi là tập tối ưu Pareto (hình 5) nếu di chuyển từ một điểm<br /> (ví dụ điểm A) đến một điểm khác (điểm B) trong tập, bất kỳ cải thiện nào trong các hàm<br /> mục tiêu từ giá trị hiện tại sẽ làm ít nhất một giá trị của một hàm mục tiêu khác kém đi so<br /> với giá trị hiện tại[9]. Theo định nghĩa này, điểm C không phải là điểm tối ưu Pareto.<br /> Điểm C là không thuộc Pareto vì nó bị trội bởi cả hai điểm A và điểm B. Điểm A và B<br /> hoàn toàn không bị trội bởi bất kỳ điểm nào khác, vì thế, chúng nằm trên đường cong<br /> Pareto. Cùng vì thế, tập Pareto còn được gọi là tập các điểm không bị trội.<br /> Một trong những phương pháp giải bài toán tối ưu đa mục tiêu, đó là phương pháp -<br /> Contraint. Theo phương pháp này, chỉ những mục tiêu nào được tối ưu trong khi các mục<br /> tiêu khác được chuyển hoá thành các ràng buộc của mục tiêu đã lựa chọn. Khi đó, bài toán<br /> tối ưu k mục tiêu (k ≥ 2) được mô tả:<br />  <br /> min f j ( x ) / ( x )  D (6)<br /> <br /> sao cho, f j (x ) ≤ với i =1, 2, ..., k; i  j và D  Rn. Trong phương pháp vector được<br /> xác định và sử dụng biên (biên trên trong trường hợp cực tiểu) cho tất cả các mục tiêu i.<br /> Để đưa ra vector , phương pháp này sẽ tìm một giải pháp tối ưu qua việc tối ưu mục tiêu<br /> j. Bằng việc thay đổi sẽ đạt được một tập tối ưu. Trong thực nghiệm chúng tôi áp dụng<br /> phương pháp -Contraint để thiết kế bảng băm tối ưu dựa trên 2 yếu tố: tối thiểu hoá đụng<br /> độ (Ddic  min, hoặc Dfreq  min) và tối thiểu hoá kích thước bộ nhớ (M  min). Vì đây<br /> là hai mục tiêu xung đột với nhau, do vậy, đây là dạng bài toán tối ưu đa mục tiêu [9]. Có<br /> thể giải quyết một cách đơn giản bằng cách tìm các tham số tối ưu theo thứ tự: Tìm tập các<br /> giá trị tối ưu về khả năng đụng độ trước, sau đó tìm tập các giá trị tối ưu về kích thước bộ<br /> nhớ, đó cũng là tập Pareto [7], [13] cần tìm. Trong một số trường hợp, có thể kết hợp<br /> phương pháp tương tác để định hướng vào vùng kết quả trong không gian mục tiêu [12].<br /> Phương pháp -Contraint được xây dựng theo các bước sau:<br /> + Bước 1: Với mỗi fM → Tìm min fD → Kết quả: fM, min fD.<br /> + Bước 2: Sắp xếp min fD, fM giảm dần theo min fD, rồi đến fM.<br /> + Bước 3: Với mỗi min fD chỉ giữ lại min fM → Tập tối ưu Pareto.<br /> Trên cơ sở đó, với mỗi từ điển âm tiết tiếng Việt được sắp xếp theo alphabet (Ddic) hay<br /> tần suất (Dfreq), ta có các thuật toán sau:<br /> Thuật toán 1: Tìm tập thiết kế tối ưu cho bảng băm với (Ddic, M)  min<br /> B1) Tìm tập Ddic  min theo M:<br /> For M  Mmin To Mmax<br /> 1) minDmax  DIC.count;<br /> 2) minDdic  DIC.count;<br /> 3) For a  amin To amax<br /> a) For i  0 To M - 1<br /> <br /> <br /> <br /> <br /> 80 T. N. Anh, … , Long, "Kü thuËt tèi ­u ®a môc tiªu… kiÓm lçi tiÕng ViÖt."<br /> Nghiªn cøu khoa häc c«ng nghÖ<br /> <br /> a1) T[i]  ;<br /> b) For i  0 To DIC.count – 1<br /> b1) w  DIC[i];<br /> b2) T[h(w)]  T[h(w)]  {w};<br /> c) Dmax  0;<br /> d) Ddic  0;<br /> e) For i  0 To M – 1<br /> e1) If (T[i].count - 1 > Dmax) Then<br /> e1t) Dmax  T[i].count - 1;<br /> e2) If (T[i].count > 1) Then<br /> e2t) Ddic  Ddic + T[i].count - 1;<br /> f) If (minDdic = Ddic) and (minDmax > Dmax) Then<br /> ft1) aopt  a;<br /> ft2) minDmax  Dmax;<br /> Else If (minDdic > Ddic) Then<br /> ff1) aopt  a;<br /> ff2) minDmax  Dmax;<br /> ff3) minDdic  Ddic;<br /> 4) List[M-Mmin].Mopt  M;<br /> 5) List[M-Mmin].aopt  aopt;<br /> 6) List[M-Mmin].Dmax  minDmax;<br /> 7) List[M-Mmin].Ddic  minDdic;<br /> B2) Tìm tập M  min theo Ddic (tìm tập Pareto)<br /> 1) Sắp xếp List theo Ddic tăng dần;<br /> 2) Mỗi Ddic chỉ giữ lại một phần tử có Mopt = min;<br /> 3) i  0; //Loại bỏ tiếp các điểm bị trội.<br /> 4) While (i < List.Count - 1)<br /> a) k  i;<br /> b) minM = List[k].Mopt;<br /> c) For j  i + 1 To List.Count - 1<br /> c1) If (List[j].Mopt < minM) Then<br /> i) k  j;<br /> ii) minM  List[j].Mopt;<br /> d) If (k > i) Then<br /> d1) j  i;<br /> d2) d  i;<br /> d3) while (d < k)<br /> i) List.RemoveAt(j);//Loại bỏ phần tử<br /> ii) d  d + 1;<br /> e) i  i + 1;<br /> <br /> Trong thực tế, có nhiều âm tiết xuất hiện với tần số cao [1], nếu chúng rơi vào những<br /> địa chỉ có khả năng đụng độ cao sẽ ảnh hưởng trực tiếp đến thời gian kiểm lỗi cho toàn<br /> văn bản. Chính vì vậy, có thể cải thiện thời gian thực hiện thông qua việc khảo sát với các<br /> văn bản tiếng Việt thực tế, thống kê âm tiết. Từ điển freqDIC với các âm tiết được sắp xếp<br /> giảm dần theo tần suất xuất hiện của chúng.<br /> Thuật toán 2: Tìm tập thiết kế tối ưu cho bảng băm với (Dfreq, M)  min<br /> //Từ điển FreqDIC được sắp xếp giảm dần theo tần suất.<br /> B1) Tìm tập Dfreq  min theo M:<br /> For M  Mmin To Mmax<br /> 1) minDmax  freqDIC.count;<br /> 2) minDfreq  freqDIC.count;<br /> 3) fmax  f[0]; (*f[i]: tần suất của âm tiết freqDIC[i]*)<br /> 4) For a  amin To amax<br /> <br /> <br /> <br /> <br /> T¹p chÝ Nghiªn cøu KH&CN Qu©n sù, Sè 30, 04 - 2014 81<br /> Kü thuËt ®iÖn tö & Khoa häc m¸y tÝnh<br /> <br /> a) For i  0 To M – 1<br /> a1) T[i]  ;<br /> b) For i  0 To freqDIC.count – 1<br /> b1) w  freqDIC[i]; (* chèn vào cuối T[h(w)] *)<br /> b2) T[h(w)]  T[h(w)]  {w,f[i]/fmax};<br /> c) Dmax  0;<br /> d) Dfreq  0;<br /> e) For i  0 To M – 1<br /> e1) If T[i].count - 1 > Dmax Then<br /> e1t) Dmax  T[i].count - 1;<br /> e2) If T[i].count > 1 Then<br /> e2t) For k = 1 To T[i].count – 1<br /> i) Dfreq  Dfreq + k*T[i].Item[k].p;<br /> f) If (minDfreq = Dfreq) and (minDmax > Dmax) Then<br /> ft1) aopt  a;<br /> ft2) minDmax  Dmax;<br /> Else If minDfreq > Dfreq Then<br /> ff1) aopt  a;<br /> ff2) minDmax  Dmax;<br /> ff3) minDfreq  Dfreq;<br /> 4) List[M-Mmin].Mopt  M;<br /> 5) List[M-Mmin].aopt  aopt;<br /> 6) List[M-Mmin].Dmax  minDmax;<br /> 7) List[M-Mmin].Dfreq  minDfreq;<br /> B2) Tìm tập M  min theo Dfreq: Tương tự B2 ở thuật toán 1.<br /> (Ddic được thay bằng Dfreq trong phần này)<br /> <br /> Với các văn bản thực tế đủ lớn, đủ bao trùm nhiều lĩnh vực khác nhau của tiếng Việt,<br /> qua thống kê theo âm tiết để tính tần suất xuất hiện của chúng. Đối với các từ xuất hiện với<br /> tần suất rất cao, nếu rơi vào danh sách đụng độ cao sẽ ảnh hưởng đến thời gian tìm kiếm.<br /> Nếu những từ này đứng ở đầu danh sách đụng độ, thì vấn đề có thể xem như đã được giải<br /> quyết. Do đó, nếu từ điển được sắp xếp trước theo tần suất giảm dần thì thuật toán 2 sẽ tìm<br /> được kết quả có ý nghĩa thực tế hơn thuật toán 1. Với các tập kết quả tìm được qua 2 thuật<br /> toán, các tập tối ưu Pareto, ta có thể chọn một số điểm để thử nghiệm khảo sát đánh giá.<br /> 5. THỬ NGHIỆM ĐÁNH GIÁ<br /> 5.1. Tập tối ưu cho thiết kế bảng băm kiểm tra âm tiết tiếng Việt<br /> Các tham số cho thuật toán 1 và 2 (mục 4) như sau: từ điển 6950 âm tiết; hệ số a: 89 <br /> a  255; khoảng khảo sát bảng băm: 6950  M  20850. Các tập tối ưu pareto tìm được<br /> theo các thuật toán, biểu diễn ở dạng đồ thị dưới dây.<br /> <br /> <br /> <br /> <br /> a) Tập Pareto (Ddic min,M min) b) Tập Pareto (Dfreq min,M min)<br /> Hình 6. Các tập tối ưu Pareto<br /> <br /> <br /> <br /> <br /> 82 T. N. Anh, … , Long, "Kü thuËt tèi ­u ®a môc tiªu… kiÓm lçi tiÕng ViÖt."<br /> Nghiªn cøu khoa häc c«ng nghÖ<br /> <br /> <br /> <br /> <br /> a) Tập cục bộ (Dsummin, Mmin) b) Tập cục bộ (Dfreqmin, Mmin)<br /> Hình 7. Các tập tối ưu cục bộ Dmax min<br /> 5.2. Thử nghiệm và đánh giá bảng băm từ điển tối ưu<br /> 5.2.1. Lựa chọn thiết kế tối ưu tiêu biểu cho bảng băm<br /> Như đã phân tích, độ phức tạp của thuật toán kiểm lỗi âm tiết bằng bảng băm chính là<br /> khả năng đụng độ O(Dmax). Theo hình 7.a và 7b thì {Dmax} = {3..6}, tức là O(Dmax) = O(1).<br /> Về toàn cục, ta phải lựa chọn Ddic/Dtext min và M min. Với kích thước từ điển<br /> n = 6950 âm tiết, ta thấy với: n  M  3n thì O(M) = O(n). Các hình 6a và 6b minh hoạ các<br /> tập tối ưu Pareto. Chọn điểm tối ưu đầu tiên cho mỗi trường hợp, gần nhau và ở lân cận<br /> của Mmin = N/  7722 để khảo sát (bảng 1).<br /> Bảng 1. Chọn điểm tối ưu tiêu biểu đầu tiên ở lân cận của Mmin.<br /> Chọn điểm đầu tiên Mopt aopt Dmax Dopt<br /> Ddic min (hình 6a) 7713 239 4 2177<br /> Dfreq min (hình 6b) 7735 163 4 2.528<br /> Thực hiện thử nghiệm kiểm lỗi âm tiết với 3 trường hợp sau:<br />  Thử nghiệm TN1: Bảng băm tối ưu: Mopt = 7713, Dopt = 2177 (Dopt = Ddic). Xây<br /> dựng bảng băm này với từ điển âm tiết được sắp xếp theo alphabet.<br />  Thử nghiệm TN2: Bảng băm tối ưu: Mopt = 7713, Dopt = 2177. Xây dựng bảng băm<br /> này với từ điển âm tiết được sắp xếp theo tần suất giảm dần.<br />  Thử nghiệm TN3: Bảng băm tối ưu: Mop t= 7735, Dopt = 2.528 (Dopt = Dfreq). Xây<br /> dựng bảng băm với từ điển âm tiết được sắp xếp theo tần suất giảm dần.<br /> Bộ chương trình kiểm lỗi âm tiết tiếng Việt trên file văn bản, thiết kế hàm<br /> SyllableCheck trên cơ sở bảng băm và hàm băm. Ngoài ra, dùng các thuật toán khác như:<br /> tìm kiếm nhị phân [1], cấu trúc âm tiết [1], Automat hữu hạn [1], [9], [5] để so sánh. Nếu<br /> âm tiết hợp lệ, hàm SyllableCheck sẽ trả về TRUE, ngược lại là FALSE. Các thử nghiệm<br /> chạy trên Laptop Lenovo-3000-Y410, Intel Core2Duo CPU T5750 @2.0GHz (2CPU),<br /> 3GB RAM, 160GB HDD, hệ điều hành Windows XP SP2.<br /> Ngữ liệu văn bản tiếng Việt dùng cho thử nghiệm là kho ngữ liệu VietTreeBank với<br /> gần 2 triệu âm tiết, có kích thước cỡ 10MB. Cứ kiểm 10.000 âm tiết sẽ ghi nhận thời gian<br /> một lần để khảo sát. Chạy 10-15 lần, lấy 5 lần thử tốt nhất, rồi tính trung bình để so sánh<br /> ba thử nghiệm TN1, TN2 và TN3.<br /> 5.2.2. Kết quả thử nghiệm kiểm lỗi âm tiết tiếng Việt với điểm tối ưu đầu tiên<br /> Kết quả thử nghiệm được trình bày trong bảng 2. Từ bảng 2, ta thấy thời gian chạy các<br /> thử nghiệm: T1 < T2 < T3. Như vậy, cả về lý luận (đã phân tích ở mục 3.2) lẫn thực nghiệm<br /> đều chứng tỏ việc thiết kế bảng băm tối ưu khi sử dụng từ điển được sắp xếp giảm dần<br /> theo tần suất thống kê âm tiết sẽ cho kết quả tốt hơn (thời gian chạy ngắn hơn). Tức là các<br /> âm tiết có tần suất cao được ưu tiên sinh khoá trước, các âm tiết có tần suất thấp được sinh<br /> khoá sau. Các phần tử đụng độ của bảng băm này chủ yếu chứa các âm tiết có tần suất<br /> thấp, làm cho việc tìm kiếm thực tế trở nên nhanh hơn.<br /> <br /> <br /> <br /> T¹p chÝ Nghiªn cøu KH&CN Qu©n sù, Sè 30, 04 - 2014 83<br /> Kü thuËt ®iÖn tö & Khoa häc m¸y tÝnh<br /> <br /> Bảng 2. So sánh thời gian chạy trung bình với các thử nghiệm.<br /> Lần Thử nghiệm TN1 Thử nghiệm TN2 Thử nghiệm TN3<br /> thử T1(giây) T2(giây) T3(giây)<br /> 1 4,015 3,922 3,719<br /> 2 4,078 3,953 3,766<br /> 3 4,016 3,937 3,750<br /> 4 4,016 3,953 3,812<br /> 5 4,047 3,922 3,787<br /> TB 4,034 3,937 3,766<br /> <br /> 5.2.3. So sánh thời gian thực hiện với một số thuật toán khác<br /> Thử nghiệm kiểm lỗi âm tiết tiếng Việt bằng tìm kiếm nhị phân (TKNP)[1], cấu trúc<br /> âm tiết (CTÂT)[1] và Automat hữu hạn đơn định DFA (Deterministic Finite Automat) [1],<br /> [9], [5] để so sánh thời gian chạy với bảng băm tối ưu đã nêu.<br /> Bảng 3. So sánh thời gian chạy của các thuật toán khác nhau.<br /> Lần TKNP CTÂT DFA TN1 TN2 TN3<br /> thử TB (giây) TC (giây) TA (giây) T1 (giây) T2 (giây) T3 (giây)<br /> 1 9,906 7,406 5,360 4,015 3,922 3,719<br /> 2 9,953 7,313 5,359 4,078 3,953 3,766<br /> 3 9,891 7,437 5,422 4,016 3,937 3,750<br /> 4 9,907 7,391 5,407 4,016 3,953 3,812<br /> 5 9,937 7,391 5,391 4,047 3,922 3,781<br /> TB 9,919 7,388 5,388 4,034 3,937 3,766<br /> Kết quả thử nghiệm với<br /> giây các thuật toán (tìm kiếm nhị<br /> phân, luật cấu tạo âm tiết, và<br /> Automat hữu hạn đơn định)<br /> cho thấy: bảng băm được thiết<br /> kế với tham số tối ưu đầu tiên<br /> của tập tối ưu Pareto (hình 6)<br /> trong các trường hợp có và<br /> NAT<br /> không có sử dụng thống kê<br /> âm tiết, đều cho kết quả thực<br /> Hình 8. Đồ thị so sánh thời gian chạy nghiệm tốt hơn về thời gian<br /> của các thuật toán khác nhau. chạy, trong đó bảng băm tối<br /> ưu theo thống kê âm tiết là<br /> hiệu quả nhất. Các điểm tối ưu còn lại (ở bên phải) trên đường cong Pareto (hình 6a, 6b)<br /> hiển nhiên cho kết quả tốt hơn nữa về thời gian chạy.<br /> 6. KẾT LUẬN<br /> Tối ưu đa mục tiêu là hướng tiếp cận mới trong thiết kế bảng băm từ điển. Qua thử<br /> nghiệm với các điểm tối ưu trên tập Pareto với kích thước bảng băm xấp xỉ từ điển,<br /> M ≈ 1,11n (n là kích thước từ điển âm tiết), độ phức tạp thời gian là O(1), cho thấy, thời<br /> gian kiểm lỗi âm tiết tiếng Việt bằng bảng băm này nhanh hơn các thuật toán khác như:<br /> tìm kiếm nhị phân, cấu tạo âm tiết, automat hữu hạn đơn định. Kết quả nghiên cứu này rất<br /> có ý nghĩa và giá trị cho hướng nghiên cứu về xử lý ngôn ngữ tiếng Việt.<br /> <br /> TÀI LIỆU THAM KHẢO<br /> [1]. Anh Nguyễn Lê, Lai Trần Duy, Long Phạm Thế, Xuất Nguyễn Văn, “Giáo trình Lý Thuyết<br /> Mã nén”, NXB. Học Viện KTQS, 2001.<br /> [2]. Anh Trần Ngọc, Tĩnh Đào Thanh, “Kỹ thuật mã hoá âm tiết tiếng Việt và các mô hình n-<br /> grams ứng dụng kiểm lỗi cách dùng từ và cụm từ tiếng Việt”, Tạp chí CNTT & TT, Tập V-1,<br /> Số 6 (26), 9/2011.<br /> <br /> <br /> <br /> 84 T. N. Anh, … , Long, "Kü thuËt tèi ­u ®a môc tiªu… kiÓm lçi tiÕng ViÖt."<br /> Nghiªn cøu khoa häc c«ng nghÖ<br /> <br /> [3]. Anh Trần Ngọc, Tĩnh Đào Thanh, "Về bài toán kiểm lỗi chính tả tiếng Việt trên máy tính",<br /> Tạp chí Khoa học và Kỹ thuật, HVKTQS, số 116, 2006, tr.29-40.<br /> [4]. Anh Trần Ngọc, “Kỹ thuật mã hoá từ tiếng Việt và ứng dụng kiểm lỗi chính tả từ - cụm từ<br /> trong văn bản”, Luận văn thạc sĩ CNTT, Học viện KTQS, Hà Nội, 2007.<br /> [5]. Clifford A. Shaffer, “A Practical Introduction to Data Structures and Algorithm Analysis”,<br /> 3rd Edition (C++ Version), Book, 2010.<br /> [6]. Daciuk J. Mihov S. Watson B.W. Watson R.E., “Incremental Construction of Minimal Acycle<br /> Finite-State Automata”, Book, 2000.<br /> [7]. Eckart Zitzler, Marco Laumanns and Stefan Bleuler, “A Tutorial on Evolutionary<br /> Multiobjective Optimization”, Book, 2004.<br /> [8]. Gilles Brassard, Paul Bratley, “Algorithmics: Theory and Practice”, Book, 1988.<br /> [9]. Huyen N.T.M., Luong V.X., Phuong L.H. (2003), "Tách từ bằng từ điển và gán nhãn từ loại<br /> bằng xác suất", In Kỷ yếu hội thảo quốc gia ICT.RDA, 2003.<br /> [10]. Lam T. Bui and Sameer Alam, “Multi-Objective Optimization in Computation Intelligence:<br /> Theory and Practice”, Information Science Reference. IGI Global, 5, 2008.<br /> [11]. Linh Hoàng Thị Tuyền, Lương Vũ Xuân, Thuỷ Phạm Thị, Thu Đào Thị Minh, Hoà Đặng<br /> Thanh, [Phê Hoàng], “Từ điển Tiếng Việt”, Book, 2011.<br /> [12]. Long Nguyen, and Lam Thu Bui, "A multi-point interactive method for multi-objective<br /> evolutionary algorithms". In Proceeding of International Conference on Knowledge Systems<br /> Engineering, IEEE Computer Society, CPS, 2012, pages 107–112.<br /> [13]. Shan Y., Ang Y., and Bui L.T., “Success in Evolutionary Computation”, Studies in<br /> Computational Intelligence. 2008.<br /> [14]. Thomas H.C., Charles E.L., Ronald L.R., Clifford S., Introduction to Algorithms, Third<br /> Edition, The MIT Press, 2009.<br /> <br /> <br /> ABSTRACT<br /> MULTI-OBJECTIVE OPTIMIZATION TECHNIQUES TO DESIGNHASH TABLES<br /> OF DICTIONARY FOR VIETNAMESE SPELL CHECKING<br /> <br /> To design a hash table for a dictionary of Vietnamese syllables, it is neccesary to<br /> solve both issues that relate in opposition each to other: size of hash table and hash<br /> collisions. In this paper the method to resolve this problem for both objectives: size of<br /> hash table and hash collisions, which should be optimality smaller, is proposed. The test<br /> results with some optimal points on the Pareto set, size of hash table 1.11n (n is the size of<br /> the dictionary) and the time complexity of searching the hash table O(1) shows that the<br /> advantages of the proposed algorithms are better than that of others as binary search,<br /> deterministic finite automata, or analysis based on Vietnamese syllable structure.<br /> <br /> Keywords: Multi-objects optimazation; Pareto set; Optimal hash table.<br /> <br /> <br /> Nhận bài ngày 15 tháng 02 năm 2014<br /> Hoàn thiện ngày 10 tháng 03 năm 2014<br /> Chấp nhận đăng ngày 20 tháng 03 năm 2014<br /> <br /> <br /> <br /> <br /> Địa chỉ: * Học viện Kỹ thuật Quân sự;<br /> ** Trường Sĩ quan Tăng - Thiết giáp.<br /> <br /> <br /> <br /> <br /> T¹p chÝ Nghiªn cøu KH&CN Qu©n sù, Sè 30, 04 - 2014 85<br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2