Phương pháp biểu mẫu bình thường của Chomsky: Ý nghĩa hiệu năng của trình phân tích cú pháp CYK?


9

Trình phân tích cú pháp biểu đồ có thể được thực hiện dựa trên mẫu bình thường Chomsky hoặc trực tiếp dựa trên quy tắc sản xuất. Cho đến lúc này giả sử chúng ta có một trình phân tích cú pháp biểu đồ CYK sử dụng dạng bình thường Chomsky. Các nhị phân không được xác định duy nhất. Điều này có ảnh hưởng đến hiệu suất của phân tích biểu đồ CYK. Điều này có thể được khai thác để cải thiện hiệu suất của trình phân tích cú pháp biểu đồ CYK không?


Các cách tiếp cận tạo ra các ngữ pháp có cùng kích thước, phải không? CYK luôn lấp đầy bảng hoàn chỉnh, vì vậy bạn chỉ có thể tăng tốc độ kiểm tra "Có quy tắc phù hợp không?". Do đó, tôi chỉ mong rằng quy tắc sẽ có ảnh hưởng chứ không phải cấu trúc ngữ pháp.
Raphael

Phương pháp sử dụng cho binarization cũng ảnh hưởng đến kích thước của văn phạm, làm ảnh hưởng đến hiệu suất CYK: informatica-didactica.de/cmsmadesimple/... thảo luận một số lựa chọn thay thế để CNF
Max

Câu trả lời:


6

Mặc dù câu trả lời rõ ràng là độ phức tạp cơ bản không thể thay đổi, có thể có các thuật toán tốt hơn hoặc xấu hơn để phân tích chuỗi mà bạn thực sự sẽ gặp phải. Tuy nhiên, có vẻ như vấn đề ít hơn tần suất tương đối của các sản phẩm ngữ pháp riêng lẻ (câu A, B và C trong câu hỏi) và nhiều vấn đề hơn về phân tích cú pháp không sử dụng, phân tích cú pháp mà người ta có thể tạo ra.

Với một chút tìm kiếm, tôi đã tìm thấy Binarization tốt hơn cho phân tích cú pháp CKY (Song, Đinh và Lin, EMNLP 2008), dường như kết luận chắc chắn rằng bạn có thể chọn một nhị phân "tốt hơn" hoặc "tệ hơn" so với các chuỗi bạn thực sự mong đợi phải phân tích Tên của họ cho "phân tích cú pháp cuối" mà người ta hy vọng sẽ giảm thiểu trong thực tế dường như là thành phần không hoàn chỉnh , và có một ví dụ hay trên trang đầu tiên.


Hãy xem xét ngữ pháp bao gồm các sản phẩm (S -> ABC) (T -> ABD). Nếu "BC" luôn đi trước "A", nhưng "AB" đôi khi không được theo sau bởi "C", sẽ có ít ngõ cụt hơn nếu bạn kết hợp B và C và tần số tương đối không liên quan. Quan điểm của bạn về "vài" và "nhiều" có ý nghĩa nếu các từ xuất hiện ngẫu nhiên, nhưng những gì tôi nghĩ Song, Đinh và Lin đang làm là khai thác tần số ngram, phức tạp hơn một chút. Họ cũng chỉ ra rằng, trong ví dụ của tôi, bạn vẫn có thể giành chiến thắng với phép nhị phân "AB" bằng cách khai thác chia sẻ!
Rob Simmons

4

Trên thực tế, Chomsky dạng bình thường (CNF) không cần phải chạy CYK, chỉ cần nhị phân. Binarization là điều cần thiết để duy trì độ phức tạp của phân tích cú pháp, mặc dù chỉ cần thiết đối với các thiết bị đầu cuối (NT). Nhưng sau đó, nếu bạn có các quy tắc chỉ bao gồm 2 thiết bị đầu cuối và một số thiết bị đầu cuối, thuật toán CYK trở nên phức tạp hơn để lập trình và giải thích.

Như bạn nói, có nhiều cách để thực hiện binarisation. Một số sẽ mang lại ngữ pháp nhỏ hơn so với khác. Ví dụ

X -> B C D
Y -> B C E 

có thể được binarized như

X -> Z D
Y -> Z E
Z -> B C

do đó, lưu một quy tắc theo hệ số, có thể tiết kiệm tính toán và kích thước kết quả của nó.

Nhưng với các quy tắc khác, bạn có thể muốn nhân tố kết thúc quy tắc hơn là bắt đầu.

Tôi không quen thuộc với công việc của Song, Đinh và Lin , được trích dẫn bởi câu trả lời của Rob Simmons . Ý tưởng này rất thú vị nhưng tôi tự hỏi làm thế nào nó có thể được so sánh hiệu quả với các cách khác để tối ưu hóa tính toán. Tôi sợ không nhiều lắm.

Vấn đề là việc phân tích các vấn đề chỉ liên quan đến thuật toán CKY thuần túy có vẻ hơi khó học nhưng tốn kém vì có các loại tối ưu hóa khác có thể cải thiện đáng kể việc loại bỏ các phân tích cú pháp chết.

CYK chỉ là một trong những biến thể đơn giản hơn trong một nhóm các thuật toán được xây dựng trên cùng một mô hình lập trình động. Tôi đang nói rõ ràng bởi vì phiên bản đơn giản nhất của các thuật toán này không được gọi là lập trình động, mà là sản phẩm chéo. Đây là cấu trúc cũ của ngữ pháp CF G tạo ra giao điểm của ngôn ngữ CF ngữ pháp F và ngôn ngữ thông thường của một FSA A., do Bar Hillel, Perles và Shamir (1961) , được nhận xét bởi Lang vào năm 1995 .

Tất cả các trình phân tích cú pháp biểu đồ hoặc trình phân tích cú pháp CF chung dựa trên lập trình động có thể được xem là biến thể "tối ưu hóa" của cấu trúc sản phẩm chéo đó, việc tối ưu hóa được sử dụng chủ yếu để tránh các tính toán vô dụng của trình phân tích cú pháp. Nhưng vấn đề là tinh tế vì tránh tính toán vô ích có thể dẫn đến việc nhân đôi những cái hữu ích, có thể tồi tệ hơn.

Từ dưới lên, thuật toán CKY tạo ra các tính toán vô dụng của các phân tích cú pháp một phần không thể xuất phát từ tiên đề của ngữ pháp.

Các thuật toán như trình phân tích cú pháp GLR (để đặt tên cho một trong những thuật toán được biết đến nhiều hơn, mặc dù phiên bản chưa hoàn thiện đã được xuất bản), có một số kiến ​​thức từ trên xuống sẽ tránh được nhiều tính toán vô dụng như vậy, có thể phải trả giá. Và có nhiều biến thể khác với hành vi khác nhau liên quan đến việc tiết kiệm các tính toán vô dụng ..

Đó là với các chiến lược tối ưu hóa trong tâm trí rằng chiến lược nhị phân cần được phân tích. Điểm tối ưu hóa những gì có thể là một vấn đề nhỏ, và bỏ qua các kỹ thuật mạnh mẽ hơn.

Việc tối ưu hóa quá trình phân tích cú pháp cũng được liên kết chặt chẽ với "chất lượng" của cấu trúc phân tích thu được, đại diện cho tất cả các phân tích cú pháp sở hữu và thường được gọi là phân tích cú pháp (chia sẻ). Tôi thảo luận về điều đó trong một câu trả lời khác .

Một số vấn đề được thảo luận trong tài liệu. Ví dụ, bởi Billot và Lang phân tích một số khía cạnh của việc tăng giá đối với các chiến lược phân tích cú pháp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.