Запуск SVD в Spark Scala - PullRequest
       9

Запуск SVD в Spark Scala

0 голосов
/ 10 сентября 2018

У меня есть RDD, в котором у меня есть слово и его векторное представление. Я последовал следующему примеру: https://spark.apache.org/docs/latest/mllib-dimensionality-reduction.html

Класс SingularValueDecomposition возвращает RowMatrix. В нем нет слова, для которого вектор был изначально сгенерирован в RowMatrix. Я не понимаю, как использовать вывод SingularValueDecomposition сейчас, так как это просто уменьшенная матрица без метки слова.

Кто-нибудь сталкивался с подобной проблемой?

1 Ответ

0 голосов
/ 11 сентября 2018

Мне удалось сделать, выполнив следующие действия:

// GET word and vector.
val cvModel: CountVectorizerModel = new  CountVectorizer().setInputCol("filteredWords").setOutputCol("features").setVocabSize(100000).setMinDF(2).fit(newSentenceData)
// Model is fitted
val fittedModel = cvModel.transform(newSentenceData)

// Converted the Dataframe to RDD as the SVD library works on RDD.
val rddVectorWithAllColumns = fittedModel.rdd

// Here, i have truncated the code and assumed that svd variable is holding the model. In this step, i am accessing the U matrix and adding the word back to the RDD so that we can get reduced vectors and word.
val test = svd.U.rows.map(row => row.toArray).zip(rddVectorWithAllColumns.map(row => row.getString(0))).map(line => line._2 + "\t" + line._1.mkString("\t"))
...