用MLib计算TF-IDF后如何从SparseVector获取idf-idf值对应的词?
最近使用spark的MLIb来计算TF-IDF,按照官网的示例代码:
import org.apache.spark.rdd.RDD
import org.apache.spark.SparkContext
import org.apache.spark.mllib.feature.HashingTF
import org.apache.spark.mllib.linalg.Vector
val sc: SparkContext = ...
// Load documents (one per line).
val documents: RDD[Seq[String]] = sc.textFile("...").map(_.split(" ").toSeq)
val hashingTF = new HashingTF()
val tf: RDD[Vector] = hashingTF.transform(documents)
import org.apache.spark.mllib.feature.IDF
// ... continue from the previous example
tf.cache()
val idf = new IDF().fit(tf)
val tfidf: RDD[Vector] = idf.transform(tf)
最后得到是Vector的RDD,Vector是一个抽象类,在这里一般返回的是其子类SparseVector,包含了三个域:size,indices,values。 values是一个Double型的数组,就是文档中每个词的tf-idf值,可是,当我要取出这个值对应的词时,却发现无从下手,不知道找到对应的词汇。有没有大神知道呢?