Dự đoán chủ đề bằng cách sử dụng phân bổ Dirichlet tiềm ẩn


17

Tôi đã sử dụng LDA trên một kho tài liệu và tìm thấy một số chủ đề. Đầu ra của mã của tôi là hai ma trận chứa xác suất; một xác suất chủ đề tài liệu và xác suất chủ đề từ khác. Nhưng tôi thực sự không biết cách sử dụng những kết quả này để dự đoán chủ đề của một tài liệu mới. Tôi đang sử dụng mẫu Gibbs. Có ai biết làm thế nào không? cảm ơn


1
Bạn có ý nghĩa gì khi "dự đoán chủ đề của một tài liệu mới"? Bạn có muốn tìm một chủ đề duy nhất mà tài liệu này được tạo ra không? Bạn có muốn tìm một hỗn hợp các chủ đề cho tài liệu? Bạn có muốn gắn nhãn cho từng từ trong tài liệu mới theo chủ đề mà từ đó xuất phát không?
SheldonCooper

Bạn có muốn tìm một chủ đề duy nhất mà tài liệu này được tạo ra không? Bạn có muốn tìm một hỗn hợp các chủ đề cho tài liệu không? - Tôi thực sự muốn trả lời cả hai câu hỏi này ... nhưng kho văn bản của tôi rất lớn, vì vậy tôi không đủ khả năng để đào tạo lại tất cả mô hình của mình mỗi khi có tài liệu mới đã được kiểm tra
Hossein

Câu trả lời:


21

Tôi sẽ thử 'gấp trong'. Điều này đề cập đến việc lấy một tài liệu mới, thêm nó vào kho văn bản, và sau đó chạy lấy mẫu Gibbs chỉ trên các từ trong tài liệu mới đó , giữ nguyên các bài tập chủ đề của các tài liệu cũ. Điều này thường hội tụ nhanh (có thể là 5-10-20 lần lặp) và bạn không cần phải lấy mẫu xác cũ của mình, vì vậy nó cũng chạy nhanh. Cuối cùng, bạn sẽ có sự phân công chủ đề cho mỗi từ trong tài liệu mới. Điều này sẽ cung cấp cho bạn phân phối các chủ đề trong tài liệu đó.

Trong bộ lấy mẫu Gibbs của bạn, bạn có thể có một cái gì đó tương tự như đoạn mã sau:

// This will initialize the matrices of counts, N_tw (topic-word matrix) and N_dt (document-topic matrix)
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Assign current token to a random topic, updating the count matrices
    end
end

// This will do the Gibbs sampling
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Compute probability of current token being assigned to each topic
       Sample a topic from this distribution
       Assign the token to the new topic, updating the count matrices
    end
end

Folding-in cũng vậy, ngoại trừ bạn bắt đầu với các ma trận hiện có, thêm mã thông báo của tài liệu mới vào chúng và thực hiện lấy mẫu chỉ cho các mã thông báo mới. I E:

Start with the N_tw and N_dt matrices from the previous step

// This will update the count matrices for folding-in
for token = 1 to N_Tokens_In_New_Document
   Assign current token to a random topic, updating the count matrices
end

// This will do the folding-in by Gibbs sampling
for token = 1 to N_Tokens_In_New_Document
   Compute probability of current token being assigned to each topic
   Sample a topic from this distribution
   Assign the token to the new topic, updating the count matrices
end

pwTôiwTôijwj

ΠjpwjTôi

cảm ơn bạn đã trả lời Tôi đã đọc một số thứ về nhưng vẫn còn một chút bối rối về "gấp trong". Bạn đang nói rằng tôi nên giữ các bài tập chủ đề của các tài liệu cũ như nhau, điều này có nghĩa là các bài tập chủ đề từ phải được tính lại? Có thể cho bạn một bước chi tiết hơn về những gì nên làm? hoặc có thể giới thiệu cho tôi một bài báo hoặc một liên kết thực sự có thể giúp tôi làm rõ quá trình "gấp lại" này. Lựa chọn đầu tiên của tôi là làm "gấp trong". Nếu không thành công, tôi sẽ sử dụng phương pháp thứ hai mà bạn đề xuất (không chắc nó hoạt động tốt như thế nào so với việc gấp lại).
Hossein

@SheldonCooper: Nếu tôi hiểu bạn một cách chính xác, thì tôi nghi ngờ rằng đây là cách thực hiện: Điều bạn làm là nếu bạn đo hiệu suất của một SVM trên một mẫu thử nghiệm mới bằng cách đưa ra thuật toán tối ưu hóa thêm vài bước nữa từ giải pháp hiện tại bao gồm mẫu thử nghiệm và sau đó đánh giá nó trên mẫu này ... nhưng: trong học máy bạn không bao giờ có thể thử nghiệm trên tập huấn luyện của mình ... và bằng cách đưa mẫu thử vào mô hình bạn thực hiện chính xác: thử nghiệm trên mẫu đào tạo ...
Fabian Werner

@FabianWerner Tôi tin rằng giải pháp không cập nhật ma trận chủ đề từ đào tạo ban đầu. Nó chỉ chạy lại một bộ lấy mẫu Gibbs bắt đầu với ma trận chủ đề từ được đào tạo và tạo ra một ma trận chủ đề tài liệu mới. Ở mức nào, bạn có biết một cách khác để làm những gì OP yêu cầu (phải thừa nhận vài năm trước)? Tôi đang xem xét cùng một vấn đề.
thecity2

@ thecity2 Mặc dù tôi gặp khó khăn về vấn đề này trong một thời gian, tôi phải buồn bã nói rằng tôi chưa có giải pháp. Nếu bạn tìm thấy một, sau đó xin vui lòng cho tôi biết !!!
Fabian Werner

@FabianWerner Bạn không có một bộ kiểm tra và thử nghiệm trong vấn đề này - nhận xét của bạn không liên quan ở đây. Đây là học tập không giám sát, giống như phân cụm.
emem
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.