0

現在、私はデータマイニング、テキスト比較について勉強しており、これを見つけました: https://en.wikipedia.org/wiki/Cosine_similarity

このアルゴリズムを実装して 2 つの文字列を比較することに成功したので、より複雑なタスクを達成することにしました。約25 万のドキュメントを含む DB を繰り返し処理し、DBからの 1 つのランダムなドキュメントをその DB 内のドキュメント全体と比較しました。

これらすべてのアイテムを比較するのに時間がかかりました: 316.35898590088 秒、つまり、250k のドキュメントすべてを比較するのに 5 分以上かかりました!

この結果、多くの問題が発生したため、いくつかの提案を求めたくありません。わかりやすくするために、まず、役立つと思われる詳細をいくつか説明します。

  • プログラミング言語としてPHPを選択しました。
  • ドキュメントは MySQL に保存されます。
  • コサイン類似度関数の実装には、この関数のみが含まれており、ストップ ワードやその他の派手なものはありません。

質問

  • より良いパフォーマンスを達成する方法はありますか?アルゴリズムを調整することによって(つまり、事前にベクトルを準備するなど)、他のテクノロジーを使用することなどによって、どこから始めるべきですか?
  • これらの比較結果を保存する方法と場所。たとえば、これらの 250,000 のドキュメントすべてを類似性スコアで表示できるグラフをいくつか印刷して、どれが最も類似しているかなどを特定できるようにしたいと考えています。
4

1 に答える 1

1

PHP と MySQL はどちらも、最悪の選択です。

効率的なコサイン類似度は、Lucene の中心にあります。鍵となる高速化手法は、comoressed inverted index です。しかし、PHPでそれらを再実装したくありません...

于 2015-07-12T21:07:06.797 に答える