1

約 30,000 ドキュメントの tf-idf ベクトルを含む DB があります。

特定のドキュメントに対して、類似したドキュメントのセット (約 4 つ) を返したいと考えています。

データに K-Means (クラスタリング アルゴリズム) を (コサイン類似度を使用して) 実装することを考えましたが、多くの不確実性があるため、それが最良の選択であるかどうかはわかりません。作成するクラスターの数がわからない、クラスターのバランスが崩れすぎるのではないかと心配している、結果の品質が良いかどうかわからない、など。

経験豊富なユーザーからのアドバイスやヘルプは大歓迎です。

ありがとうございました、

ケイティ

4

2 に答える 2

0

特定のドキュメントに対して、類似したドキュメントのセット (約 4 つ) を返したいと考えています。

次に、k-means を実行しないでください。検索エンジンが行うように、tf-idf 類似度によって最も近い 4 つのドキュメントを返すだけです。これを k 最近傍検索として実装するか、検索エンジン ライブラリをインストールして最初のドキュメントをクエリとして使用することで、より簡単に実装できます。ルセンが思い浮かびます。

于 2011-06-21T15:42:09.560 に答える
0

私が理解したら、あなたは

  1. より大きなデータベースからキャッシュファイル/メモリに30kレコードを読み取る
  2. コサイン類似度、10 項 * 30k レコード -> ベスト 4。

これらのフェーズの実行時間を個別に見積もることができますか?

  1. 読み取りまたはキャッシュ: これはどのくらいの頻度で行われますか? 30k ベクトルを合わせるとどれくらいの大きさになりますか?
  2. 10 * 30k 乗加算: あなたの c / Java / ... またはいくつかの不透明な db で? C または Java では、1 秒未満で完了します。

一般に、詳細を把握する前に、大まかな見積もり を作成してください。

(ちなみに、ベスト 4 は std::partial_sort; ymmv よりもストレートな c の方が高速でシンプルです。)

于 2011-06-23T14:10:32.580 に答える