1

luceneクエリの結果からベクトル空間モデル(tf-idfの重み付けを使用)を取得する必要がありますが、その方法がわかりません。簡単なようですが、この段階で、皆さんの1人が私を正しい方向に向けることができるかもしれません。

私はしばらくの間これを行う方法を理解しようとしてきました、そして私が読んだものが私がまだ必要としているものである方法を理解していないか(おそらく)解決策が私のに投稿されていません特定の問題。クエリ結果から直接VSMを計算しようとしたこともありますが、私のソリューションは非常に複雑です。

編集:これに遭遇した他の人のために、ここにはるかに明確な質問の解決策があります。私が必要とするものは、IndexReader.getTermFreqVector(String field、int docid)メソッドによって取得できます。

残念ながら、これは私が作業しているインデックスが用語頻度ベクトルを保存していないため、私には機能しません。したがって、私はまだこれについてさらに助けを探していると思います!

4

3 に答える 3

3

この質問に答えるために、IndexReader.getTermFreqVector()クラスとSearcher.docFreq()クラスを使用して、一連のlucene結果のTF-IDF加重ベクトル空間モデルを計算できます。Luceneで一連の結果のVSMを直接取得する方法はありません。

于 2010-08-10T15:41:02.413 に答える
2

たぶん私はあなたがやろうとしていることを誤解していますが、Luceneのスコアリングはベクトル空間モデルを使用しています。ドキュメントとクエリを指定してスコアの計算方法の詳細が必要な場合は、Searcher.explain(Query query、int doc)を使用します。

于 2010-07-28T15:00:28.220 に答える
1

私があなたのコメントから正しく理解しているなら、あなたはクエリとドキュメントの間ではなく、ドキュメント間のVSMコサイン類似度を計算したいです。これを行う方法は正確にはわかりませんが、SimilarityクラスのLuceneAPIページを紹介します。おそらく、とメンバーSimilarityを変更するカスタムサブクラスを派生して使用し、ドキュメントをクエリオブジェクトに変換する方法を見つける必要があります。coordqueryNorm

(保証はありません。私はこのスコアを自分で理解しようとしています。)

于 2010-07-29T11:29:28.163 に答える