Trong làm mịn Kneser-Ney, những từ không nhìn thấy được xử lý như thế nào?


15

Từ những gì tôi đã thấy, công thức làm mịn Kneser-Ney (bậc hai) theo cách này hay cách khác được đưa ra như

PKN2(wn|wn1)=max{C(wn1,wn)D,0}wC(wn1,w)+λ(wn1)×Pcont(wn)

với hệ số chuẩn hóa được cho làλ(wn1)

λ(wn1)=DwC(wn1,w)×N1+(wn1)

và xác suất tiếp tục Pcont(wn) của một từ wn

Pcont(wn)=N1+(wn)wN1+(w)

Trong đó N1+(w) là số lượng bối cảnh w được nhìn thấy trong hoặc đơn giản hơn, số lượng từ khác biệt đứng trước từ đã cho w . Từ những gì tôi đã hiểu, công thức có thể được áp dụng đệ quy.

Bây giờ, điều này xử lý các từ đã biết trong ngữ cảnh không xác định độc đáo cho các độ dài n-gram khác nhau, nhưng điều không giải thích được là phải làm gì khi có các từ ngoài từ điển. Tôi đã thử làm theo ví dụ này trong đó nói rằng trong bước đệ quy cho unigram, Pcont(/)=PKN0(/)=1V . Tài liệu sau đó sử dụng điều này - trích dẫn Chen và Goodman - để biện minh cho công thức trên là PKN1(w)=Pcont(w) .

Tôi không thấy nó hoạt động như thế nào khi có một từ chưa biết . Trong những trường hợp này, vì rõ ràng, từ chưa biết không tiếp tục bất cứ điều gì liên quan đến tập huấn luyện. Tương tự, số lượng n-gram sẽ là .P c o n t ( chưa biết ) = 0w=unknown C(wn-1,chưa biết)=0Pcont(unknown)=0somethingC(wn1,unknown)=0

Hơn nữa, toàn bộ thuật ngữ có thể bằng 0 nếu gặp phải một chuỗi các từ chưa biết - giả sử, một bát quái của các từ 3M - gặp phải.wC(wn1,w)

Tôi đang thiếu gì?


Tôi cũng đang vật lộn với KN. Tôi nghĩ rằng xác suất của một bigram P vô hình (w1w2) có thể trở lại xác suất tiếp tục của unigram cuối cùng w2. Khi bạn bị bỏ lại với một unigram vô hình, bạn không có gì. Phải làm gì tiếp theo? Tôi không biết.
momobo

Hiện tại tôi đang cố gắng thực hiện KN và bị mắc kẹt với vấn đề tương tự. Có phải hai bạn đã xoay sở để tìm ra giải pháp?
jbaiter 14/07/2015

Tôi đã quay trở lại làm mịn Good-Turing cho các unigram unseen (khớp chức năng công suất với tần số và tần số tần số) ... với các kết quả khác nhau.
trời

Câu trả lời:


6

Dan Jurafsky đã xuất bản một chương về các mô hình N-Gram nói một chút về vấn đề này:

Khi chấm dứt đệ quy, unigram được nội suy với phân phối thống nhất:

PKN(w)=max(cKN(w)d,0)wcKN(w)+λ(ϵ)1|V|

Nếu chúng ta muốn bao gồm một từ chưa biết <UNK>, thì nó chỉ được đưa vào như một mục từ vựng thông thường với số không, và do đó xác suất của nó sẽ là:

λ(ϵ)|V|

Tôi đã cố gắng tìm hiểu điều này có nghĩa là gì, nhưng tôi không chắc liệu chỉ có nghĩa là . Nếu đây là trường hợp và bạn cho rằng khi số đếm về 0, có thể chuyển sang , theo:lim x 0 x λ ( ϵ ) dϵlimx0xλ(ϵ)d

λ(wi1)=dc(wi1)|{w:c(wi1,w)>0}|

sau đó từ không xác định chỉ được gán một phần chiết khấu, nghĩa là:

λ(ϵ)|V|=d|V|

Tôi không tự tin về câu trả lời này chút nào, nhưng muốn đưa nó ra khỏi đó trong trường hợp nó làm nảy sinh thêm một số suy nghĩ.

Cập nhật: Đào sâu thêm một số thứ, có vẻ như thường được sử dụng để biểu thị chuỗi trống (""), nhưng vẫn chưa rõ điều này ảnh hưởng đến việc tính toán . vẫn là dự đoán tốt nhất của tôiϵλd|V|


2
Câu trả lời tốt nhưng giống như bạn Tôi không tin tưởng 100% vào nó. Tôi thực hiện một phiên bản của kịch bản perl research.microsoft.com/en-us/um/redmond/groups/srg/papers/... trong python - nhưng nhận ra nó chỉ hoạt động như-là nếu bạn có một vốn từ vựng đóng (vấn đề 0 prob ) - tức là tất cả các unigram thử nghiệm cũng đang được đào tạo. Theo đề nghị của Jan lagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf tôi đã thay thế trường hợp đầu tiên của mỗi từ với <UNK> trong quá trình tiền xử lý. Tuy nhiên, khi phân vùng, có một số unigram thử nghiệm không có trong tàu như "goofedup". Vì vậy, tôi đã sử dụng d / | V | đây. Cảm ơn!
Josh Morel

1

Có nhiều cách để đào tạo một người mẫu <UNK>mặc dù Jurafsky đề nghị chọn những từ đó xuất hiện rất ít lần trong đào tạo và chỉ cần thay đổi chúng thành <UNK>.

Sau đó, chỉ cần đào tạo xác suất như bạn thường làm.

Xem video này bắt đầu lúc 3:40 -

https://group.coursera.org/nlp/lecture/19

Một cách tiếp cận khác là chỉ đơn giản coi một từ là <UNK>lần đầu tiên nó được nhìn thấy trong đào tạo, mặc dù theo kinh nghiệm của tôi, cách tiếp cận này gán quá nhiều khối lượng xác suất <UNK>.


0

Chỉ cần một vài suy nghĩ, tôi không phải là một chuyên gia về vấn đề này nên tôi không có ý định đưa ra câu trả lời cho câu hỏi mà chỉ phân tích nó.

λ(ϵ)λ(ϵ)

λ(ϵ)=1wmax(CKN(w)d,0)wCKN(w)
CKN(w)

Một lựa chọn khác là ước tính <unk>xác suất với các phương thức được Randy đề cập và coi nó như một mã thông báo thông thường.

λ(ϵ)|V|


Câu trả lời được cho là cho câu trả lời thực tế.
Michael R. Chernick
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.