2012-04-11 14 views
7

Estoy usando la asignación de Dirichlet latente con un corpus de datos de noticias de seis fuentes diferentes. Estoy interesado en la evolución del tema, la emergencia, y quiero comparar cómo las fuentes son iguales y diferentes entre sí con el tiempo. Sé que hay una serie de algoritmos LDA modificados, como el modelo Author-Topic, Topics Over Time, y así sucesivamente.Implementando formas alternativas de LDA

Mi problema es que muy pocas de estas especificaciones de modelo alternativo se implementan en cualquier formato estándar. Algunas están disponibles en Java, pero la mayoría solo existen como documentos de conferencia. ¿Cuál es la mejor manera de implementar algunos de estos algoritmos por mi cuenta? Soy bastante hábil en R y Jags, y puedo tropezar con Python cuando me dan lo suficiente. Estoy dispuesto a escribir el código, pero realmente no sé por dónde empezar y no sé C o Java. ¿Puedo construir un modelo en JAGS o Python simplemente teniendo las fórmulas del manuscrito? Si es así, ¿alguien puede señalarme un ejemplo de hacer esto? Gracias.

+1

Tengo un amigo que, literalmente, solo tenía que hacer esto hace una semana. Finalmente implementó su propia versión de la muestra de Gibbs colapsado en Python y C. Dependiendo del tamaño de sus datos, puede que no tenga más remedio que usar lenguajes más rápidos. En cualquier caso, voy a ver si puedo hacer que este amigo publique sobre cómo resolvió este problema. – ely

+0

¿Has echado un vistazo a los paquetes 'R'' topicmodels' y 'lda'? También hay un poco de charla sobre esto en http://stats.stackexchange.com/ – Ben

+0

@Ben Sí, he usado ambos paquetes, pero la porción algorítmica real ya está compilada en ambos casos, lo que no se presta para extensión. El paquete lda es excelente y rápido, pero también estoy buscando algo de flexibilidad sin tener que aprender C o Java mientras escribo mi disertación. – Trey

Respuesta

5

La respuesta de mi amigo está abajo, disculpe el idioma por favor.

En primer lugar me escribió una implementación de Python del muestreo de Gibbs colapsado visto aquí (http://www.pnas.org/content/101/suppl.1/5228.full.pdf+html) y concretarse aquí (http://cxwangyi.files.wordpress.com/2012/01/llt.pdf). Esto fue lento como bolas.

Luego usé un ajuste de Python de una implementación C de este documento (http://books.nips.cc/papers/files/nips19/NIPS2006_0511.pdf). Que es tan rápido como f * ck, pero los resultados no son tan buenos como uno vería con NMF.

Pero las implementaciones de NMF que he visto, con scitkits, e incluso con la biblioteca NIMFA recientemente lanzada compatible con escaso scipy, todas se vuelven locas en cualquier corpus considerable. Mi nueva ballena blanca es una implementación dividida y distribuida de la cosa. Esto no será trivial.

+0

Gracias por el seguimiento. – Trey