Các gói R để thực hiện mô hình hóa chủ đề / LDA: chỉ `topicmodels` và` lda` [đã đóng]


29

Dường như với tôi chỉ có hai gói R có thể thực hiện Phân bổ Dirichlet tiềm ẩn :

Một là lda, tác giả Jonathan Chang; và người kia là topicmodelstác giả của Bettina Grün và Kurt Hornik.

Sự khác biệt giữa hai gói này, về hiệu suất, chi tiết thực hiện và khả năng mở rộng là gì?

Câu trả lời:


26

Triển khai: Gói topicmodels cung cấp giao diện cho mã GSL C và C ++ cho các mô hình chủ đề của Blei et al. và Phan et al. Đối với trước đó, nó sử dụng Biến thể EM, cho Lấy mẫu Gibbs sau. Xem http://www.jstatsoft.org/v40/i13/apers . Gói hoạt động tốt với các tiện ích từ gói tm.

Gói lda sử dụng Bộ lấy mẫu Gibbs bị sập cho một số mô hình tương tự như mô hình từ thư viện GSL. Tuy nhiên, nó đã được thực hiện bởi chính các tác giả gói, không phải bởi Blei et al. Do đó, việc triển khai này khác với kỹ thuật ước tính được đề xuất trong các bài báo gốc giới thiệu các biến thể mô hình này, trong đó thuật toán VEM thường được áp dụng. Mặt khác, gói cung cấp nhiều chức năng hơn các gói khác. Gói cung cấp chức năng khai thác văn bản quá.

Khả năng mở rộng: Về khả năng mở rộng, mã topicmodel theo bản chất của nó có thể được mở rộng để giao diện với mã mô hình chủ đề khác được viết bằng C và C ++. Gói lda dường như dựa nhiều hơn vào việc triển khai cụ thể được cung cấp bởi các tác giả, nhưng ở đó, bộ lấy mẫu Gibbs có thể cho phép chỉ định mô hình chủ đề của riêng bạn. Đối với các vấn đề về khả năng mở rộng đáng chú ý, cái trước được cấp phép theo GPL-2 và LGPL sau, do đó, nó có thể phụ thuộc vào những gì bạn cần mở rộng cho nó (GPL-2 chặt chẽ hơn về khía cạnh nguồn mở, tức là bạn không thể sử dụng nó trong phần mềm độc quyền).

Hiệu suất: Tôi không thể giúp bạn ở đây, tôi chỉ sử dụng mô hình chủ đề cho đến nay.

Kết luận:
Cá nhân tôi sử dụng topicmodels, vì nó được ghi chép tốt (xem bài viết của JSS ở trên) và tôi tin tưởng các tác giả (Grün cũng đã hiểu flexmix và Hornik là thành viên cốt lõi của R).


7
Đầu tiên, tôi chắc chắn rằng topicmodels là một gói tuyệt vời và tôi đồng ý rằng nó được ghi chép lại rất tốt. Về việc "tin tưởng" các tác giả của gói LDA, Jonathan Chang là nghiên cứu sinh của tôi và tôi hoàn toàn tin tưởng vào mã của anh ấy. Ông là một kỹ sư phần mềm và học giả xuất sắc. Gói của anh ấy rất dễ dàng, chia tỷ lệ tốt cho các bộ sưu tập khá lớn và thật tuyệt khi khám phá các kết quả trong R. (Tôi thích và tôi đã quen với việc trình bày ma trận thưa thớt của các tài liệu.) Lưu ý, LDA triển khai các mô hình khác, bao gồm cả quan hệ mô hình chủ đề, LDA được giám sát (với GLM) và blockmodel ngẫu nhiên thành viên hỗn hợp.

Cảm ơn bạn đã cân nhắc. Tôi chắc chắn rằng ldagói này rất tuyệt, tôi không có ý ám chỉ rằng nó ldacó mã kém hơn. Tôi đã nêu ấn tượng cá nhân của tôi (tài liệu xuất hiện một chút cẩu thả). Vì đó là> 2 năm trước tôi đã chỉnh sửa câu trả lời một chút (lỗi chính tả ở trang CRAN vẫn còn đó, tôi nghĩ sẽ tốt cho họ khi sửa nhưng email đó dường như đã bị mất).
Momo

Tôi đoán bạn có nhiều kinh nghiệm với cả hai gói và biết hầu hết về chủ đề chung, làm thế nào về việc cung cấp câu trả lời liệt kê một số ưu và nhược điểm của cả hai gói? Tôi đã không sử dụng lda, vì vậy tôi không thể đưa ra đánh giá thực nghiệm về nó. Cung cấp điều đó chắc chắn sẽ giúp OP và mọi người khác cũng như sửa chữa mọi bất công có thể xảy ra (điều này không có ý định). Cảm ơn!
Momo

1
Tôi cũng đã thử cả hai, và tìm thấy ldagói để chứa nhiều tùy chọn hơn. Tuy nhiên, thật khó để hiểu cách định dạng dữ liệu của bạn để dữ liệu phù hợp với mô hình. Các topicmodelsgói hoạt động tốt với các tmgói, trong khi ldagói yêu cầu một danh sách mà không phải là rõ ràng như thế nào để tạo ra.
Omri374

12

+1 cho chủ đề . Câu trả lời của Momo rất toàn diện. Tôi chỉ cần thêm rằng topicmodelslấy đầu vào làm ma trận thuật ngữ tài liệu, dễ dàng thực hiện với tmgói hoặc sử dụng python. Các ldagói sử dụng một hình thức bí truyền của đầu vào (dựa trên Blei của LDA-C) và tôi đã không có may mắn sử dụng được xây dựng trong chức năng để chuyển đổi dtm vào ldađịnh dạng gói (tài liệu LDA là rất nghèo, như ghi chú Momo).

Tôi có một số mã bắt đầu bằng văn bản thô, xử lý trước nó tmvà đưa nó vào topicmodels(bao gồm cả việc tìm ra số lượng chủ đề tối ưu trước và làm việc với đầu ra) ở đây . Có thể hữu ích cho ai đó đến topicmodelslần đầu tiên.


3
Đối với những người chưa sử dụng tm và muốn chơi với lda , JFreq cũng đặt các văn bản đơn giản ở định dạng ưa thích của LDA-C.
liên hợp chiến

Thật tốt khi biết về JFreq, tôi chưa từng thấy nó trước đây. Cảm ơn vì tiền hỗ trợ!
Ben

1
Tôi chỉ phát hiện ra read_dtm_Blei_et_alchức năng trong tmgói mà làm điều tương tự.
Ben

3

Gói Mô hình chủ đề cấu trúc R (STM) của Molly Roberts, Brandon Stewart và Dustin Tingley cũng là một lựa chọn tuyệt vời. Được xây dựng dựa trên gói tm, đây là một khung chung cho mô hình chủ đề với thông tin đồng biến ở cấp độ tài liệu.

http://structuraltopicmodel.com/

Gói STM bao gồm một loạt các phương thức (tìm kiếm lưới) và các biện pháp (kết hợp ngữ nghĩa, phần dư và loại trừ) để xác định số lượng chủ đề. Đặt số lượng chủ đề thành 0 cũng sẽ cho phép mô hình xác định số lượng chủ đề tối ưu.

Gói stmBrowser là một bổ sung trực quan hóa dữ liệu tuyệt vời để trực quan hóa ảnh hưởng của các biến bên ngoài đến các chủ đề. Xem ví dụ này liên quan đến các cuộc tranh luận tổng thống năm 2016: http://alexperrier.github.io/stm-visualization/index.html .


0

Tôi đã sử dụng tất cả ba thư viện, trong số cả 3 viz., Topicmodels, lda, stm; không phải ai cũng làm việc với n gram. Thư viện topicmodels là tốt với ước tính của nó và nó cũng hoạt động với n gram. Nhưng nếu bất cứ ai đang làm việc với uni gram thì học viên có thể thích stm vì nó cho đầu ra có cấu trúc.

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.