2016-08-30 9 views
1

JavaでApache Spark MLを使用してLDAモデルを作成しようとしています。入力ドキュメントはString形式です。私は数字形式のトピックを取得しますが、単語フォーマットは取得しません。LDAのトピックをJavaでsparkを使用して単語形式でトピックモデルを表示するには

悲しいことに、解決策はR- LDA with topicmodels, how can I see which topics different documents belong to?ですが、私はJavaでSparkのML libを使って解決策を探しています。

ご協力いただければ幸いです。ありがとう!

答えて

1

あなたのパイプラインでCountVectorizer変圧器を使用している場合は、この方法でインデックス付きの語彙を回復することができます。そして、

String[] vocabulary= countVectorizerModel.vocabulary(); 

、あなたはそのテキスト>(期間カウント)変換から入手SparseVectors上LDAを実行します。

Tuple2<int[], double[]>[] topicsDescribed = ldaModel.describeTopics(); 

int idxTopic = 0; 
for (Tuple2<int[], double[]> element : topicsDescribed) { 

    idxTopic++; 
    int[] termIndices = element._1; 
    double[] termScores = element._2; 

    System.out.println("Topic >> " + idxTopic); 
    for (int i = 0; i < termIndices.length; i++) { 
      System.out.println("termIndex --> " + termIndices[i] + + "word="+ vocabulary[termIndices[i]] + + ",score= " + termScores[i]); 
     } 
    } 
} 

、LDAの結果を見ると、あなたがそのような

ldaModel.vocabSize() == vocabulary.length 
として、パイプラインを通じて用語の語彙を一貫しておくので、これは動作します
関連する問題