apache spark - Spark MLlib LDA, ¿cómo inferir la distribución de temas de un nuevo documento invisible?
apache-spark apache-spark-mllib (1)
A partir de Spark 1.5, esta funcionalidad no se ha implementado para
DistributedLDAModel
.
Lo que tendrá que hacer es convertir su modelo a
LocalLDAModel
usando el método
toLocal
y luego llamar al
topicDistributions(documents: RDD[(Long, Vector])
método donde los
documents
son nuevos (es decir, sin capacitación) documentos, algo como esto:
newDocuments: RDD[(Long, Vector)] = ...
val topicDistributions = distLDA.toLocal.topicDistributions(newDocuments)
Esto será menos preciso que el algoritmo EM que sugiere
este artículo
, pero funcionará.
Alternativamente, puede usar el nuevo algoritmo de entrenamiento EM variacional en línea que ya da como resultado un
LocalLDAModel
.
Además de ser más rápido, este nuevo algoritmo también es preferible debido al hecho de que, a diferencia del antiguo algoritmo EM para ajustar
DistributedLDAModels
, está optimizando los parámetros (alfa) del Dirichlet antes del tema mezclando pesos para los documentos.
De acuerdo con
Wallach, et.
Alabama.
, la optimización de los alfa es bastante importante para obtener buenos temas.
Estoy interesado en aplicar el modelado de temas LDA usando Spark MLlib. Verifiqué el código y las explicaciones here pero no pude encontrar cómo usar el modelo para encontrar la distribución del tema en un nuevo documento invisible.