Paquetes R para realizar modelado de temas / LDA: solo `topicmodels` y` lda` [cerrado]

29

Me parece que solo dos paquetes R pueden realizar la asignación de Dirichlet latente :

Uno es lda, escrito por Jonathan Chang; y el otro es topicmodelsescrito por Bettina Grün y Kurt Hornik.

¿Cuáles son las diferencias entre estos dos paquetes, en términos de rendimiento, detalles de implementación y extensibilidad?

pregunta de bit
fuente

Respuestas:

26

Implementación: El paquete topicmodels proporciona una interfaz para el código GSL C y C ++ para modelos de tema de Blei et al. y Phan y col. Para el primero, usa Variational EM, para el último Gibbs Sampling. Ver http://www.jstatsoft.org/v40/i13/paper . El paquete funciona bien con las utilidades del paquete tm.

El paquete lda utiliza una muestra de Gibbs contraída para varios modelos similares a los de la biblioteca GSL. Sin embargo, ha sido implementado por los propios autores del paquete, no por Blei et al. Por lo tanto, esta implementación difiere en general de la técnica de estimación propuesta en los documentos originales que presentan estas variantes del modelo, donde generalmente se aplica el algoritmo VEM. Por otro lado, el paquete ofrece más funcionalidad que el otro paquete. El paquete también proporciona funcionalidad de minería de texto.

Extensibilidad: con respecto a la extensibilidad, el código del modelo de tema, por su propia naturaleza, puede ampliarse para interactuar con otro código de modelo de tema escrito en C y C ++. El paquete lda parece depender más de la implementación específica proporcionada por los autores, pero la muestra de Gibbs podría permitir especificar su propio modelo de tema. Para problemas de extensibilidad nota bene, el primero está licenciado bajo GPL-2 y el último LGPL, por lo que puede depender de para qué necesita extenderlo (GPL-2 es más estricto con respecto al aspecto de código abierto, es decir, no puede usarlo en software propietario).

Rendimiento: no puedo ayudarlo aquí, solo he usado modelos de tema hasta ahora.

Conclusión:
Personalmente lo uso topicmodels, ya que está bien documentado (consulte el documento JSS anterior) y confío en los autores (Grün también implementó flexmix y Hornik es miembro principal de R).

Momo
fuente
77
Primero, estoy seguro de que topicmodels es un paquete excelente, y estoy de acuerdo en que está muy bien documentado. Con respecto a "confiar" en los autores del paquete LDA, Jonathan Chang fue mi estudiante de doctorado, y confío completamente en su código. Es un excelente ingeniero de software y académico. Su paquete es fácil, se adapta bien a colecciones bastante grandes, y es bueno explorar los resultados en R. (Me gusta y estoy acostumbrado a la escasa representación matricial de documentos). Cabe destacar que LDA implementa otros modelos, incluidos los relacionales modelos temáticos, LDA supervisada (con GLM) y modelo de bloque estocástico de miembros mixtos.
Gracias por sopesar. Estoy seguro de que el ldapaquete es excelente, no quise decir que ldatenga un código inferior. Dije mi impresión personal (la documentación parecía un poco descuidada). Como eso fue hace> 2 años, edité la respuesta ligeramente (los errores tipográficos en la página de CRAN todavía están allí, creo que sería bueno que se corrijan, pero ese correo electrónico parece haberse perdido).
Momo
Supongo que tiene mucha experiencia con ambos paquetes y sabe más sobre el tema general, ¿qué le parece proporcionar una respuesta que enumere algunos de los pros y los contras de ambos paquetes? No lo usé lda, por lo que no pude hacer una evaluación empírica al respecto. Proporcionar eso seguramente ayudaría al OP y a todos los demás, así como a corregir cualquier posible injusticia (que no fue intencionada). ¡Gracias!
Momo
1
También probé ambos, y encontré que el ldapaquete contenía más opciones. Sin embargo, es difícil entender cómo formatear sus datos para que se ajusten al modelo. El topicmodelspaquete funciona bien con el tmpaquete, mientras que el ldapaquete solicita una lista que no tiene claro cómo crear.
Omri374
12

+1 para modelos de tema . La respuesta de @ Momo es muy completa. Solo agregaría que topicmodelstoma la entrada como matrices de términos de documento, que se hacen fácilmente con el tmpaquete o usando python. El ldapaquete utiliza una forma de entrada más esotérica (basada en LDA-C de Blei) y no he tenido suerte al usar las funciones integradas para convertir dtm al ldaformato del paquete (la documentación de lda es muy pobre, como señala Momo).

Tengo un código que comienza con texto sin procesar, lo procesa previamente tmy lo pone a prueba topicmodels(incluyendo encontrar el número óptimo de temas por adelantado y trabajar con la salida) aquí . Podría ser útil para alguien que viene topicmodelspor primera vez.

Ben
fuente
3
Para aquellos que aún no usan tm y desean jugar con lda , JFreq también pone textos simples en el formato preferido de LDA-C.
conjugateprior
Es bueno saber sobre JFreq, no lo he visto antes. ¡Gracias por el consejo!
Ben
1
Acabo de ver la read_dtm_Blei_et_alfunción en el tmpaquete que hace lo mismo.
Ben
3

El paquete R Structural Topic Model (STM) de Molly Roberts, Brandon Stewart y Dustin Tingley también es una gran opción. Construido sobre el paquete tm, es un marco general para el modelado de temas con información covariable a nivel de documento.

http://structuraltopicmodel.com/

El paquete STM incluye una serie de métodos (búsqueda de cuadrícula) y medidas (coherencia semántica, residuos y exclusividad) para determinar el número de temas. Establecer el número de temas en 0 también permitirá que el modelo determine un número óptimo de temas.

El paquete stmBrowser es un excelente complemento de visualización de datos para visualizar la influencia de variables externas en los temas. Vea este ejemplo relacionado con los debates presidenciales de 2016: http://alexperrier.github.io/stm-visualization/index.html .

Alexis Perrier
fuente
0

Usé las tres bibliotecas, entre las 3 viz., Topicmodels, lda, stm; No todos trabajan con n gramos. La biblioteca de modelos de tema es buena con su estimación y también funciona con n gramos. Pero si alguien está trabajando con uni gramos, entonces el profesional puede preferir la STM, ya que proporciona resultados estructurados.

Ganesh Sonawane
fuente