0

eclipse Mars、Java 8、spark spark-assembly-1.6.1-hadoop2.4.0.jar を使用して、Latent Semantic Analysis LSA を実装しています。ドキュメントをトークンとして渡し、SVD などを取得しました。

   HashingTF hf = new HashingTF(hashingTFSize);
    JavaRDD<Vector> ArticlesAsV = hf.transform(articles.map(x->x.tokens));
  JavaRDD<Vector> ArticlesTFIDF = idf.fit(ArticlesAsV).transform(ArticlesAsV);
RowMatrix matTFIDF = new RowMatrix(ArticlesTFIDF.rdd());
   double rCond= 1.0E-9d;
    int k = 50;
    SingularValueDecomposition<RowMatrix, Matrix> svd =  matTFIDF.computeSVD(k, true, rCond);

1つを除いて、すべてが完全に機能します。それは、ハッシュTFから用語のインデックスを取得しようとするときです

int index = hf.indexOf(term);

同じインデックスを持つ用語がたくさんあることがわかりました。それらは私が得たいくつかです

0 : ターム
1 : すべて
1 : 次
2 : tt
3 : ザ
7 : ドキュメント
9 : そのような
9 : マトリックス
11 : ドキュメント
11 : 約
11 : それぞれ
12 : 関数
12 : チャンス
14 : これ
14 : 提供
する用語のベクトルを何かに取得しようとすると、同じインデックスを持つ別のベクトルを取得する可能性があります。レンマタイゼーションとストップワードの削除後にそれを行いましたが、それでも同じエラーが発生しました。見逃したものはありますか?または更新が必要なコンポーネント (MLip など) のエラー。各用語を一意に保つにはどうすればよいですか。

4

1 に答える 1