R-Pakete zur Themenmodellierung / LDA: nur "TopicModels" und "LDA" [geschlossen]

29

Es scheint mir, dass nur zwei R-Pakete in der Lage sind, Latent Dirichlet Allocation durchzuführen :

Einer ist lda, verfasst von Jonathan Chang; und die andere stammt topicmodelsvon Bettina Grün und Kurt Hornik.

Was sind die Unterschiede zwischen diesen beiden Paketen in Bezug auf Leistung, Implementierungsdetails und Erweiterbarkeit?

Bit-Frage
quelle

Antworten:

26

Implementierung: Das topicmodels-Paket bietet eine Schnittstelle zum GSL C- und C ++ - Code für Topic-Modelle von Blei et al. und Phan et al. Für das frühere wird Variational EM verwendet, für das letztere Gibbs-Sampling. Siehe http://www.jstatsoft.org/v40/i13/paper . Das Paket funktioniert gut mit den Dienstprogrammen aus dem TM-Paket.

Das lda-Paket verwendet einen reduzierten Gibbs-Sampler für eine Reihe von Modellen, die denen der GSL-Bibliothek ähneln. Es wurde jedoch von den Autoren des Pakets selbst implementiert, nicht von Blei et al. Diese Implementierung unterscheidet sich daher im Allgemeinen von der in den Originalarbeiten vorgeschlagenen Schätzungstechnik, mit der diese Modellvarianten eingeführt werden, bei denen normalerweise der VEM-Algorithmus angewendet wird. Andererseits bietet das Paket mehr Funktionalität als das andere Paket. Das Paket bietet auch Text Mining-Funktionen.

Erweiterbarkeit: In Bezug auf die Erweiterbarkeit kann der Topic-Modellcode von Natur aus erweitert werden, um andere Topic-Modellcodes, die in C und C ++ geschrieben wurden, zu integrieren. Das lda-Paket scheint sich mehr auf die spezifische Implementierung der Autoren zu stützen, aber mit Gibbs Sampler können Sie möglicherweise Ihr eigenes Themenmodell angeben. Aus Gründen der Erweiterbarkeit ist die erste Version unter GPL-2 und die zweite unter LGPL lizenziert. Dies hängt möglicherweise davon ab, wofür Sie sie erweitern müssen (GPL-2 ist in Bezug auf den Open Source-Aspekt strenger, dh, Sie können sie nicht verwenden in proprietärer Software).

Performance: Ich kann dir hier nicht helfen, ich habe bisher nur Topic-Modelle verwendet.

Fazit:
Ich persönlich benutze topicmodels, wie es gut dokumentiert ist (siehe das JSS-Paper oben) und vertraue den Autoren (Grün hat auch flexmix implementiert und Hornik ist R-Kernmitglied).

Momo
quelle
7
Erstens bin ich mir sicher, dass TopicModels ein ausgezeichnetes Paket ist, und ich stimme zu, dass es sehr gut dokumentiert ist. Was das "Vertrauen" der Autoren des LDA-Pakets betrifft, war Jonathan Chang mein Doktorand, und ich vertraue seinem Code voll und ganz. Er ist sowohl ein ausgezeichneter Software-Ingenieur als auch ein Wissenschaftler. Sein Paket ist einfach, lässt sich gut auf relativ große Sammlungen skalieren und es ist schön, die Ergebnisse in R zu untersuchen. (Ich mag und ich bin an die spärliche Matrixdarstellung von Dokumenten gewöhnt.) Bemerkenswerterweise implementiert LDA andere Modelle, einschließlich relationaler Modelle Themenmodelle, betreute LDA (mit GLM) und stochastisches Blockmodell mit gemischten Mitgliedern.
Vielen Dank fürs Abwägen. Ich bin mir sicher, dass das ldaPaket großartig ist. Ich wollte nicht implizieren, dass es ldaeinen irgendwie minderwertigen Code hat. Ich gab meinen persönlichen Eindruck an (die Dokumentation wirkte etwas schlampig). Da dies> 2 Jahre her war, habe ich die Antwort leicht bearbeitet (die Tippfehler auf der CRAN-Seite sind immer noch vorhanden, ich denke, es wäre gut, wenn sie behoben würden, aber diese E-Mail scheint verloren gegangen zu sein).
Momo
Ich vermute, Sie haben viel Erfahrung mit beiden Paketen und wissen am meisten über das allgemeine Thema Bescheid. Wie wäre es, wenn Sie eine Antwort geben, in der einige Vor- und Nachteile beider Pakete aufgelistet sind? Ich habe es nicht verwendet lda, daher konnte ich es nicht empirisch beurteilen. Vorausgesetzt, dies würde dem OP und allen anderen sicherlich helfen und mögliche (nicht beabsichtigte) Ungerechtigkeiten korrigieren. Vielen Dank!
Momo
1
Ich habe auch beide ausprobiert und festgestellt, dass das ldaPaket mehr Optionen enthält. Es ist jedoch schwierig zu verstehen, wie Ihre Daten formatiert werden müssen, damit sie in das Modell passen. Das topicmodelsPaket funktioniert gut mit dem tmPaket, während das ldaPaket eine Liste anfordert, deren Erstellung nicht klar ist.
Omri374
12

+1 für Themenmodelle . @ Momos Antwort ist sehr umfassend. Ich möchte nur hinzufügen, dass topicmodelsEingaben als Dokumentterm-Matrizen verwendet werden, die einfach mit dem tmPaket oder mit Python erstellt werden können. Das ldaPaket verwendet eine esoterischere Form der Eingabe (basierend auf Blei's LDA-C) und ich hatte kein Glück, die eingebauten Funktionen zu verwenden, um dtm in das ldaPaketformat zu konvertieren (die LDA-Dokumentation ist sehr schlecht, wie Momo bemerkt).

Ich einige Code, der beginnt mit Rohtext, vorverarbeitet es in tmund setzt es durch topicmodels(einschließlich der optimalen Anzahl von Themen im Voraus zu finden und die Arbeit mit dem Ausgang) hier . Könnte für jemanden nützlich sein, zu dem ich topicmodelszum ersten Mal komme .

Ben
quelle
3
Für diejenigen , die nicht bereits mit tm , und wollen mit spielen LDA , JFreq setzt auch Klartexte in LDA-C der bevorzugten Format.
Conjugateprior
Gut zu wissen über JFreq, ich habe es noch nie gesehen. Danke für den Tipp!
Ben
1
Ich habe gerade die read_dtm_Blei_et_alFunktion in dem tmPaket entdeckt, die das Gleiche tut.
Ben
3

Das STM-Paket (R Structural Topic Model) von Molly Roberts, Brandon Stewart und Dustin Tingley ist ebenfalls eine gute Wahl. Aufbauend auf dem tm-Paket ist es ein allgemeiner Rahmen für die Themenmodellierung mit kovariaten Informationen auf Dokumentebene.

http://structuraltopicmodel.com/

Das STM-Paket enthält eine Reihe von Methoden (Rastersuche) und Maßnahmen (semantische Kohärenz, Residuen und Exklusivität) zur Bestimmung der Anzahl der Themen. Wenn Sie die Anzahl der Themen auf 0 setzen, kann das Modell auch eine optimale Anzahl von Themen bestimmen.

Das stmBrowser-Paket ist eine hervorragende Ergänzung zur Datenvisualisierung, um den Einfluss externer Variablen auf Themen zu visualisieren. Sehen Sie sich dieses Beispiel im Zusammenhang mit den Präsidentendebatten 2016 an: http://alexperrier.github.io/stm-visualization/index.html .

Alexis Perrier
quelle
0

Ich habe alle drei Bibliotheken benutzt, unter allen 3, nämlich Themenmodelle, lda, stm; Nicht jeder arbeitet mit n Gramm. Die TopicModels-Bibliothek ist gut geschätzt und funktioniert auch mit n Gramm. Aber wenn jemand mit Unigrammen arbeitet, dann mag der Praktiker STM vorziehen, da es eine strukturierte Ausgabe liefert.

Ganesh Sonawane
quelle