でRowMatrix.columnSimilaritiesを使用した後、私は、文書の類似度を算出する必要があるの私のプロジェクトの一つのためのスパークmllibを使用しています。印刷CoordinateMatrix Apacheのスパーク
Iは、第RowMatrixにそれを変換しcolumnSimilarities()メソッドを用い、その後、TF-IDFはmllibの変換を用いてベクターに文書を変換します。
私はtf-idfのドキュメントを参照し、コサイン類似点についてDIMSUM実装を使用。スパーク・シェルで
これはScalaのコードでは、実行されます。
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
import org.apache.spark.mllib.feature.IDF
import org.apache.spark.mllib.linalg.distributed.RowMatrix
val documents = sc.textFile("test1").map(_.split(" ").toSeq)
val hashingTF = new HashingTF()
val tf = hashingTF.transform(documents)
tf.cache()
val idf = new IDF().fit(tf)
val tfidf = idf.transform(tf)
// now use the RowMatrix to compute cosineSimilarities
// which implements DIMSUM algorithm
val mat = new RowMatrix(tfidf)
val sim = mat.columnSimilarities() // returns a CoordinateMatrix
それでは、このコードブロックでは、私のinput file
、test1
は5つの短い文書(10未満項各)との単純なファイルであるとしましょう、各行に1つ
私はこのコードをテストしているので、オブジェクトsim
にあるmat.columnSimilarities()
の出力を見たいと思います。 1番目の文書ベクトルの2番目、3番目などの類似点を見たいと思います。
IはRowMatrix
クラスのcolumnSimilarities
メソッドによって返されるとsim
によって参照されるオブジェクトのタイプがあるCoordinateMatrix
ためdocumentationスパークと呼ばれます。
詳細なドキュメントを読むことで、CoordinateMatrixをRowMatrixに変換し、次にRowMatrixの行を配列に変換してからprintln(sim.toRowMatrix().rows.toArray().mkString("\n"))
のように印刷できると考えました。
しかし、それは私が理解できないいくつかの出力を与えます。
誰でも手助けできますか?どんな種類のリソースリンクなども大いに役立ちます!
ありがとうございます!
はあなたが入れ替わっていることが確認されていることを確認してください呼び出すことができる要素を取得するには、マトリックス形式
行に変換するには、次の、何の必要性を試すことはできませんtdif RowMatrix –