100万個のタグのセットと、これらのタグおよび場合によっては新しいタグを解析する必要のあるテキストがあるとします。ここでのタグの数は、私の思考の問題を説明するための単なる例です。線形にループするには多すぎ、メモリに保持するには多すぎます。
どういうわけか、フットプリントが小さい(そしてスピーディーなままの)ソリューションを考えることはできません。トレードオフを予想する必要があることは承知していますが、いくつかの概念を見落としていると思います。
適用されたタグはテキスト自体の一部ではない可能性があるため、これはインテリジェントなタグ付け( "Michael Jackson" = "artist"など)にとって特に興味深いものです。
単語のブラックリスト、人気のあるタグのキャッシュ、巨大なSQLクエリを実行する以外に、これに取り組む最も効果的な方法は何でしょうか。
(おかしなことに、この質問に自分でタグを付ける必要があります:-))
コメントスペースに限りがあるので、ここにいくつかの考えを追加しましょう。
- 整数ハッシュを使用すると速度が向上することに同意します。良いアイデア。
- ハッシュは反復の問題を解決しません(タグのリストに対して単語または単語の組み合わせをチェックしながら、各ハッシュ/タグをループします)
- 問題を改善するには:「helloworld」のようなテキストを想定します。このテキストには、3つの潜在的なタグ( "hello"、 "world"、 "hello world")があります。タグリストには「hello」のみが含まれる場合がありますが、解析後に「world」または「hello world」が追加される場合があります。これは、これらのタグがテキストに適用されないことを意味します。
問題:
- 本のサイズのテキストを想定し、すべての組み合わせ(「ナイン・インチ・ネイルズ」などですが、組み合わせの制限が4ワードであると仮定します)を繰り返してデータベース内のタグと比較するには、整数のハッシュを使用する場合でも、長い時間がかかります。
- タグリストは潜在的に長いため、保存されているタグの反復処理もおそらく遅くなります。
- タグの更新は、テキストの追加の全文検索を意味します-テキストの量とその長さに応じて、それは潜在的にデシベルキラーであり、まったく効率的ではありませんか?
- 「関連する」新しいタグを自動的に見つけるにはどうすればよいでしょうか。(ここでも、音楽に関する記事で「ナイン・インチ・ネイルズ」が思い浮かびますが、「新曲をリリースした」というのは良いタグにはなりません)。それはおそらくそれ自体の質問です。