được xác định nhờ khoảng trắng (khoảng trống). Nhưng với tiếng Việt, ranh giới giữa các đơn vị từ vựng không thể xác định nhờ khoảng trắng bởi vì tần số xuất hiện của từ ghép là rất cao. Bài toán phân tách đơn vị từ vựng cho tiếng Việt đã nhận được nhiều sự quan tâm nghiên cứu của giới học thuật trong nước. Một số nghiên cứu cho kết quả rất tốt, tuy nhiên các phương pháp này yêu cầu phải có một bộ từ điển từ vựng tiếng Việt [2].. Một phương pháp khác là sử dụng mô hình thống kê N- gram [1]., phương pháp này cho kết quả khá tốt. Trong điều kiện không có một bộ từ điển từ vựng tiếng Việt nên chúng tôi đã chọn phương pháp N-gram để giải bài toán này. Các kiến thức cơ bản về mô hình N- gram đã được trình bày trong phần [2.1.]. Sau đây chúng tôi sẽ đưa ra thuật toán tách từ kép đôi tiếng Việt.
Thuật toán: Trích rút từ đơn, từ ghép đôi tiếng Việt sử dụng N-gram
Input: Chuỗi từ S = w1 w2 w3…wk
Ouput: Danh sách từ đơn và từ kép: Result
1. Khởi tạo.
Hàng đợi Q với kích thước 3; Result = {} 2. If (S.Length > = 3) w1Q; w2Q; w3Q; Else If (S.Length = = 2) w1 Q; w2 Q; Else w1 Result; Exit; 3. While (Q.Length != 0) 3.1. If(Q.Length = =3) Lấy w1, w2, w3 từ Q; P1 = P(w2|w1); P2 = P(w3|w2); P3 = Max{P(w1), P(w2), P(w3)}; If(P1 = = Max{P1, P2, P3}) w1w2 Result; w3 Q; w4 Q, w5 Q; Else {w1 Result; w2 Q; w3 Q; w4Q} 3.2. If(Q.Length = = 2) Q w1, w2; P1 = P(w2|w1); P2 = Max{P(w1), P(w2)}; If ( P1 = = Max{P1, P2}) w1w2 Result; Else W1 Result; w2 Result;
4.2. Sinh dữ liệu huấn luyện
Trong lĩnh vực NLP, một nhiệm vụ hết sức cần thiết là cần có một bộ dữ liệu lớn, đầy đủ và chính xác [22].. Đây là một vấn đề không phải dễ dàng. Với bài toán tự động tóm tắt văn bản, chúng tôi cần có một bộ dữ liệu lớn nhằm mục đích cho việc đánh giá kết quả tóm tắt và thử nghiệm cho phương pháp học máy. Bộ dữ liệu cho bài toán tự động tóm tắt văn bản gồm có văn bản gốc, tiêu đề của nó và quan trọng nhất là phải có được một danh sách k câu quan trọng nhất trong văn bản đó. Việc có được k câu quan trọng nhất này thường do các nhà tóm tắt văn bản chuyên nghiệp chọn ra. Rõ ràng việc tạo dữ liệu như thế sẽ tốn rất nhiều công sức và tiền bạc. Đồng thời, bộ dữ liệu như vậy nó mang tính chủ quan của người tóm tắt. Bởi vì, cùng một văn bản với các nhà tóm tắt văn bản khác nhau thường đưa ra kết quả không hoàn toàn trùng nhau. Vậy yêu cầu đặt ra là chúng ta cần xây dựng được bộ dữ liệu lớn.
Vậy bài toán đặt ra là: Cho một văn bản đầy đủ và bản tóm lược
của nó (chúng tôi thu thập từ các bài báo trên internet). Hãy xác định k câu quan trọng nhất của tài liệu đó.
Trong phần này chúng tôi sẽ trình bày hai phương pháp để giải quyết bài toán này. Một phương pháp sử dụng thống kê tính overlap giữa mỗi câu với bản tóm lược do người tạo ra. Phương pháp thứ hai là sử dụng mô hình markov ẩn với bài toán Decoding [10].[22].. Sau đó sẽ là một đánh giá và so sánh kết quả giữa hai phương pháp này.
4.2.1. Sinh dữ liệu huấn luyện sử dụng phương pháp thống kê
Nhắc lại bài toán: Cho một văn bản đầy đủ và bản tóm lược của nó (chúng tôi thu thập từ các bài báo trên internet). Hãy xác định k câu quan trọng nhất của tài liệu đó.
Ý tưởng của phương pháp này là tính trọng số cho mỗi câu trong tài liệu.Sau đó k câu với trọng số cao nhất sẽ được chọn. Việc tính trọng số cho mỗi câu bằng cách tính độ liên quan của câu đó tới bản tóm lược (abstraction) do người thực hiện. Độ liên quan này được tính dựa vào các ý tưởng trong các nghiên cứu về độ đo liên quan giữa hai văn bản [31].[4]..
Các phương pháp được trình bày trong các nghiên cứu [31].[4]. là dành cho tiếng Anh, dựa vào bộ từ điển ngữ nghĩa WordNet tiếng Anh. Chúng ta không có một bộ từ điển ngữ nghĩa WordNet cho tiếng Việt, vì vậy chúng ta không thể áp dụng các phương pháp của họ được. Tuy nhiên, trong một phương pháp tính độ liên quan được trình bày bởi Banerjee và Pedersen đã gợi ý cho chúng tôi một phương pháp áp dụng cho tiếng Việt. Trong phương pháp của Banerjee & Pedersen để tính độ liên quan giữa hai từ (từ đơn, từ kép) bằng cách tính độ liên quan giữa hai khái niệm (gloss) của hai từ đó trong WordNet. Độ liên quan giữa hai khái niệm được tính bằng số từ chung (overlap) giữa hai khái niệm. Hơn thế, nếu có n từ liên tiếp trùng nhau giữa hai khái niệm thì độ liên quan được cộng thêm n2.
Từ ý tưởng này của Banerjee & Pedersen chúng tôi thực hiện tính độ liên quan của mỗi câu trong tài liệu gốc với bản tóm lược do người thực hiện bằng cách xác định các cụm từ (một hoặc nhiều từ) trùng lặp giữa chúng. Với mỗi cụm từ gồm n từ thì trọng số được tính bằng n2. Trọng số của mỗi câu được tính bằng cách cộng dồn các trọng số của mỗi từ hoặc cụm từ chung đó. Sau đố sẽ chọn ra k câu có trọng số cao nhất.
Thuật toán: Sinh dữ liệu huấn luyện bằng phương pháp thống kê
Input: Văn bản gốc: text
Bản tóm lược do người thực hiện: txtSummary
Output: Danh sach k câu có trọng số cao nhất Algorithm:
1. String[] sentences = GetSentences(text); 2. String[] words = GetWords(txtSummary); 3. Int[] scores = new int[sentences.Length]; 4. Int i = 0;
5. Tính trọng số cho mỗi câu
Foreach(string sentence in sentences) 5.1. string[] ws = GetWords(sentence)
5.2. scores[i++] = Score(ws, words)
6. Sắp xếp các câu theo trọng số giảm dần
For(int i = 0; i < scores.Length; i++) 6.1. For(int j = scores.Length; j > i; j--) 6.1.1. If(scores[j] > scores[j-1])
6.1.1.1. DoiCho(scores[j], scores[j-1]);
6.1.1.2. DoiCho(sentences[j], sentences[j-1]); 7. Return (k câu đầu tiên (0->k-1) trong mảng sentences
Trong thuật toán trên, phương thức GetSentences(string) để lấy các câu trong một văn bản. Ranh giới xác định câu bằng “.”, “!”, “?”. Phương thức GetWords(string) để lấy các từ với ranh giới xác định là khoảng trắng. Sau đây chúng tôi sẽ trình bày phương thức Score(string[], string[]) tính độ liên quan giữa hai văn bản.
Thuật toán: Tính độ liên quan giữa hai văn bản (Score())
Input: words1: các từ trong văn bản thứ nhất
words2: các từ trong văn bản thứ hai
Ouput: Độ liên quan giữa hai văn bản
Algorithm:
1. Int i = 0; 2. Int score = 0;
3. While( i < words1.Length) 3.1. string w1 = words1[i]; 3.2. int k = i;
3.3. for(int j = 0; j < words2.Length; j++)
While(j < words2.Length && k < words1.Length && words2[j] == words1[k]) {k++, j++} 3.4. if(k == i) i++ Else { score += Math.Pow(k-i, 2); i = k; } 4. Return score;
4.2.2. Sinh dữ liệu huấn luyện sử dụng mô hình Markov ẩn
Hongyan Jing và Kathleen R. McKeown [9].[10]. đã đưa ra mô hình bài toán xác định các câu được trích rút câu thông qua văn bản gốc và
bản tóm lược do người thực hiện. Phương pháp của họ là đưa bài toán này về bài toán Decoding – một trong ba bài toán cơ bản của mô hình Markov ẩn. Trong phần này chúng tôi sẽ phát biểu lại bài toán, sau đó sẽ giới thiệu giải thuật Viterbi giải quyết bài toán đặt ra.
4.2.2.1. Mô hình bài toán
Nhắc lại bài toán: Cho một văn bản đầy đủ và bản tóm lược của nó
(chúng tôi thu thập từ các bài báo trên internet). Hãy xác định k câu quan trọng nhất của tài liệu đó.
Gọi {I1, I2,…, IN} là các từ trong bản tóm tắt, Ij là từ thứ j trong tổng số N từ của bản tóm tắt. Chúng ta coi mỗi sự xuất hiện của từ Ij
trong tài liệu gốc là một đặc trưng của từ Ij. Mỗi từ Ij có thể xuất hiện nhiều lần khi đó nó sẽ có một danh sách các đặc trưng Lj. Các đặc trưng được biểu diễn như sau:
Trong đó là thể hiện cho sự xuất hiện thứ k của từ Ij trong tài liệu gốc với sjk vị trí câu trong tài liệu gốc, wjk là vị trí từ trong câu thứ sjk, m là tổng số lần từ Ij xuất hiện trong tài liệu gốc.
Với các từ Ik (k = 1, N) không xuất hiện trong tài liệu gốc thì chúng ta có thể sử dụng từ điển từ đồng nghĩa hoặc khoảng cách ngữ nghĩa giữa hai từ để xác định xem những từ nào là gần nó nhất về mặt ngữ nghĩa. Tuy nhiên, do chúng tôi thiếu bộ từ điển nên tạm thời chúng tôi sẽ bỏ qua những từ này.
Như vậy, bài toán có thể được phát biểu lại như sau[9].: Cho một chuỗi các từ {I1, I2,…, IN}, mỗi từ có một chuỗi các vị trí của nó trong tài liệu gốc (vị trí câu chứa từ, vị trí từ trong câu). Hãy xác định, với mỗi từ Ij thì vị nào của nó trong tài liệu gốc là thích hợp nhất.
Hình 4. 1. Ví dụ về chuỗi vị trí có thể của một đoạn (4 từ) tóm tắt
Trong đó từ “the” có 44 đặc trưng, từ “communication” có 1 đặc trưng, từ “subcommittee” có 2 đặc trưng, và từ “of” có 22 đặc trưng. Như vậy, chúng ta có thể có tới 44 x 1 x 2 x 22 = 1936 cách khác nhau. Để xác định xem chuỗi đặc trưng nào là thích hợp nhất thì chúng ta cần phải kiểm tra tới 1936 khả năng. Trong ví dụ trên, chuỗi đặc trưng thích hợp nhất là {(2, 39), (2, 40), (2, 41), (2, 42)} bởi vì các đặc trưng này đều có vị trí câu là 2, các từ là các từ liên tiếp (39-42) trong câu thứ 2. Vấn đề đặt ra ở đây là làm thế nào để tự động xác định được chuỗi này trong tổng số 1936 khả năng? Để giải bài toán này chúng ta sẽ sử dụng mô hình Markov ẩn với một số luật heuristic và thuật toán Viterbi.
4.2.2.2. Các luật heuristic
Một câu hỏi đặt ra là: Một từ phụ thuộc vào vị trí các từ xung
quanh nó trong tài liệu như thế nào? Theo [9]., sử dụng mô hình Bi- gram với giả sử rằng xác suất xuất hiện của một từ ở tại một vị trí nào đó trong tài liệu phụ thuộc vào từ ngay trước nó trong câu tóm tắt. Giả sử Ii và Ii+1 là hai từ liên tiếp nhau trong một câu của bản tóm lược, Ii
đứng trước Ii+1. Sử dụng Pro(Ii+1 = (S2, W2)|Ii = (S1, W1)) để thể hiện
cho xác suất từ Ii+1 đến từ vị trí (S2, W2) trong tài liệu với điều kiện từ Ii
đến từ vị trí (S1, W1) trong tài liệu. Cũng theo Jing [9].[10]., khi các nhà tóm tắt văn bản chuyên nghiệp thực hiện tóm tắt một văn bản thì luôn thỏa mãn hai luật: Thứ nhất, thường lấy cụm từ hơn là từ đơn; thứ hai, thường kết hợp các câu gần nhau để tạo thành câu mới hơn là kết hợp các câu ở xa nhau. Từ đó, Jing đã chuyển hai luật trên vào mô hình Bi- gram Pro(Ii+1 = (S2, W2)|Ii = (S1, W1)) ở trên. Cụ thể như sau: (ví dụ
được lấy từ Hình 4. 1)
Ví dụ: Pro(subcommittee = (2, 41)|communications = (2,40)) = P1 H2 If((S1==S2) and (W1 < W2 – 1)) Then Pro(Ii+1|Ii)= P2
Ví dụ: Pro(of = (4,16)|subcommittee = (2, 41)) = P2 H3 If((S1==S2) and (W1 > W2)) Then Pro(Ii+1|Ii)= P3
Ví dụ: Pro(of = (2,30)|subcommittee = (2, 41)) = P3 H4 If(S2-CONST < S1 < S2) Then Pro(Ii+1|Ii)= P4
Ví dụ: Pro(of = (3,5)|subcommittee = (2, 41)) = P4 H5 If(S2 < S1 < S2 + CONST) Then Pro(Ii+1|Ii)= P5
Ví dụ: Pro(of = (1, 10)|subcommittee = (2, 41)) = P5 H6 If(|S1==S2| >= CONST) Then Pro(Ii+1|Ii)= P6
Ví dụ: Pro(of = (23, 43)|subcommittee = (2, 41)) = P6 Bảng 4. 1. Bảng các luật Heuristics
Trong đó, P1, P2, P3, P4, P5, P6 là các hằng số do chúng ta đưa vào thỏa mãn P1 > P2 > P3 > P4 > P5 > P6. CONST là một hằng số.
Sau khi có được các nguyên tắc ở trên, Hongyan Jing và Kathleen R. McKeown đã xây dựng một mô hình Markov ẩn để giải bài toán đặt ra [9].. Mô hình bài toán như trong hình sau:
Hình 4.2. Mô hình Markov sinh dữ liệu huấn luyện
Trong mô hình HMM ở trên, mỗi nút thể hiện cho một vị trí trong tài liệu, nó chính là một đặc trưng. Các mũi tên từ nút này sang nút khác thể hiện cho xác suất chuyển trạng thái. Mô hình HMM này được sử dụng để tìm chuỗi vị trí thích hợp nhất cho các từ trong bản tóm tắt. Đây chính là bài toán Decoding – một trong ba bài toán cơ bản được giải quyết bởi mô hình Markov ẩn. Để giải bài toán này chúng ta sử dụng thuật toán Viterbi [20].[26].[22].[9].[10]..
4.2.2.3. Thuật toán Viterbi
Nhiệm vụ của chúng là tìm chuỗi các vị trí để xác suất Pro(I1, …, IN) đạt giá trị cực đại. Sử dụng mô hình Bi-Gram, xác suất này được
Giả sử bản tóm lược do người thực hiện gồm N từ, mỗi từ xuất hiện trong tài liệu M lần. Nếu chúng ta duyệt tất cả các khả năng thì độ phức tạp của nó là NM – bài toán NP-Hard. Nếu giải quyết bài toán này sử dụng thuật toán Viterbi thì độ phức tạp của thuật toán là , với k là một hằng số.
Thuật toán Viterbi là thuật toán quy hoạch động. Ý tưởng của nó là, trước hết tìm chuỗi vị trí thích hợp nhất cho I1I2 với mỗi vị trí có thể của I2. Thông tin này sau đó sẽ được sử dụng để tìm chuỗi vị trí thích hợp nhất cho I1I2I3, với mỗi vị trí có thể của I3. Quá trình này sẽ được lặp lại cho đến IN.
4.2.3. Đánh giá và so sánh hai phương pháp trên
Để đánh giá chất lượng của hai phương pháp này, chúng tôi tiến thử nghiệm trên 7 bài báo tin tức. Chúng tôi nhờ hai nhóm khác nhau thực hiện chọn các câu quan trọng từ 7 bài báo tin tức này. Sau đó chúng tôi tổng hợp lại và chọn ra những câu tốt nhất. Những câu được chọn này sẽ được sử dụng để đối chiếu với những câu được chọn theo hai phương pháp đã trình bày ở trên. Chúng tôi sử dụng độ đo Percision-Recall (P-R) [4.4.1.].
Kết quả như sau:
Tên tài liệu Mô hình thống kê Mô hình Markov ẩn
P R F P R F Test3 0.25 0.2 0.222 0.75 0.6 0.666 Test5 0.75 0.6 0.666 1 0.8 0.89 Test7 0.6 0.6 0.6 0.8 0.8 0.8 Test8 0.75 0.6 0.66 0.75 0.6 0.66 Test9 0.4 0.4 0.4 0.6 0.6 0.6 Test10 0.75 0.6 0.66 0.5 1 0.66 Test11 0.2 0.2 0.2 0.4 0.4 0.4 TB 0.528 0.457 0.487 0.686 0.686 0.668
Bảng 4. 2. Kết quả thử nghiệm mô hình thống kê mà Markov ẩn
Dạng biểu đồ:
Từ kết quả thu được chúng ta có thể thấy ngay rằng sử dụng mô hình Markov cho chất lượng cao hơn so với phương pháp thống kê. Tuy nhiên, phương pháp thống kê với việc áp dụng cách tính trọng số mới cũng cho chất lượng khá tốt.
Theo như những kết quả thực hiện sinh dữ liệu huấn luyện bằng mô hình Markov ẩn với tiếng Anh [22]. thì chất lượng đạt khoảng 90%. Tuy nhiên, khi thực hiện giải thuật này với tiếng Anh thì họ sử dụng bộ từ điển ngữ nghĩa WordNet để xác định các từ đồng nghĩa cho những từ mà xuất hiện trong bản tóm lược nhưng không xuất hiện trong tài liệu gốc. Có lẽ đó cũng chính là lý do mà chương trình chúng tôi cài đặt có chất lượng chưa thật sự cao. Nếu có bộ từ điển ngữ nghĩa cho tiếng Việt như WordNet tiếng Anh thì chắc chắn chất lượng sẽ còn tốt hơn nữa. Tuy nhiên, với chất lượng thu được như vậy cũng có thể chấp nhận được, giải quyết được vấn đề nan giải là cần một bộ dữ liệu đủ lớn
phục vụ cho các phương pháp học máy có giám sát.
4.3. Tự động tóm tắt văn bản
Trong phần này chúng tôi sẽ trình bày chi tiết ba phương pháp thực hiện tự động tóm tắt văn bản. Một phương pháp thống kê dựa vào độ đo TF-IDF, phương pháp thứ hai sử dụng kết hợp một số phương pháp heuristics và cuối cùng là một phương pháp học máy.
4.3.1. Tự động tóm tắt văn bản sử dụng độ đo TF-IDF
4.3.1.1. Độ đo TF-IDF
Độ đo TF-IDF được sử dụng rộng rãi trong các hệ thống IR, nó được sử dụng để đánh giá mức độ liên quan giữa hai tài liệu trong một tập tài liệu. Độ đo TF-IDF dựa trên nhận xét: Trong một tập các văn bản, khi xét riêng một văn bản thì một từ (term) càng quan trọng nếu
nó xuất hiện nhiều trong văn bản đó và xuất hiện ít trong các văn bản còn lại.
Giả sử chúng ta có một tập gồm N tài liệu, khi đó độ đo TF-IDF của từ thứ i trong tài liệu thứ j trong số N tài liệu được tính theo công