2011-09-19 18 views
28

Sadece MALLET'in konu modelleme için nasıl kullanılabileceği hakkında büyüleyici bir makale okudum, ancak MALLET'i NLTK ile karşılaştırdığım bir şey bulamadım.MALLET vs MOTET'de Konu Modelleme

Aralarındaki temel farklar nelerdir? MALLET daha “tam” bir kaynak mıdır (ör. Başlık altında daha fazla araç ve algoritma vardır)? Ya da ilk iki soruya cevap veren bazı güzel makaleler nerede?

+1

Bunu yanıtlayamıyorum, ancak NLTK bir çekiç arabirimi içeriyor, böylece bunları birbiri ardına deneyebilirsiniz. – alexis

+2

Python'u zaten biliyorsan, sadece "insanlar için konu modellemesi" ni kullan. – Radim

+0

@Radim; P yes 'gensim, kişisel olarak python için kullanılan/kullandım en kullanıcı dostu konu modelleme modülünden biridir. "Gensim, sadece ölümlüler için konu modellemesi" olmalıydı. =) – alvas

cevap

23

Biri diğerinden daha eksiksiz değil, diğerinin olmaması ve tersi bir şeyden daha fazla bir sorudur. Aynı zamanda hedef kitle ve amaç bir sorudur.

Mallet, çeşitli doğal dil işleme görevleri için sağlam ve hızlı uygulamalar sağlamayı amaçlayan Java tabanlı bir makine öğrenme aracıdır.

NLTK, Python kullanılarak oluşturulmuştur ve WordNet gibi bir çok şirketle birlikte gelir. NLTK, daha çok NLP öğrenen insanlara yöneliktir ve bu nedenle bir öğrenme platformu olarak ve belki de bir mühendislik çözümü olarak daha az kullanılır. o belgeler, örnekler, korpus vs vs bütün bir ton ile gelir olarak Bence ikisi arasındaki temel fark ise

NLTK daha iyi konumlandırılmış makine öğrenme ve NLP ile ilgilenen kişiler için bir öğrenme kaynağı olarak olmasıdır

Mallet, alanda çalışan ve zaten ne yapmak istediklerini bilen araştırmacıları ve uygulayıcıları hedeflemektedir. NLTK'nın geniş kapsamlı genel NLP koleksiyonuna kıyasla, daha az dokümantasyonla (iyi örneklere sahip ve API iyi belgelenmiş olmasına rağmen) gelir.

GÜNCELLEME: Bu http://mallet.cs.umass.edu/ de Mallet dokümanlar ve örnekler olacağını açıklayan İyi haberler - NLTK kitabında Natural Language Processing with Python kenar çubuğu etiketleme diziye bağlantıları, konu modelleme vb

vardır ve NLTK için iyi bir tanıtım hem etmektir NLTK ve NLP'ye.

GÜNCELLEME

Geçenlerde sklearn Python kütüphanesi buldum. Bu, daha genel olarak makine öğrenmeyi amaçlamaktadır, doğrudan NLP için değil, bunun için de kullanılabilir. Çok geniş bir modelleme araçları yelpazesi ile geliyor ve çoğu NumPy'ye güveniyor gibi görünüyor, bu yüzden oldukça hızlı olması gerekiyor. Bunu oldukça kullandım ve çok iyi yazılmış ve belgelenmiş olduğunu söyleyebilirim ve bunu ileri süren aktif bir geliştirici topluluğuna sahiptir (Mayıs 2013 itibariyle).

GÜNCELLEME Şimdi de bir süre (özellikle tokmak API) için tokmak kullanıyorum ve başka projeye tokmak entegre planlıyorsanız çok aşina olması gerektiğini söyleyebiliriz 2

Java ve neredeyse tamamen belgesiz kod tabanı hata ayıklama çok zaman harcamak için hazır.

Tek yapmanız gereken, mallet komut satırı araçlarını kullanmaksa, bu iyi bir yöntemdir, API kullanımı mallet kodu üzerinden çok fazla kazma gerektirir ve genellikle bazı hataları da giderir. Uyarının, API ile ilgili asgari dokümantasyonla birlikte gelmesi konusunda uyarınız.

+0

"Bu gelir ..." yazım hatası mı? – Trindaz

+0

Oh, hayır özür dilerim, metni yeniden çalıştırmak :) –

+1

@Trindaz lütfen yukarıdaki güncellemelere bakın. –

2

Soru, Python veya Java'da (veya yukarıdakilerden hiçbiri) çalışıp çalışmadığınızdır. Java'da Java'ya kolayca erişebildiğinizden, Mallet Java için iyidir (bu nedenle Clojure ve Scala). Mallet ayrıca güzel bir komut satırı arayüzüne sahiptir, böylece bir uygulamanın dışında kullanabilirsiniz.

Python ile aynı nedenden dolayı, NLTK python için harikadır ve bunların birlikte iyi oynamasını sağlamak için herhangi bir Jython deliliği yapmak zorunda kalmayacaksınız. Python kullanıyorsanız, Gensim kontrol etmeye değer bir Mallet sarıcı ekledi. Şu anda, temelde bir çıplak kemikleri alfa özelliği, ama ihtiyacınız olanı yapabilir.

+1

Eğer gensim kullanıyorsanız, gerçekten de gerçekten mallet'in yaptığı Gibbs örnekleme çeşitliliğini kullanmak istemediğiniz sürece, maltaşı yerine gensim.models.ldamodel.LdaModel' içindeki çevrimiçi lda sürümüyle devam edebilirsiniz. –

+1

@MattiLyra iyi ... mallet LDA uygulamaları parametre optimizasyonunu yapıyor. Çoğu durumda, öğrenilen modelin kalitesini derinden artırır. Çevrimiçi bir algoritmaya ihtiyacınız yoksa (yani: belge eklemeye ve modeli düzeltmeye gerek kalmaz), tokmak için giderdim. Yakınsama hızlarını karşılaştırmamıştım, fakat mallet'in ayrıca çok çekirdekli bir tahmincisi var, eğer donanımınız varsa işleri hızlandırıyor. – drevicko

1

NLTK'nın konu modelleme araç setine aşina değilim, bu yüzden karşılaştırmaya çalışmam. Github'daki Mallet kaynakları çeşitli algoritmalar içerir (bunlardan bazıları "yayınlanmış" versiyonda mevcut değildir). Bildiğim kadarıyla, orada

  • SimpleLDA (daraltılmış Gibbs örnekleme ile LDA)
  • ParallelTopicModel (çok çekirdekli çalışan LDA)
  • HierarchicalLDA
  • LabeledLDA (LDA için bir yarı-denetimli yaklaşım)
  • LDA ile Pachinko Tahsisi.
  • WeightedTopicModel

Ayrıca

  • LDA modellerinin teşhisinde yardımcı sınıfların bir çift vardır. (TopicModelDiagnostics.java)
  • Eğitimli bir LDA modelini serileştirme ve serileştirme yeteneği.

Sonuç olarak, konu modelleriyle denenebilir bir açık kaynak lisansı (CPL) denemek için iyi bir araç takımıdır.