So erhalten Sie ein vocabArray aus einem LDA-Modell (org.apache.spark.ml.clustering.LDA). Ich bekomme gerade vocabSize, die Anzahl der gescannten Wörter zurückgibt.So konvertieren Sie den Themenindex zu Themenwörtern in LDA
Idealerweise brauche ich das Array der tatsächlichen Wörter aus dem Modell und dann basierend auf terminindices Ich möchte die Wörter in einem Eimer sehen.
Ich muss dies in Scala tun. Jeder Vorschlag wird hilfreich sein.
Dinge, die ich versucht habe bis jetzt, meine topicIndices ist ein Datenrahmen
topicIndices: org.apache.spark.sql.DataFrame = [topic: int, termIndices: array<int>, termWeights: array<double>]
Ich versuche, die Themen wie diese
val topics = topicIndices.map { case (terms, termWeights) =>
terms.zip(termWeights).map { case (term, weight) => (vocabArray(term.toInt), weight) }
}
Aber es führt den folgenden Fehler
>
val topics = topicIndices.map { case (terms, termWeights) =>
terms.zip(termWeights).map { case (term, weight) => (vocabArray(term.toInt), weight) }
} <console>:96: error: constructor cannot be instantiated to expected type; found : (T1, T2) required: org.apache.spark.sql.Row
val topics = topicIndices.map { case (terms, termWeights) =>
^<console>:97: error: not found: value terms
terms.zip(termWeights).map { case (term, weight) => (vocabArray(term.toInt), weight) }
^
zu holen
Sie verwenden die Funken Schale? – eliasah
Ich benutze Databricks Notebook für dieses Experiment. – Nabs
Das Problem ist in alten mllib LDA-Beschreibungsopics verwenden, um Array über Themen zurückzugeben. Jedes Thema war (Begriffsindizes, Begriffsgewichte im Thema). In ml wird LDA-Beschreibungoptiken zurückgegeben [topic: int, termIndices: array, termWeights: array ]. Früher war es einfach, das Schlüsselwertpaar zu kartieren, irgendwelche Ideen, wie wir in diesem neueren Modell abbilden sollten. –
Nabs