テキスト検索エンジンを構築するには?


8

HTML文字列があり、その文字列に関連する単語が含まれているかどうかを確認したいと考えています。

関連性は、テキストの頻度に基づいて測定できます。

私の問題を説明する例:

this is an awesome bike store
bikes can be purchased online.
the bikes we own rock.
check out our bike store now

次に、他のいくつかの単語をテストします。

bike repairs
dog poo

bike repairs関連としてマークするdog poo必要がありますが、関連としてマークしないでください。

質問:

  • これはどのように行うことができますか?
  • inまたはなどのあいまいな単語を除外する方法or

あなたのアイデアをありがとう!

私はそれがどんなキーワードがウェブサイトに関連しているのかを理解するためにグーグルがすることだと思います。私は基本的に彼らのページ上のランキングを再現しようとしています。


巨大なトピックです。Intoto IRをご覧ください。これにより、基本的な第一原理から、求めているものを構築する方法がわかります。検索に何かがあるTF-IDF、これはベイズ確率ですべてのものと見て解決しない実現
EdChum

「修理」を関連性があると考えるのはなぜですか?
ffriend 2014

ほんの一例でした。それについてあまり考えませんでした:)。それは関係ないと思いますか?
Hendrik

@Hendrik:@ <username>を使用してユーザーのアドレスを指定してください-SEはあなたのコメントについて私に通知しませんでした。関連性のカウントは、検索エンジンの重要なポイントです(通常、Webページと検索クエリの関連性を計算しますが、必要ですか?)。似ているが正確ではない単語(「自転車」や「サイクリスト」など)がある場合に、検索クエリに対するドキュメントの関連性を計算する方法を知りたいだけだと思いますか?
ffriend

私はあなたが2つのことを求めていると思います。1つは、かなりよく理解されている検索問題です。SolrまたはElasticsearchを使用して、重い作業を行うことができます。どちらも、ヒットに重みを付けることで、コレクション内の関連する文書を見つけることができます。ただし、テキストの意味をより深く理解したい場合(つまり、「修理」は言及されていませんが、自転車店での典型的な活動です)、純粋な検索エンジンは横ばいになる場合があります。
eckes 2014

回答:


3
  • ドキュメントを前処理します(一部のステップはスキップされる場合があります)
  • ベクトル空間モデルを使用してドキュメントを表す(TF、前述のTF-IDFまたは他のモデルを使用できます)
  • 同じことをクエリで行います。前処理を行い、ベクトル空間で表現します。
  • ベクトルの類似度を計算することにより、最も類似したドキュメントを見つけます(例:コサイン類似度を使用)

これが情報検索プロセスの概要です

Christopher D. Manning、Prabhakar Raghavan、HinrichSchützeによる情報検索入門は、IRを始めるのに非常に良い本です。


または、Apache Solrを使用して必要なすべてをすぐに利用できます(または、独自のアプリケーションを構築するためにSolrで使用されるApache Lucene


1

私はずっと前にElastic Searchで遊んだことを覚えています(このWebサイトは、今私が覚えているものとは大きく異なります)。ここに人間の言語を扱うことに関するいくつかのものがあります:http : //www.elasticsearch.org/guide/en/elasticsearch/guide/current/languages.html

Elastic searchは問題の大きなバズーカのようなものです。問題が非常に単純な場合は、最初からやり直したい場合があります。それについてウェブにいくつかのドキュメントがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.