2015-09-16 34 views

Odpowiedz

13

Od wersji Spark 1.5 ta funkcja nie została zaimplementowana dla DistributedLDAModel. Co masz zamiar trzeba zrobić, to przekształcić swój model do LocalLDAModel stosując metodę toLocal a następnie wywołać metodę topicDistributions(documents: RDD[(Long, Vector]) gdzie documents są nowe (tj out-of-szkolenia) dokumenty, coś takiego:

newDocuments: RDD[(Long, Vector)] = ... 
val topicDistributions = distLDA.toLocal.topicDistributions(newDocuments) 

To będzie mniej dokładne niż algorytm EM, który sugeruje this paper, ale zadziała. Alternatywnie, możesz po prostu użyć nowego algorytmu szkolenia wariacyjnego EM online, który już daje LocalLDAModel. Oprócz tego, że jest on szybszy, ten nowy algorytm jest również korzystniejszy ze względu na fakt, że w przeciwieństwie do starszego algorytmu EM do dopasowywania DistributedLDAModels, optymalizuje parametry (alphas) ​​Dirichleta wcześniej, niż zmiesza wagę dla dokumentów. Według Wallach, et. al., optymalizacja alfów jest bardzo ważna dla uzyskania dobrych tematów.

+1

dzięki. odpowiedź jest bardzo przydatna! Jeśli to możliwe, czy można opracować więcej w jaki sposób wyodrębnić dane wyjściowe z sekcji Składniki tematów do bardziej reprezentowalnych wyników? – HappyCoding

+0

Zaimplementowałem to i pokazałem, jak wydrukować tytułDystrybucje [tutaj] (https://gist.github.com/alex9311/774089d936eee505d7832c6df2eb597d) – alex9311

+0

Czy coś zmieniono dla wersji 1.6? –