2011-09-19 33 views
28

Tôi chỉ đọc một bài viết hấp dẫn về cách MALLET có thể được sử dụng cho mô hình hóa chủ đề, nhưng tôi không thể tìm thấy bất cứ điều gì trực tuyến so sánh MALLET với NLTK, mà tôi đã có một số kinh nghiệm.Chủ đề Lập mô hình trong MALLET vs NLTK

Sự khác biệt chính giữa chúng là gì? MALLET có phải là một tài nguyên 'hoàn chỉnh' hơn (ví dụ: có nhiều công cụ và thuật toán hơn bên dưới) không? Hay đâu là một số bài viết hay trả lời hai câu hỏi đầu tiên này?

+1

Không thể trả lời điều đó, nhưng NLTK bao gồm giao diện mallet để bạn có thể thử chúng song song. – alexis

+2

Nếu bạn đã quen thuộc với Python, chỉ cần sử dụng "gensim, mô hình hóa chủ đề cho con người". – Radim

+0

@Radim; P yes 'gensim' là một trong những mô hình mô hình chủ đề thân thiện với người dùng nhất mà tôi đã sử dụng/nhìn thấy cho python. Nó phải là "gensim, mô hình hóa chủ đề cho những con người chỉ" =) – alvas

Trả lời

23

Nó không phải là một trong đó là hoàn chỉnh hơn so với khác nó là một câu hỏi của một trong những có một số công cụ khác không và ngược lại. Nó cũng là một câu hỏi của khán giả và mục đích dự định.

Mallet là bộ công cụ học tập máy dựa trên Java nhằm mục đích cung cấp triển khai mạnh mẽ và nhanh chóng cho các tác vụ xử lý ngôn ngữ tự nhiên khác nhau.

NLTK được xây dựng bằng Python và đi kèm với rất nhiều nội dung bổ sung như công ty như WordNet. NLTK nhắm đến nhiều người học NLP, và như vậy được sử dụng nhiều hơn như một nền tảng học tập và có lẽ ít hơn là một giải pháp kỹ thuật. Theo quan điểm của tôi, sự khác biệt chính giữa hai là NLTK được định vị tốt hơn như một nguồn tài nguyên học tập cho những người quan tâm đến học máy và NLP vì nó đi kèm với toàn bộ tài liệu, ví dụ, tập đoàn, v.v.

Mallet là nhằm vào các nhà nghiên cứu và các học viên làm việc trong lĩnh vực này và đã biết những gì họ muốn làm. Nó đi kèm với tài liệu ít hơn (mặc dù nó có các ví dụ tốt và API cũng là tài liệu) so với bộ sưu tập rộng lớn NLTK của NLP chung công cụ.

UPDATE: điều tốt mô tả những sẽ là tài liệu Mallet và các ví dụ tại http://mallet.cs.umass.edu/ - thanh bên có liên kết đến trình tự gắn thẻ, mô hình chủ đề, vv

và cho NLTK cuốn sách NLTK Natural Language Processing with Python là một giới thiệu tốt cả NLTK và NLP.

CẬP NHẬT

Tôi vừa mới tìm thấy sklearn thư viện Python. Điều này nhằm mục đích học máy nói chung hơn, không trực tiếp cho NLP nhưng cũng có thể được sử dụng cho điều đó. Nó đi kèm với một lựa chọn rất lớn của các công cụ mô hình hóa và hầu hết nó dường như dựa vào NumPy vì vậy nó nên được khá nhanh. Tôi đã sử dụng nó khá nhiều và có thể nói rằng nó được viết rất tốt và có tài liệu và có một cộng đồng phát triển tích cực đẩy nó về phía trước (ít nhất là vào tháng 5 năm 2013).

UPDATE 2

Tôi bây giờ cũng được sử dụng vồ trong một thời gian (đặc biệt là các API vồ) và có thể nói rằng nếu bạn đang có kế hoạch tích hợp vồ vào dự án khác, bạn nên rất quen thuộc với Java và sẵn sàng dành rất nhiều thời gian để gỡ lỗi một cơ sở mã hoàn toàn không có giấy tờ.

Nếu tất cả những gì bạn muốn làm là sử dụng các công cụ dòng lệnh mallet, điều đó tốt, sử dụng API đòi hỏi rất nhiều đào thông qua chính mã mallet và thường sửa một số lỗi. Được cảnh báo mallet đi kèm với tài liệu tối thiểu liên quan đến API.

+0

"Nó đi kèm với ..." typo? – Trindaz

+0

Ồ, không xin lỗi, làm lại văn bản :) –

+1

@Trindaz vui lòng xem các cập nhật ở trên. –

2

Câu hỏi đặt ra là liệu bạn có đang làm việc bằng Python hay Java (hoặc không có điều nào ở trên). Mallet là tốt cho Java (do đó Clojure và Scala) vì bạn có thể dễ dàng truy cập vào API của nó trong Java. Mallet cũng có giao diện dòng lệnh đẹp để bạn có thể sử dụng nó bên ngoài ứng dụng.

Vì lý do tương tự với Python, NLTK là tuyệt vời cho python, và bạn sẽ không phải làm bất kỳ sự điên rồ nào của Jython để làm cho chúng hoạt động tốt với nhau. Nếu bạn đang sử dụng python, Gensim chỉ cần thêm một wrapper Mallet đó là giá trị kiểm tra ra. Ngay bây giờ, về cơ bản nó là một tính năng alpha xương trần, nhưng nó có thể làm những gì bạn cần.

+1

Nếu bạn đang sử dụng gensim bạn cũng có thể đi với phiên bản lda trực tuyến trong 'gensim.models.ldamodel.LdaModel' thay vì một trong những mallet, trừ khi bạn thực sự thực sự muốn sử dụng giống lấy mẫu Gibbs mà mallet thực hiện. –

+1

@MattiLyra cũng ... triển khai LDA mallet làm tham số optimisaion. Trong hầu hết các trường hợp, cải thiện sâu sắc chất lượng của mô hình đã học. Nếu bạn không cần một thuật toán trực tuyến (ví dụ: bạn không cần phải tiếp tục thêm tài liệu và tinh chỉnh mô hình), tôi sẽ đi cho mallet. Tôi đã không so sánh tốc độ hội tụ, nhưng mallet cũng có một ước lượng đa lõi, mà tốc độ những thứ lên rất nhiều nếu bạn đã có phần cứng. – drevicko

1

Tôi không quen với bộ công cụ lập mô hình chủ đề của NLTK, vì vậy tôi sẽ không cố gắng so sánh nó. Các nguồn Mallet trong Github chứa một số thuật toán (một số trong đó không có sẵn trong phiên bản 'phát hành'). Theo hiểu biết của tôi, có

  • SimpleLDA (LDA với mẫu Gibbs sụp đổ)
  • ParallelTopicModel (LDA hoạt động trên đa lõi)
  • HierarchicalLDA
  • LabeledLDA (một cách tiếp cận bán giám sát để LDA)
  • Phân bổ Pachinko với LDA.
  • WeightedTopicModel

Nó cũng có

  • một vài lớp học có thể trợ giúp trong chẩn đoán của các mô hình LDA. (TopicModelDiagnostics.java)
  • Khả năng serialize và de-serialize một mô hình LDA được đào tạo.

Tất cả trong tất cả, đây là bộ công cụ tốt để thử nghiệm với các mô hình chủ đề, với giấy phép nguồn mở có thể tiếp cận (CPL).

Các vấn đề liên quan