Tạo mô hình Markov entropy tối đa từ trình phân loại entropy tối đa đa đầu vào hiện có


9

Tôi bị thu hút bởi khái niệm Mô hình Markrop Entropy tối đa (MEMM) và tôi đang nghĩ đến việc sử dụng nó cho một trình ghi thẻ Part of Speech (POS). Hiện tại, tôi đang sử dụng trình phân loại Maximum Entropy (ME) thông thường để gắn thẻ cho từng từ riêng lẻ. Điều này sử dụng một số tính năng, bao gồm hai thẻ trước.

MEMM sử dụng thuật toán Viterbi để tìm đường dẫn tối ưu thông qua Chuỗi Markov (nghĩa là để tìm một bộ thẻ tối ưu hoàn chỉnh cho câu thay vì tối ưu riêng cho từng từ). Đọc về nó, điều này dường như có một sự thanh lịch và đơn giản tuyệt vời. Tuy nhiên, mỗi giai đoạn chỉ dựa vào "kết quả" của giai đoạn trước (tức là theo Chuỗi Markov).

Tuy nhiên, mô hình ME của tôi sử dụng hai giai đoạn trước (nghĩa là các thẻ cho hai từ trước). Có vẻ như tôi có hai cách tiếp cận có thể:

  • Như với cách triển khai Viterbi thông thường, hãy sử dụng một tập hợp các đường dẫn được lưu trữ theo một giai đoạn (trước đó). Trình phân loại ME của tôi sẽ sử dụng giai đoạn này và giai đoạn 'đóng băng' trước đó (đóng băng vào đường dẫn đang xem xét) để tạo ra chức năng chuyển.

  • Hoặc tôi viết thuật toán để theo dõi hai giai đoạn. Điều này phức tạp hơn và sẽ không còn là Mô hình Markov thực sự bởi vì mỗi hàm truyền (tức là từ Mô hình ME) sẽ phụ thuộc vào hai giai đoạn trước chứ không phải một giai đoạn.

Tôi nhận ra rằng thứ hai sẽ chính xác hơn, mặc dù nó sẽ phức tạp hơn.

Tôi vẫn chưa tìm thấy bất kỳ ví dụ nào về điều này trong quá trình tìm kiếm tài liệu của tôi. Nó đã được thử chưa? Có phải cách tiếp cận hai giai đoạn đã cải thiện độ chính xác tổng thể?

Câu trả lời:


4

(Đây thực sự là một câu hỏi thực sự mà tôi phải đối mặt và trang ML StackExchange đang hoạt động khá đúng lúc: Tôi đã thực hiện vài ngày đọc sách và nghiên cứu trực tuyến và chuẩn bị bắt đầu thực hiện. Đây là kết quả của tôi. Họ không nghiêm khắc Tôi nghĩ họ trả lời câu hỏi của riêng tôi. Tôi sẽ bỏ ngỏ câu hỏi ngay bây giờ trong trường hợp bất kỳ ai có bất kỳ đầu vào hữu ích nào, đã thử một cái gì đó tương tự hoặc có một số tài liệu tham khảo hữu ích.)

Được rồi trong vài ngày qua tôi đã mã hóa điều này. Mã này không hiệu quả lắm - rất nhiều việc tạo và sao chép bộ sưu tập, nhưng đối tượng của bài tập là để xem nó có hoạt động không, và nó hoạt động tốt như thế nào.

Tôi đang chia ngẫu nhiên dữ liệu của mình thành hai danh sách: dữ liệu huấn luyện và dữ liệu thử nghiệm. Tôi đang chạy dữ liệu thử nghiệm thông qua Trình tạo thẻ POS Entropy tối đa thông thường; và tagger MEMM mới của tôi. Do đó, họ thấy cùng một dữ liệu thử nghiệm, cho phép so sánh trực tiếp - do tính ngẫu nhiên trong dữ liệu được chọn, tôi thấy một số thay đổi giữa các thử nghiệm (thường là khoảng 0,2-0,4%).

Thử nghiệm đầu tiên sử dụng trình gắn thẻ MEMM với một giai đoạn duy nhất (ví dụ: Chuỗi Markov thực sự). Điều này luôn thực hiện tốt hơn so với trình ghi thẻ ME đơn giản khoảng 0,1-0,25%.

Tiếp theo tôi đã thử cách tiếp cận hai giai đoạn có vẻ như nó sẽ đúng hơn. Tuy nhiên, kết quả thậm chí còn nhiều hơn. Thường thì kết quả sẽ giống hệt nhau, đôi khi nó sẽ kém hơn một chút, nhưng có lẽ phần lớn nó tốt hơn một chút (vì vậy +/- 0,05%).

Trình ghi thẻ MEMM chậm. Được rồi, tôi chưa áp dụng bất kỳ tối ưu hóa nào, nhưng giai đoạn 1 (Chuỗi Markov thực sự) chậm hơn N lần (trong đó N = Số nhãn) vì đây là số đường được chuyển giữa mỗi bước. Việc thực hiện 2 giai đoạn là N * N chậm hơn (vì số lượng đường dẫn được truyền nhiều hơn). Mặc dù tối ưu hóa có thể cải thiện mọi thứ, nhưng điều này có lẽ quá chậm đối với hầu hết các ứng dụng thực tế.

Một điều tôi đang cố gắng là áp dụng giới hạn xác suất thấp hơn cho các đường dẫn. I E. các đường dẫn Viterbi được cắt tỉa trong mỗi lần lặp với tất cả các đường dẫn dưới một xác suất nhất định (hiện tại là Log (tổng đường dẫn P) <- 20.0) được cắt tỉa. Điều này không chạy nhanh hơn một chút, nhưng câu hỏi vẫn là liệu nó có đáng không. Tôi nghĩ rằng nó có thể không.

Tại sao chúng ta không thấy bất kỳ cải thiện? Tôi nghĩ điều này chủ yếu là do cách hành xử của các thẻ POS và mô hình Entropy tối đa. Mặc dù mô hình có các tính năng dựa trên hai thẻ trước đó, thẻ trước đó quan trọng hơn nhiều so với thẻ trước đó. Theo trực giác, điều này sẽ có ý nghĩa đối với ngôn ngữ tiếng Anh (ví dụ: một tính từ thường được theo sau bởi một danh từ hoặc một tính từ khác nhưng điều này không thực sự phụ thuộc vào những gì trước tính từ).

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.