Pacchetti R per eseguire modellazione di argomenti / LDA: solo `topicmodels` e` lda` [chiuso]


29

Mi sembra che solo due pacchetti R siano in grado di eseguire l' allocazione di Dirichlet latente :

Uno è lda, scritto da Jonathan Chang; e l'altro è topicmodelsscritto da Bettina Grün e Kurt Hornik.

Quali sono le differenze tra questi due pacchetti, in termini di prestazioni, dettagli di implementazione ed estensibilità?

Risposte:


26

Implementazione: Il pacchetto topicmodels fornisce un'interfaccia al codice GSL C e C ++ per i modelli di argomenti di Blei et al. e Phan et al. Per il primo utilizza Variational EM, per il secondo campionamento Gibbs. Vedi http://www.jstatsoft.org/v40/i13/paper . Il pacchetto funziona bene con le utility del pacchetto tm.

Il pacchetto lda usa un Gibbs Sampler compresso per un numero di modelli simili a quelli della libreria GSL. Tuttavia, è stato implementato dagli stessi autori del pacchetto, non da Blei et al. Questa implementazione pertanto differisce in generale dalla tecnica di stima proposta negli articoli originali che introducono queste varianti di modello, dove viene solitamente applicato l'algoritmo VEM. D'altra parte, il pacchetto offre più funzionalità rispetto all'altro pacchetto. Il pacchetto fornisce anche funzionalità di mining del testo.

Estensibilità: per quanto riguarda l'estensibilità, il codice topicmodel per sua stessa natura può essere esteso per interfacciare altri codici modello di argomento scritti in C e C ++. Il pacchetto lda sembra basarsi maggiormente sull'implementazione specifica fornita dagli autori, ma lì il campionatore Gibbs potrebbe consentire di specificare il proprio modello di argomento. Per problemi di estensibilità nota bene, il primo è concesso in licenza in base a GPL-2 e il secondo LGPL, quindi potrebbe dipendere da cosa è necessario estenderlo (GPL-2 è più rigoroso per quanto riguarda l'aspetto open source, cioè non è possibile utilizzarlo nel software proprietario).

Performance: non posso aiutarti qui, finora ho usato solo modelli di argomenti.

Conclusione:
Personalmente uso topicmodels, poiché è ben documentato (vedi il documento JSS sopra) e mi fido degli autori (Grün ha anche implementato flexmix e Hornik è membro core di R).


7
Innanzitutto, sono sicuro che topicmodels sia un pacchetto eccellente e sono d'accordo che sia ben documentato. Per quanto riguarda "fidarsi" degli autori del pacchetto LDA, Jonathan Chang era il mio dottorando e mi fido completamente del suo codice. È un eccellente ingegnere informatico e studioso. Il suo pacchetto è semplice, si adatta bene a raccolte abbastanza grandi ed è bello esplorare i risultati in R. (Mi piace e sono abituato alla rappresentazione sparsa della matrice dei documenti.) Da notare, LDA implementa altri modelli, tra cui quelli relazionali modelli tematici, LDA supervisionato (con GLM) e blockmodel stocastico a appartenenza mista.

Grazie per il peso. Sono sicuro che il ldapacchetto sia ottimo, non intendevo implicare che ldaabbia in qualche modo un codice inferiore. Ho dichiarato la mia impressione personale (la documentazione sembrava un po 'sciatta). Dato che era> 2 anni fa ho modificato leggermente la risposta (i refusi nella pagina CRAN sono ancora lì, penso che sarebbe positivo per loro essere riparati ma quell'e-mail sembra essersi persa).
Momo,

Immagino che tu abbia molta esperienza con entrambi i pacchetti e sappia di più sull'argomento generale, che ne dici di fornire una risposta che elenchi alcuni dei pro e dei contro di entrambi i pacchetti? Non l'ho usato lda, quindi non ho potuto darne una valutazione empirica. Fornire ciò aiuterebbe sicuramente l'OP e tutti gli altri, oltre a correggere eventuali ingiustizie (che non erano previste). Grazie!
Momo,

1
Ho anche provato entrambi e ho trovato il ldapacchetto contenente più opzioni. Tuttavia, è difficile capire come formattare i dati per adattarli al modello. Il topicmodelspacchetto funziona bene con il tmpacchetto, mentre il ldapacchetto richiede un elenco che non è chiaro come creare.
Omri374,

12

+1 per i modelli di argomento . @ La risposta di Momo è molto completa. Vorrei solo aggiungere che topicmodelsaccetta input come matrici di termini del documento, che possono essere facilmente create con il tmpacchetto o usando Python. Il ldapacchetto usa una forma di input più esoterica (basata sull'LDA-C di Blei) e non ho avuto fortuna ad usare le funzioni integrate per convertire dtm nel ldaformato del pacchetto (la documentazione di lda è molto scarsa, come nota Momo).

Ho un po 'di codice che inizia con il testo non elaborato, lo elabora tme lo mette in pratica topicmodels(incluso trovare il numero ottimale di argomenti in anticipo e lavorare con l'output) qui . Potrebbe essere utile a qualcuno che viene topicmodelsper la prima volta.


3
Per coloro che non usano già tm e vogliono giocare con lda , JFreq mette anche semplici testi nel formato preferito di LDA-C.
coniugato

Buono a sapersi su JFreq, non l'ho mai visto prima. Grazie per il consiglio!
Ben

1
Ho appena individuato la read_dtm_Blei_et_alfunzione nel tmpacchetto che fa la stessa cosa.
Ben

3

Anche il pacchetto R Structural Topic Model (STM) di Molly Roberts, Brandon Stewart e Dustin Tingley è un'ottima scelta. Costruito in cima al pacchetto tm è un framework generale per la modellazione di argomenti con informazioni sulla covariata a livello di documento.

http://structuraltopicmodel.com/

Il pacchetto STM include una serie di metodi (ricerca in griglia) e misure (coerenza semantica, residui ed esclusività) per determinare il numero di argomenti. Impostando il numero di argomenti su 0, il modello determinerà anche un numero ottimale di argomenti.

Il pacchetto stmBrowser è un ottimo complemento di visualizzazione dei dati per visualizzare l'influenza delle variabili esterne sugli argomenti. Vedi questo esempio relativo ai dibattiti presidenziali del 2016: http://alexperrier.github.io/stm-visualization/index.html .


0

Ho usato tutte e tre le librerie, tra tutte e 3 le viz., Topicmodels, lda, stm; non tutti lavorano con n grammi. La libreria topicmodels è buona con la sua stima e funziona anche con n grammi. Ma se qualcuno sta lavorando con uni grammi, il professionista potrebbe preferire lo stm in quanto fornisce un output strutturato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.