29 Danh mục các từ viết tắt và thuật ngữ Từ viết tắt Mô tả VPLK Văn phạm liên kết là một lý thuyết về cú pháp của Davy Temperley và Daniel Sleator mà xây dựng mối quan hệ giữa các cặp
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
Nguyễn Chí Công
GÁN NHÃN TỪ LOẠI TIẾNG VIỆT QUA PHÂN TÍCH CÚ PHÁP LIÊN KẾT
Chuyên ngành: Công nghệ thông tin
LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS Nguyễn Thị Thu Hương
Hà Nội – 2015
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan luận văn này hoàn toàn do tôi thực hiện, không sao chép toàn văn của
bất kỳ công trình nghiên cứu khoa học, tài liệu hay luận văn nào khác Các kết quả được sử
dụng trong luận văn là trung thực và đều được dẫn nguồn
Nếu có điều gì sai tôi xin hoàn toàn chịu trách nhiệm
Tác giả luận văn
Nguyễn Chí Công
Trang 3Em xin được gửi lời cảm ơn đến TS Nguyễn Thị Thu Hương - Bộ môn Khoa học máy tính, viện Công nghệ Thông tin & Truyền thông, trường Đại học Bách Khoa Hà Nội đã hết lòng giúp đỡ, hướng dẫn và chỉ dạy tận tình trong quá trình em làm luận văn
Cuối cùng, em xin được gửi lời cảm ơn chân thành tới gia đình, bạn bè đã quan tâm, động viên, đóng góp ý kiến và giúp đỡ trong quá trình học tập, nghiên cứu và hoàn thành đồ
Trang 4MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
Danh mục hình vẽ 4
Danh mục các bảng 4
Danh mục các từ viết tắt và thuật ngữ 4
CHƯƠNG I: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI 5
1 Giới thiệu 5
2 Gán nhãn từ loại 6
3 Phương pháp nghiên cứu 6
CHƯƠNG II: MỘT SỐ PHƯƠNG PHÁP GÁN NHÃN TỪ LOẠI TIẾNG VIỆT 7 1 Phương pháp học máy thống kê 7
2 Phương pháp dựa trên mô hình xác suất 9
3 Phương pháp dựa trên văn phong 10
CHƯƠNG III: VĂN PHẠM LIÊN KẾT 13
1 Các khái niệm cơ bản về Văn phạm liên kết 13
2 Phân tích cú pháp dựa trên Văn phạm liên kết 19
3 Văn phạm liên kết cho Tiếng Việt 30
CHƯƠNG IV: GÁN NHÃN TỪ DỰA TRÊN VĂN PHẠM LIÊN KẾT 44
1 Tiền xử lý 44
2 Gán nhãn từ dựa trên phân tích cú pháp liên kết 44
3 Thử nghiệm trên bộ ngữ liệu VietTreebank 45
CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 50
1 Kết luận 50
2 Hướng phát triển 52
TÀI LIỆU THAM KHẢO 53
Trang 54
Danh mục hình vẽ
Hình 1 Mô hình của phương pháp gán nhãn từ loại dựa trên văn phong 11
Hình 2: Các yêu cầu liên kết 13
Hình 3: Câu đúng ngữ pháp 14
Hình 4: Câu sai ngữ pháp 15
Hình 5: Liên kết cho câu "the cat chased a snake" 15
Hình 6: Liên kết cho câu "the big snake the black cat chased bit Mary" 16
Hình 7: Thuật toán phân tích 20
Hình 8: Lời giải cục bộ 21
Hình 9: Lời giải có thể được sinh ra hai lần 24
Hình 10 Thử nghiệm gán nhãn từ dựa trên văn phạm liên kết 45
Hình 11 Quan hệ giữa số kết quả phân tích trung bình và số từ trong một câu 48
Hình 12 Quan hệ giữa thời gian phân tích trung bình với số từ trong một câu 48
Danh mục các bảng Bảng 1: Ví dụ của một từ điển 15
Bảng 2: Từ điển phức tạp hơn 16
Bảng 3: Số lượng các dạng tuyển sau mỗi lần lược tỉa 27
Bảng 4 Số lượng các dạng tỉa sau khi lược tỉa và lược tỉa mạnh 29
Danh mục các từ viết tắt và thuật ngữ
Từ viết tắt Mô tả
VPLK Văn phạm liên kết là một lý thuyết về cú pháp của Davy Temperley và
Daniel Sleator mà xây dựng mối quan hệ giữa các cặp từ thay vì các cấu thành trong một cấu trúc phân cấp dạng cây [9]
CRFs Condictional Random Fields Một phương pháp áp dụng để gán nhãn từ loại
tiếng Việt
HMM Hidden Markov Model - Mô hình Markov ẩn Là một mô hình thống kê,
được áp dụng trong rất nhiều lĩnh vực, trong đó có xử lý ngôn ngữ tự nhiên VLSP Một đề tài cấp nhà nước về xử lý ngôn ngữ tự nhiên Tiếng Việt
Treebank Ngân hàng các câu có chú giải cú pháp của một ngôn ngữ Với ngôn ngữ
tiếng Việt gọi là VietTreebank
Trang 6CHƯƠNG I: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI
1 Giới thiệu
Trong những năm gần đây, do nhu cầu lớn về tìm kiếm, khai phá và xử lý thông tin tiếng Việt, các vấn đề xử lý tiếng Việt ngày càng nhận được nhiều quan tâm từ cộng đồng nghiên cứu trong và ngoài nước [Socbay, Bamboo, Xalo, VLSP, CocCoc …]
Chuỗi quá trình xử lý một văn bản tiếng Việt có thể chia ra các bước sau:
Phân tích hình thái: tiền xử lý tách câu, tách từ, gán nhãn từ loại,
Trong luận văn này, tôi sẽ nghiên cứu, thử nghiệm và đánh giá một phương pháp gán nhãn từ loại mới, đó là sử dụng Văn phạm liên kết (VPLK) Nội dung chính của luận văn như sau:
Chương 1: Trình bày giới thiệu luận văn
Chương 2: Trình bày về các phương pháp gán nhãn từ loại tiếng Việt đã có
Chương 3: Nói về các khái niệm của VPLK và VPLK cho tiếng Việt
Chương 4: Trình bày các kết quả thử nghiệm gán nhãn từ loại cho tiếng Việt qua phân tích cú pháp liên kết với bộ dữ liệu của VietTreebank
Chương 5: Kết luận và hướng phát triển
Trang 76
2 Gán nhãn từ loại
Gán nhãn từ loại là việc xác định các chức năng ngữ pháp của từ trong câu Đây là bước
cơ bản trước khi phân tích sâu văn phạm hay các vấn đề xử lý ngôn ngữ phức tạp khác
Thông thường, một từ có thể có nhiều chức năng ngữ pháp, ví dụ: trong câu “con ngựa đá 1
đá 2 con ngựa đá 3”, cùng một từ “đá” nhưng từ thứ nhất và thứ ba giữ chức năng ngữ pháp là danh từ, nhưng từ thứ hai lại là động từ trong câu
Một số hướng tiếp cận chính trong gán nhãn từ loại tiếng Anh bao gồm: gán nhãn dựa trên
mô hình Markov ẩn (HMM); các mô hình dựa trên bộ nhớ (Daelemans, 1996) ; mô hình dựa trên luật (Transformation Based Learning, Brill, 1995); Maximum Entropy; cây quyết định (Schmid, 1994a); mạng nơ-ron (Schmid, 1994b), học máy v.v Gần đây có một phương pháp mới xuất hiện đó là dựa vào văn phạm liên kết
Trong khuôn khổ thời gian thực hiện luận văn thạc sĩ, tôi sẽ trình bày các kết quả nghiên cứu, và đánh giá thử nghiệm việc phân tích các câu văn bản tiếng Việt bằng Văn phạm liên kết trên bộ dữ liệu có sẵn
3 Phương pháp nghiên cứu
Tìm hiểu các phương pháp gán nhãn từ loại đã được áp dụng cho tiếng Việt:
Phương pháp dựa trên học máy thống kê: phương pháp Entropy cực đại (Maxent),
và phương pháp CRFs [6]
Phương pháp dựa trên văn phong tiếng Việt [3]
Phương pháp dựa trên tính toán xác suất [3], [7]
Tìm hiểu các khái niệm về Văn phạm liên kết nói chung và Văn phạm liên kết cho tiếng Việt nói riêng Cài đặt bộ gán nhãn từ loại cho tiếng Việt và thử nghiệm với bộ ngữ liệu VietTreebank
Trang 8CHƯƠNG II: MỘT SỐ PHƯƠNG PHÁP GÁN NHÃN TỪ
LOẠI TIẾNG VIỆT
Phần này của luận văn tập trung giới thiệu một số phương pháp gán nhãn từ loại điển hình đang được nghiên cứu và áp dụng cho tiếng Việt và đã đạt được các kết quả khả quan Đó là các phương pháp: học máy thống kê [6], phương pháp dựa trên tính toán xác suất [3][7] và phương pháp dựa trên văn phong [3]
1 Phương pháp học máy thống kê
Trong các phương pháp gán nhãn dựa trên học máy thống kê, có 2 phương pháp đã được
áp dụng cho tiếng Việt đó là: phương pháp cực đại hóa Entropy (Maximum Entropy), và Condictional Random Fields (CRFs) [6]
1.1 Phương pháp cực đại hóa Entropy (Maximum Entropy)
Tư tưởng chính của Maximum Entropy là "ngoài việc thỏa mãn một số ràng buộc nào đó thì mô hình càng đồng đều càng tốt" Để rõ hơn về vấn đề này, ta hãy cùng xem xét bài toán phân lớp gồm có 4 lớp Ràng buộc duy nhất mà chúng ta chỉ biết là trung bình 40% các tài liệu chứa từ "professor" thì nằm trong lớp faculty Trực quan cho thấy nếu có một tài liệu chứa từ "professor" chúng ta có thể nói có 40% khả năng tài liệu này thuộc lớp faculty, và 20% khả năng cho các khả năng còn lại (thuộc một trong 3 lớp còn lại)
Mặc dù maximum entropy có thể được dùng để ước lượng bất kì một phân phối xác suất nào, chúng ta xem xét khả năng maximum entropy cho việc gán nhãn dữ liệu chuỗi Nói cách khác, ta tập trung vào việc học ra phân phối điều kiện của chuỗi nhãn tương ứng với chuỗi (xâu) đầu vào cho trước
Các Ràng buộc và Đặc trưng
Trong maximum entropy, người ta dùng dữ liệu huấn luyện để xác định các ràng buộc trên phân phối điều kiện Mỗi ràng buộc thể hiện một đặc trưng nào đó của dữ liệu huấn luyện Mọi hàm thực trên chuỗi đầu vào và chuỗi nhãn có thể được xem như là đặc trưng fi(o,s) Maximum Entropy cho phép chúng ta giới hạn các phân phối mô hình lý thuyết gần giống nhất các giá trị kì vọng cho các đặc trưng này trong dữ liệu huấn luyện D Vì thế người
Trang 9Một số phương pháp huấn luyện mô hình từ dữ liệu học bao gồm: IIS (improved iterative scaling), GIS, L-BFGS, và so forth
1.2 Phương pháp Condictional Random Fields (CRFs)
CRFs là mô hình trạng thái tuyến tính vô hướng (máy trạng thái hữu hạn được huấn luyện
có điều kiện) và tuân theo tính chất Markov thứ nhất CRFs đã được chứng minh rất thành công cho các bài toán gán nhãn cho chuỗi như tách từ, gán nhãn cụm từ, xác định thực thể, gán nhãn cụm danh từ
Gọi o = (o1, o2, , oT) là một chuỗi dữ liệu quan sát cần được gán nhãn Gọi S là tập trạng thái, mỗi trạng thái liên kết với một nhãn l∈L Đặt s = (s1, s2, , sT) là một chuỗi trạng thái nào đó, CRFs xác định xác suất điều kiện của một chuỗi trạng thái khi biết chuỗi quan sát như sau:
Với:
Trang 10Gọi Z(o) là thừa số chuẩn hóa trên toàn bộ các chuỗi nhãn có thể, f k xác định một hàm đặc trưng và λk là trọng số liên kết với mỗi đặc trưng f k Mục đích của việc học máy với CRFs là
ước lượng các trọng số này Ở đây, ta có hai loại đặc trưng f k: đặc trưng trạng thái (per-state)
và đặc trưng chuyển (transition)
Ở đây δ là Kronecker-δ Mỗi đặc trưng trạng thái (2) kết hợp nhãn l của trạng thái hiện tại
st và một vị từ ngữ cảnh - một hàm nhị phân xk(o,t) xác định các ngữ cảnh quan trọng của
quan sát o tại vị trí t Một đặc trưng chuyển (3) biểu diễn sự phụ thuộc chuỗi bằng cách kết
hợp nhãn l’ của trạng thái trước st-1 và nhãn l của trạng thái hiện tại s t
Người ta thường huấn luyện CRFs bằng cách làm cực đại hóa hàm likelihood theo dữ liệu huấn luyện sử dụng các kĩ thuật tối ưu như L-BFGS Việc lập luận (dựa trên mô hình đã học)
là tìm ra chuỗi nhãn tương ứng của một chuỗi quan sát đầu vào Đối với CRFs, người ta thường sử dụng thuật toán qui hoạch động điển hình là Viterbi để thực hiện lập luận với dữ liệu mới
2 Phương pháp dựa trên mô hình xác suất
Ý tưởng của phương pháp gán nhãn từ loại xác suất là xác định phân bố xác suất trong không gian kết hợp giữa dãy các từ Sw và dãy các nhãn từ loại St Sau khi đã có phân bố xác suất này, bài toán loại bỏ nhập nhằng từ loại cho một dãy các từ được đưa về bài toán lựa chọn một dãy từ loại sao cho xác suất điều kiện P(St | Sw) kết hợp dãy từ loại đó với dãy từ đã cho đạt giá trị lớn nhất [3], [7]
Theo công thức xác suất Bayes ta có: P(St | Sw) = P(Sw | St).P(St)/P(Sw) Ở đây dãy các từ
Sw đã biết, nên thực tế chỉ cần cực đại hoá xác suất P(Sw | St).P(St)
Với mọi dãy St = t1.t2 tN và với mọi dãy Sw = w1w2 wN:
P(w1w2 wN | t1t2 tN) = P(w1 | t1t2 tN) P(w2 | w1,t1t2 tN) P(wN | w1 wN-1, t1t2 tN)
Trang 11t1 ti-1)= P(ti | ti-k ti-1) Nói chung, các bộ gán nhãn thường sử dụng giả thiết k bằng 1 (bigram) hoặc 2 (trigram)
Như vậy mô hình xác suất này tương đương với một mô hình Markov ẩn, trong đó các trạng thái ẩn là các nhãn từ loại (hay các dãy gồm k nhãn nếu k > 1), và các trạng thái hiện (quan sát được) là các từ trong từ điển Với một kho văn bản đã gán nhãn mẫu, các tham số của mô hình này dễ dàng được xác định nhờ thuật toán Viterbi
3 Phương pháp dựa trên văn phong
Văn phong là cách viết văn của mỗi người, mỗi thể loại văn bản Phương pháp gán nhãn
từ loại dựa trên văn phong thực chất là căn cứ vào cách thể hiện của văn bản trong một ngữ cảnh cụ thể để xác định từ loại cho các từ, điều này bao hàm việc xác định phải đảm bảo các luật văn phạm của các từ trong câu [3]
Ví dụ: Trong buổi họp, anh 1 Nguyễn Văn Thành đã phát biểu về … một cách tích cực Tuy nhiên, anh 2 không tập trung vào vấn đề chính của cuộc họp
Như vậy, từ anh trong đoạn văn bản trên đóng hai vai trò ngữ pháp, anh 1 là Danh từ loại
thể (Nt) và anh 2 là Đại từ xưng hô (Pp) Và Nguyễn Văn Thành đóng vai trò ngữ pháp là
Danh từ riêng (Np)
Trang 12Trên cơ sở dựa vào cách thể hiện của văn bản trong một ngữ cảnh cụ thể như ví dụ trên và ngữ pháp tiếng Việt, chúng ta có thể xây dựng một hệ thống các luật mà dựa vào đó chúng ta
có thể xác định được từ loại cho các từ trong văn bản trong trường hợp không bị nhập nhằng
Mô hình của phương pháp gán nhãn từ loại dựa trên văn phong được mô phỏng như sau:
Hình 1 Mô hình của phương pháp gán nhãn từ loại dựa trên văn phong
Về ý tưởng của phương pháp gán nhãn từ loại dựa trên văn phong được diễn đạt thông qua thủ tục như sau:
- Áp dụng các luật xác định danh từ riêng
- Trên cơ sở các danh từ riêng được xác định, tiếp tục áp dụng các luật để xác định 48 nhãn từ loại còn lại
Như trong ví dụ: Trong buổi họp, anh 1 Nguyễn Văn Thành đã phát biểu về … một cách tích cực Tuy nhiên, anh 2 không tập trung vào vấn đề chính của cuộc họp Thủ tục nhận diện
được diễn đạt như sau:
1 Các luật xác định danh từ riêng Nguyễn Văn Thành
2 Các luật xác định danh từ loại thể anh 1
3 Các luật xác định đại từ nhân xưng anh 2
4 Các luật xác định từ loại khác …
Trang 1312
Trên đây tôi đã giới thiệu 3 phương pháp gán nhãn từ loại hiện đã áp dụng cho tiếng Việt Phần tiếp theo của luận văn, tôi sẽ giới thiệu phương pháp gán nhãn từ tiếng Việt dựa trên phân tích cú pháp liên kết hay văn phạm liên kết (VPLK)
Văn phạm liên kết (VPLK) [9] là một lý thuyết về cú pháp của Davy Temperley và Daniel Sleator mà xây dựng mối quan hệ giữa các cặp từ thay vì các cấu thành trong một cấu trúc phân cấp dạng cây Có hai tham số cơ bản: hướng và khoảng cách
Ví dụ, trong ngôn ngữ Chủ ngữ-Động từ-Tân ngữ (CĐT) như tiếng Anh, động từ sẽ hướng về bên trái để tạo liên kết chủ ngữ và bên phải để tạo liên kết tân ngữ Danh từ sẽ tìm bên phải để hoàn thiện liên kết chủ ngữ và bên trái cho liên kết tân ngữ
Tương tự, trong ngôn ngữ Chủ ngữ-Tân ngữ-Động từ (CTĐ) như tiếng Ba Tư, động từ sẽ hướng về bên trái để tạo liên kết tân ngữ và xa hơn để tạo liên kết chủ ngữ Danh từ sẽ tìm bên phải để hoàn thiện cả liên kết chủ ngữ và tân ngữ
Ý tưởng gán nhãn từ loại dựa trên VPLK là dựa vào chính các liên kết được tạo thành khi phân tích cú pháp Việc gán nhãn và phân tích cú pháp được thực hiện đồng thời Do vậy có thể dùng bộ phân tích cú pháp để gán nhãn từ
Trang 14CHƯƠNG III: VĂN PHẠM LIÊN KẾT
1 Các khái niệm cơ bản về Văn phạm liên kết
1.1 Giới thiệu
Phần lớn các câu trong ngôn ngữ tự nhiên có tính chất là nếu các cung được vẽ liên kết các cặp từ có liên hệ với nhau thì các cung này không cắt nhau Hiện tượng này, mà ta gọi là tính phẳng, là nền tảng của các VPLK, hệ thống ngôn ngữ hình thức [1]
Một VPLK bao gồm một tập các từ (các ký hiệu kết thúc của bộ văn phạm), mỗi từ có một yêu cầu liên kết Một dãy các từ là một câu của ngôn ngữ được định nghĩa bởi bộ văn phạm nếu tồn tại một cách để vẽ các cung (mà chúng ta sẽ gọi là các liên kết) giữa các từ sao cho thoả mãn các điều kiện sau: [1]
Tính phẳng (planarity): các liên kết không giao nhau (khi được vẽ phía trên các từ)
Tính kết nối (connectivity): các liên kết có khả năng kết nối tất cả các từ trong câu
Trang 1514
Mỗi một hộp được gán nhãn và có hình dạng phức tạp là một kết nối Một kết nối được thoả mãn bằng cách “cắm” nó vào một kết nối tương thích (biểu thị qua hình của nó) Nếu hướng chiếu của một kết nối được vẽ quay về phía bên phải, thì kết nối tương thích với nó phải ở phía bên phải và quay về bên trái Chỉ có một trong các kết nối gắn vào chấm đen được thoả mãn (các cái còn lại, nếu có, không được dùng) Do đó, “cat” yêu cầu một kết nối D về phía bên trái, và hoặc một kết nối O về phía bên trái hoặc một kết nối S về phía bên phải Nối một cặp kết nối với nhau tương ứng với việc vẽ một liên kết giữa cặp từ đó
Biểu đồ sau chỉ ra các yêu cầu liên kết được thoả mãn như thế nào trong câu “The cat chased a snake”
Hình 3: Câu đúng ngữ pháp
(Các kết nối không dùng ở đây được loại bỏ) Dễ dàng nhận thấy rằng câu “Mary chased the cat” và “the cat ran” cũng tạo thành câu của bộ văn phạm này Dãy từ: “the Mary chased cat” không ở trong ngôn ngữ này Bất kỳ cố găng để thoả mãn các yêu cầu liên kết dẫn tới sự
vi phạm một trong ba luật Đây là một trong số đó:
Trang 16Hình 4: Câu sai ngữ pháp
Tương tự “ran Mary” và “cat ran chased” cũng không nằm trong ngôn ngữ này
Một tập các liên kết cho thấy một dãy các từ nằm trong ngôn ngữ của VPLK được gọi là một cách liên kết Từ bây giờ chúng ta sẽ sử dụng biểu đồ đơn giản hơn để biểu diễn các cách liên kết Đây là một hình thức được đơn giản hoá của biểu đồ chỉ ra rằng câu “the cat chased
a snake” là một phần trong ngôn ngữ này:
Hình 5: Liên kết cho câu "the cat chased a snake"
Chúng ta có một ký hiệu ngắn gọn và có thể đọc được bằng máy tính để biểu diễn từ điển của các yêu cầu liên kết Từ điển sau mã hoá các yêu cầu liên kết của ví dụ trên
Yêu cầu liên kết của mỗi từ được biểu diễn bằng một công thức sử dụng toán tử “&” và
“or”, dấu ngoặc và tên các kết nối Hậu tố + hoặc – sau mỗi tên kết nối biểu thị hướng (tương đối so với từ được định nghĩa) mà kết nối tương xứng (nếu có) phải nằm Toán tử & của hai
Trang 1716
công thức được thoả mãn nếu cả hai công thức thoả mãn Toán tử or của hai công thức yêu cầu có đúng một công thức thoả mãn Thứ tự của các toán hạng của một toán tử & là có ý nghĩa Toán hạng càng xa về bên trái trong cách biểu diễn, từ nó liên kết tới càng gần Do đó, khi sử dụng “cat” là đối tượng, từ hạn định (mà nó kết nối tới bằng kết nối D-) phải gần hơn động từ (mà nó kết nối tới bằng kết nối O-)
Từ điển sau biểu diễn một VPLK phức tạp hơn (Ký hiệu “{exp}” có nghĩa là biểu thức exp là tuỳ chọn, và “@A-“ có nghĩa là một hoặc nhiều kết nối loại A có thể gắn vào đây.)
Hình 6: Liên kết cho câu "the big snake the black cat chased bit Mary"
Trong trường hợp này (cũng như trường hợp ở trên) có duy nhất một cách liên kết thoả mãn mọi yêu cầu liên kết
Trang 181.2 Các văn phạm liên kết đơn giản
Từ điển Văn phạm liên kết (VPLK) bao gồm một tập hợp các phần tử, mỗi phần tử định nghĩa các yêu cầu liên kết của một hoặc nhiều từ Các yêu cầu này được xác định bởi một công thức của các kết nối được kết hợp với nhau bằng các toán tử nhị phân & và or Không làm mất tính tổng quát chúng ta có thể quy ước rằng mỗi một kết nối đơn giản là một xâu ký
tự kết thúc bởi dấu + hoặc -
Khi một liên kết kết nối tới một từ, nó liên quan đến một trong các kết nối trong công thức của từ đó, và khi đó được gọi là thoả mãn kết nối đó Không có hai liên kết có thể thoả mãn trong cùng một kết nối Các kết nối ở 2 phía đầu của một liên kết phải có tên khớp với nhau,
và kết nối bên trái phải kết thúc bởi + và kết nối bên phải phải kết thúc bởi - Trong VPLK đơn giản, hai kết nối là khớp nếu và chỉ nếu xâu của chúng là như nhau (không tính + hoặc -
ở cuối) Một dạng tổng quát hơn của việc khớp sẽ được giới thiệu sau
Các kết nối được thoả mãn bởi các liên kết phải thoả mãn toàn bộ công thức Chúng ta định nghĩa tính thoả mãn một công thức một cách đệ quy Để thoả mãn toán tử & của hai công thức, cả hai đều phải được thoả mãn Để thoả mãn toán tử or của hai công thức, một trong hai công thức phải được thoả mãn, và không một kết nối nào trong công thức còn lại có thể được thoả mãn Để tiện lợi đôi khi ta dùng công thức rỗng (“( )”) , mà được thoả mãn bằng cách không kết nối tới liên kết nào
Một dãy các từ là một câu trong ngôn ngữ được định nghĩa bởi bộ ngôn ngữ nếu tồn tại một cách để vẽ các liên kết giữa các từ sao cho thoả mãn công thức của mỗi từ và các luật sau:
Tính phẳng: Các liên kết được vẽ bên trên câu và không giao nhau
Tính kết nối: Các liên kết có thể kết nối mọi từ trong câu với nhau
Tính thứ tự: Khi các kết nối của một công thức được duyệt từ trái qua phải, các từ mà
nó kết nối tới tiến từ gần ra xa Nói cách khác, xét một từ, và xét hai liên kết kết nối từ
đó tới các từ về phía trái của nó Liên kết kết nối tới từ gần hơn (liên kết ngắn hơn) phải thoả mãn một kết nối xuất hiện về phía trái (trong công thức) của kết nối trong các từ khác Tương tự, một liên kết về phía phải phải thoả mãn một kết nối về phía trái (trong công thức) của một liên kết xa hơn về bên phải
Tính loại trừ: không có hai liên kết có thể kết nối cùng một cặp từ
Trang 19((L1, L2,…, Lm) (Rn, Rn-1,…, R1)) Trong đó L1, L2,…, Lm là các kết nối mà phải nối về phía trái và Rn, Rn-1,…, R1 là các kết nối phải nối về phía phải Số lượng các kết nối trong từng danh sách có thể bằng 0 Dấu + hoặc – theo sau có thể loại bỏ khỏi tên của kết nối khi sử dụng dạng tuyển, vì hướng được ngầm định trong dạng của dạng tuyển
Để thoả mãn các yêu cầu liên kết của một từ, một trong các dạng tuyển phải được thoả mãn (và không có liên kết nào có thể nối tới bất kỳ dạng tuyển nào khác) Để thoả mãn một dạng tuyển, tất cả các liên kết của nó phải được thoả mãn bởi các liên kết thích hợp Các từ
mà L1,L2,… được liên kết tới từ đứng bên trái của từ hiện tại, và tăng đơn điệu về khoảng cách tính từ từ hiện tại Các từ mà R1,R2,… được liên kết tới từ đứng bên phải của từ hiện tại,
và tăng đơn điệu về khoảng cách tính từ hiện tại
Rất dễ dàng để dịch một VPLK ở dạng tuyển về dạng chuẩn Điều này có thể thực hiện được một cách đơn giản bằng cách viết lại mỗi dạng tuyển thành
(L1 & L2 & … & Lm & R1 & R2 & … & Rn)
và kết hợp mọi dạng tuyển với nhau với toán tử or để tạo ra công thức thích hợp
Cũng rất dễ dàng để dịch một công thức từ một tập các dạng tuyển Điều này được thực hiện bằng cách liệt kê tất cả các cách mà công thức có thể thoả mãn Ví dụ, công thức:
Trang 20(A- or ( )) & D- & (B+ or ( )) & (O- or S+) tương ứng với 8 dạng tuyển sau:
((A,D) (S,B)) ((A,D,O) (B)) ((A,D) (S)) ((A,D,O) ( )) ((D) (S,B)) ((D,O) (B)) ((D) (S)) ((D,O) ( ))
Thuật toán được dễ dàng giải thích nhất bằng cách chỉ ra một cấu trúc văn phạm để biểu diễn các dạng tuyển Một dạng tuyển d có các con trỏ trỏ tới hai danh sách liên kết các kết nối Các con trỏ này được ký hiệu là left[d] và right[d] Nếu c là một kết nối, thì next[c] ký hiệu kết nối tiếp theo sau c trong danh sách của nó Trường tiếp theo của con trỏ cuối cùng trong danh sách có giá trị bằng NIL
Trang 21Hình 7: Thuật toán phân tích
Làm sao chúng ta mở rộng phần lời giải cục bộ cho vùng nằm giữa L và R? (vùng này sẽ được ký hiệu là (L,…,R)) Đầu tiên, nếu không có từ nào trong vùng này (nghĩa là L = R + 1) thì phần lời giải cục bộ mà chúng ta xây dựng sẽ không đúng nếu hoặc l ≠ NIL hoặc r ≠ NIL Nếu l = r = NIL thì vùng này được chấp nhận và chúng ta có thể tiếp tục xây dựng phần lời giải còn lại
Giả sử rằng vùng nằm giữa L và R chứa ít nhất một từ Để nối các từ trong vùng này đến phần còn lại của câu thì phải có ít nhất một liên kết từ L đến một vài từ trong vùng, hoặc từ R đến một vài từ trong vùng (vì không có từ nào trong vùng có thể liên kết đến một từ nằm ngoài khoảng [L,…,R], và phải có gì đó kết nối các từ này đến phần còn lại của câu)
Vì kết nối l’ đã được sử dụng trong phần lời giải đã được xây dựng, phần lời giải này phải
sử dụng các kết nối còn lại trong phần đoạn chứa l’ Điều tương tự với r’ Các kết nối của các dạng tuyển này mà liên quan đến vùng (L,…,R) nằm trong danh sách bắt đầu bởi l và r (Việc
Trang 22dùng các kết nối khác trong các dạng tuyển này sẽ vi phạm yêu cầu về thứ tự) Thực tế, tất cả các kết nối trong các danh sách này phải được sử dụng trong vùng này để có được lời giải thoả đáng
Giả sử, hiện tại l không bằng NIL Chúng ta biết rằng kết nối này phải liên kết đến một vài dạng tuyển trên một vài từ trong vùng (L,…,R) (Nó không thể kết nối đến R vì luật loại trừ) Thuật toán thử mọi từ và dạng tuyển có thể Giả sử thuật toán tìm đến một từ W và một dạng tuyển d trên W mà kết nối l khớp với left[d] Chúng ta có thể thêm liên kết này tới phân lời giải cục bộ Tình huống được miêu tả trong biểu đồ sau:
Hình 8: Lời giải cục bộ
Làm sao chúng ta biết được liệu phần lời giải cục bộ này có thể dẫn tới lời giải toàn bộ? Chúng ta thực hiện điều này bằng cách giải hai bài toán giống với bài toán xuất phát Cụ thể, chúng ta tìm xem liệu lời giải có thể mở rộng tra cho từ trong vùng (L,…,W) bằng cách sử dụng danh sách các kết nối bắt đầu từ next[l] và next[left[d]] Chúng ta cũng tìm xem lời giải
có thể mở rộng ra cho từ trong vùng (W,…,R) bằng cách sử dụng danh sách các kết nối bắt đầu từ right[d] và r Để ý rằng trong trường hợp sau, bài toán chúng ta giải quyết nhìn bề ngoài có vẻ khác: các từ biên chưa được kết nối bởi một liên kết Sự khác biệt này thực ra không dẫn tới hệ quả khác bởi vì cặp liên kết (L tới R và L tới W) đóng vai trò liên kết trực tiếp từ W tới R: (1) chúng tách vùng (W,…,R) khỏi các từ khác, và (2) chúng kết nối các từ
W và R với nhau
Trang 2322
Chúng ta cần xem xét một khả năng khác Đó là có thể có một lời giải có một liên kết giữa
L và W và một liên kết giữa W và R (Kết quả này có trong lời giải mà đồ thị từ/liên kết là tuần hoàn Thuật toán giải quyết trường hợp này bằng cách cố gắng tạo một liên kết giữa right[d] và r Nếu hai kết nối này khớp, thuật toán thực hiện lời gọi đệ quy thứ ba, giải quyết bài toán thứ ba giống như bài toán ban đầu Trong bài toán này khoảng từ là (W,…,R) và các danh sách các kết nối cần thoả mãn bắt đầu từ next[right[d]] và left[r]
Chúng ta có phân tích tương tự để giải quyết trường hợp l bằng NIL
Bây giờ chúng ta có thể miêu tả thuật toán một cách hình thức hơn Trong giả lệnh dưới đây, hàm boolean MATCH nhận hai kết nối và trả về true nếu tên của các kết nối này khớp,
và false nếu ngược lại
Trang 247 do for each disjunct d of word W
17 if rightcount > 0 and l = NIL
18 then total ← total + rightcount * COUNT(L, W,
số Đây là số cách khác nhau để vẽ các liên kết giữa các kết nối trên các từ nằm giữa L và R,
và giữa các kết nối trong danh sách trỏ bởi l và r sao cho các liên kết này thoả mãn các điều kiện sau:
Trang 2524
1 Chúng là phẳng (chúng không giao nhau), chúng cũng thoả mãn luật thứ tự và luật loại trừ
2 Không có liên kết nào từ một kết nối trong danh sách của l đến danh sách của r
3 Các yêu cầu của mỗi từ nằm giữa L và R được thoả mãn bởi các liên kết được lựa chọn
4 Tất cả các kết nối trong danh sách trỏ bởi l và r được thoả mãn
5 Các liên kết hoặc kết nối tất cả các từ [L,…,R] với nhau, hoặc chúng tạo hai vùng liên thông: [L,…,M] và [M+1,…,R] (với M thoả mãn L ≤ M < R)
Dòng 8 đến 18 thực hiện mọi lựa chọn cho từ W trung gian và mọi dạng tuyển trên từ đó Dòng 8 đến 10 gán vào leftcount số cách để hoàn thiện lời giải bằng cách sử dụng liên kết từ
L đến W Dòng 11 đến 13gán vào rightcount số cách để hoàn thiện lời giải bằng cách sử dụng liên kết từ W đến R Tích của hai số này (dòng 14) là số cách mà sử dụng cả hai liên kết Dòng 15 đến 18 giải quyết trường hợp mà chỉ có một cặp từ được liên kết với nhau
Toàn bộ hàm là đối xứng khi đảo từ trái qua phải ngoại trừ lệnh kiểm tra “l = NIL” ở dòng 17 Điều này là cần thiết để đảm bảo rằng mỗi lời giải chỉ được sinh ra đúng một lần Ví
dụ, nếu loại bỏ lệnh này thì lời giải sau sẽ được sinh ra hai lần:
Hình 9: Lời giải có thể được sinh ra hai lần
Khi cố gắng liên kết đoạn [gave,…,kiss] thuật toán sẽ sinh ra lời giải một lần khi từ phân tách (W) là “him” và một lần khi từ phân tách là “a” Vấn đề là tập các liên kết tương tự nhau được sinh ra theo hai hướng khác nhau Nếu l ≠ NIL thì chúng ta biết rằng (nếu có lời giải nào đó) kết nối l phải được sử dụng Lệnh kiểm tra đảm bảo rằng liên kết này được sinh ra trước Do đó lời giải phía trên sẽ được sinh ra chỉ khi từ phân tách là “him”
Trang 26Khi biết rằng COUNT thoả mãn quy luật trên, dễ dàng kiểm tra rằng PARSE trả về số cách để phân tích cho dãy từ Giả sử ta gọi tới COUNT Điều kiện 5 chỉ rằng các liên kết được chọn phải kết nối lại với nhau (Vì r là danh sách rỗng, phải có hai thành phần [0,…,N-1] và [N]) Điều kiện 1 và 2 đảm bảo tính phẳng, loại trừ và thứ tự Cuối cùng, điều kiện 3 đảm bảo tính thoả mãn Mỗi vòng lặp trong vòng lặp chính của PARSE thử sử dụng một dạng tuyển khác nhau trong từ đầu tiên trong câu Vì chỉ có đúng một trong số này được sử dụng trong bất kỳ sự sắp xếp cho phép nào của các liên kết, thuật toán liệt kê mọi khả năng
Thuật toán miêu tả có thời gian chạy trong trường hợp xấu nhất luỹ thừa theo tham số N Thuật toán này có thể dễ dàng chuyển sang thuật toán quy hoạch động hiệu quả bằng cách dùng bảng nhớ Để làm điều này, hàm COUNT được thay đổi theo hai cách Nó chứa kết quả của nó vào một mảng băm (ngay trước khi trả về) Nó cũng được thay đổi sao cho điều đầu tiên nó làm là tra trong bảng băm để xem liệu một lời gọi trước đã tính giá trị cần tính chưa Thời gian chạy bây giờ được giới hạn bởi số các lời gọi đệ quy khác nhau có thể có nhân với thời gian sử dụng của mỗi lần gọi Mỗi lời gọi đệ quy để xác định bởi các con trỏ l và r Chi phí cho lời gọi tương ứng được giới hạn bởi tổng số các dạng tuyển khác trong dãy từ Nếu ta gọi d là số các dạng tuyển và c là số các kết nối, thì thời gian chạy là O(c2d) Với một liên kết văn phạm xác định, d = O(N) và c = O(N), vậy thời gian chạy là O(N3)
Trang 27Tập các dạng tuyển còn lại (sau khi lược tỉa kết thúc) là không phụ thuộc vào thứ tự các bước được áp dụng (Thao tác lược tỉa có tính chất Church-Rosser) Do đó chúng ta chọn một thứ tự mà có thể được thực hiện một cách hiệu quả Sẽ là lý tưởng nếu chúng ta có thể đạt được thời gian chạy cho việc lược tỉa là tuyến tính theo số kết nối
Một dãy các bước duyệt tuần tự qua các từ được thực hiện, lần lượt từ trái qua phải và từ phải qua trái Hai cách duyệt là tương đương, vì vậy miêu tả việc duyệt từ trái qua phải là đủ Việc duyệt xử lý các từ một cách tuần tự, bắt đầu từ từ 1 Xét tình huống sau khi các từ 1,…,W-1 đã được xử lý Một tập các kết nối S được tính Đây là tập các kết nối mà tồn tại trong danh sách phải của các dạng tuyển của các từ 1,…,W mà chưa bị xoá Để xử lý từ W, ta xét từng dạng tuyển d của W lần lượt Với mỗi kết nối c trong danh sách trái của d, chúng ta tìm trong tập S để xem nó có chứa kết nối nào mà khớp với c Nếu một trong các kết nối của
d không khớp với cái nào trong S, thì chúng ta thực hiện bước lược tỉa với d (chúng ta loại bỏ d) Mỗi kết nối phải của từng dạng tuyển còn lại của W bây giờ được kết hợp vào tập S Chúng ta xử lý xong từ W
Nếu (chúng ta lần lượt duyệt từ trái qua phải và phải qua trái) một lần duyệt (sau lần duyệt đầu) không làm gì, thì tất cả các lần duyệt sau sẽ không làm gì Đây là cách mà thuật toán quyết định khi nào dừng