P, S) và xâu nhập vào w = a1a2...an *. Một biểu thức dạng [A X1X2...XkXk+1...Xm,i] là một trạm (item) đối với w nếu A X1X2...Xm là một sản sinh (production) trong P và 0 in. Dấu chấm () giữa Xk và Xk+1 là một siêu ký hiệu (metasymbol) không thuộc về N hay , k = 0 m. GIẢI THUẬT PHÂN TÍCH CÚ PHÁP EARLEY
Đối với mỗi số nguyên j ( 0 j n ), ta sẽ xây
dựng một danh sách các trạm, tạm gọi là bảng (table) : Ij, sao cho [ A , i] là trong bảng Ij với 0 i j nếu và chỉ nếu với và nào đó, ta sẽ có S * A, * a1...ai và * ai+1...aj. Như vậy thành phần thứ hai của trạm và số của bảng mà nằm trong ngoặc là một phần của chuỗi nhập vào, đã được sinh ra từ chuỗi . (1) Nếu S là một sản sinh trong P, ta thêm [S , 0] vào I0. Lặp lại các bước 2 và 3 cho tới khi không còn trạm mới để thêm vào I0. (2) Nếu [B , 0] thuộc I0, ta thêm [A B , 0] cho tất cả các trạm [A B , 0] thuộc I0. (3) Giả sử là [A B , 0] là một trạm trong I0, ta thêm vào I0, cho tất cả các sản sinh trong P có dạng B , trạm [B , 0] (miễn là trạm này chưa có trong I0). Sau khi ta đã xây dựng xong các bảng I0, I1,...,Ij-1, ta tiến hành xây dựng bảng Ij như sau : (4) Với mỗi trạm [B a , i] trong bảng Ij- 1 mà trong đó a = aj, ta thêm [B a , i] tới bảng Ij Lặp lại các bước 5 và 6 cho tới khi không còn trạm mới để thêm vào. (5) Giả sử [A , i] là một trạm trong bảng Ij. Kiểm tra trong bảng Ii xem có những trạm có dạng [B A, k] hay không, với mỗi trạm tìm thấy, ta thêm [B A , k] vào bảng Ij. (6) Giả sử [A B, i] là một trạm trong bảng Ij. Đối với tất mọi sản sinh B trong P, ta thêm [B , j] vào bảng Ij. c. Thuật toán xây dựng cây cú pháp từ danh sách phân tích: Từ danh sách phân tích (các bảng phân tích), ta tiến hành xây dựng dãy phân tích phải (right - parser) để từ đó hình thành cây cú pháp: - Nếu không có trạm có dạng [S , 0] trong bảng I0, thì xem w là không thuộc L(G), chương trình sẽ báo "câu nhập vào không đúng văn phạm của hệ thống" và dừng. - Còn nếu có, thì khởi tạo biến toàn cục với giá trị rỗng và thực hiện hàm R được định nghĩa như sau : R ( [ A , i], j ) (1) Gán giá trị kế tiếp h vào , trong đó h là số thứ tự sản sinh A . (2) Nếu = X1X2...Xm, đặt k = m và l = j. (3a) Nếu Xk , ta trừ k và l đi 1 (3b) Nếu Xk N, ta tìm trạm [Xk , r] trong bảng Ii các số r sao cho [A X1X2...Xk-1...Xm, i ] là thuộc bảng Ir , kế đó thực hiện hàm R với các tham số mới : R ( [ Xk , r ], l ). Trừ k đi 1 và đặt l=r. (4) Lặp lại bước 3 cho tới khi k=0 rồi kết thúc. . CÂU HỎI: Cho văn phạm con của tiếng Anh có tập luật sau : S NP VP S NP VP PREPS NP Det NP3 NP3 Adj NP3 NP3 N NP3 N PREPS PREPS Prep NP2 NP2 Det NP3 VP V • Trong đó : • Det, Adj, Prep, N, V : là các ký hiệu kết thúc (terminal) • S, NP, NP3, NP2, VP, PREPS : là các ký hiệu chưa kết thúc (non-terminal) • Hãy áp dụng giải thuật phân tích Earley trên văn phạm con nói trên để phân tích câu tiếng Anh sau đây : • “ The young student sat in the class. “ o Bảng I0: o S NP VP, 0 o S NP VP PREPS, 0 o NP Det NP3, 0 o Bảng I1: (The) o NP Det NP3, 0 o NP3 Adj NP3, 1 o NP3 N, 1 o NP3 N PREPS, 1 o Bảng I2 : (young) o NP3 Adj NP3, 1 o NP3 Adj NP3, 1 o NP3 N, 2 o NP3 N PREPS, 2 Bảng I3 : (student) NP3 N , 2 NP3 N PREPS, 2 PREPS Prep NP2, 3 NP3 Adj NP3 , 1 NP Det NP3 , 0 S NP VP, 0 S NP VP PREPS, 0 VP V, 3 Bảng I4 : (sat) VP V , 3 S NP VP , 0 * S NP VP PREPS, 0 PREPS Prep NP2, 4 Bảng I5 : (in) PREPS Prep NP2, 4 NP2 Det NP3, 5 Bảng I6 : (the) NP2 Det NP3, 5 NP3 Adj NP3, 6 NP3 N, 6 NP3 N PREPS, 6 Bảng I7 : (class) NP3 N , 6 NP3 N PREPS, 6 PREPS Prep NP2, 7 NP2 Det NP3 , 5 PREPS Prep NP2 , 4 S NP VP PREPS , 0 ** BÀI TẬP VỀ NHÀ: Tương tự như ví dụ trên, hãy phân tích câu: “ An old man sat on the new chair in the house” Hãy dùng giải thuật Earley để phân tích câu nói trên và cho biết câu này có đúng cú pháp theo văn phạm con được cho không ? Nếu đúng, hãy và vẽ cây cú pháp. Nếu sai (có nghĩa là bộ phân tích cú pháp phân tích không được với văn phạm con nói trên), thì chúng ta cần thêm/sửa (những) luật sinh nào cho văn phạm con đó. MỞ RỘNG BÀI HỌC: Đến này, đã có nhiều ý tưởng để cải tiến thuật toán Earley về những phương diện khác nhau: Về phương diện tốc độ: có thuật toán Tomita (1986) là hiệu quả hơn cả. Yêu cầu của 01 đề bài miễn thi là TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN TOMITA [Masaru Tomita (1987), “An efficient Augumented- Context Free Parsing Algorithm”, Computational Linguistics, Vol 13, No.1-2, pg. 31-46]. Về phương diện khử nhập nhằng (khi có nhiều hơn 01 cây được sinh ra), thì người ta dùng văn phạm PCFG (Probabilistic Context-Free Grammar) với mỗi luật sinh đều được gán 01 giá trị xác suất xuất hiện trong thực tế, để từ đó hệ có thể tính được điểm của từng cây cú pháp và chọn được cây tối ưu. Yêu cầu của 01 đề bài là TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN EARLEY VỚI VĂN PHẠM PCFG.