0

Spacy を使用していくつかのテキスト間で類似性を見つけたので、今では何百万ものエントリから類似のテキストを (瞬時に) 見つけようとしています。

何百万ものテキストを含むアプリがあり、ユーザーが要求した場合に同様のテキストを提示したいと考えています。

StackOverflow のようなサイトは、どのようにして同様の質問をすばやく見つけられるのでしょうか?

私は2つのアプローチを想像できます:

  1. テキストが挿入されるたびに、DB 全体が比較され、両方の質問の間でリンクが作成されます (両方の外部キーを持つ中間テーブルで)。
  2. テキストが挿入されるたびに、このテキストに関連付けられたフィールドにベクトルが挿入されます。ユーザーが同様のテキストを要求するたびに、DB で同様のテキストを「検索」します。

私の疑問は、2番目の選択肢にあります。単語ベクトルを格納するだけで、類似のテキストをすばやく検索できますか?

4

2 に答える 2

1

新しいリクエストが来るたびにすべてのテキストを比較するのは現実的ではありません。

大規模なデータセットで非常に高速にするには、Locality-sensitive Hasing (LSH) をお勧めします。高い確率で類似するエントリを提供します。アルゴリズムの複雑さを大幅に軽減します。

ただし、アルゴリズムを一度トレーニングする必要があります。これには時間がかかる場合がありますが、その後は非常に高速です。

https://towardsdatascience.com/understanding-locality-sensitive-hashing-49f6d1f6134 https://en.wikipedia.org/wiki/Locality-sensitive_hashing

アプリケーションに近いと思われるチュートリアルを次に示します: https://www.learndatasci.com/tutorials/building-recommendation-engine-locality-sensitive-hashing-lsh-python/

于 2019-06-13T22:22:01.367 に答える