2012-03-26 4 views
2

自分のクワッドダンプを使ってfreebase search apiのローカルバージョンを構築しようとしています。彼らは名前を一致させるためにどのアルゴリズムを使用するのだろうか?あなたがfreebase.comに移動し、入力した場合の例として、あなたはfreebaseはどの名前のアルゴリズムと一致するのですか?

  • 「アポハイキング協会は」
  • 「ハイキングジョージア」
  • 「ハイキングバージニア州の国家を「ハイキング」を取得「ハイキング」森」
  • 『ハイキングコース』、それは辞書式順序でトライだ

答えて

7

うわー、多くの推測!私はあまりにも推測しないで水をあまりにも泥ではないことを願っています。

自動補完ボックスの電源は、基本的にFreebase Suggestによって供給され、電源はFreebase Searchサービスです。 1)名前、2)指定された言語のすべてのエイリアス、3)関連付けられたWikipediaの記事からのリンクアンカーテキスト、4)識別子(Freebaseによるキーと呼ばれる)などが含まれます。 Wikipediaの記事タイトル(およびリダイレクト)のようなものです。

さまざまなものがどのように重み付け/ブーストされているかは明らかにされていませんが、しばらく遊んでいると感じることができます。 APIからわかるように、タイプやその他の基準でフィルタリング/重み付けを行う機能もあります。これは、状況に応じて機能します。たとえば、レコードラベルをアルバムに追加する場合、レコードラベルとして入力されたトピックは、そうでないものに比べてブーストされます(ただし、ユースケースを許可するために他のタイプのものに引き続きアクセスできますターゲットトピックに適切なタイプがまだ適用されていない場合)。

サービスの仕組みについての少しの洞察が得られますが、という検索サービスを構築してみてはどうでしょう。

Googleの前のMetaweb検索の実装はLuceneをベースにしていたので、これを出発点として間違いなく使用することができます。あなたはその中のいくつかの詳細を読むことができますmailing list archive

1

ほとんどの場合。

+0

ターゲットが最初の単語でない場合に効率的でしょうか?例:「Apo Hiking Society」ここでは「Hiking」は第2の単語です – stackOverlord

+0

これは、辞書の作成以外のものです。ちょうどGoogleのように結果を注文する独自の基準があります。これはセマンティック検索のように思えます。 –

1

Boyer-Moore、Smith-Waterman-Gotoh、Knuth Morriss-Prattなど多くのアルゴリズムがあります。また、Levenshteinなどの距離編集アルゴリズムを確認することもできます。あなたの目的に最も適したものを見るために遊ぶ必要があります。

シェフィールド大学のSimmetricsライブラリです。

2

英語名、エイリアス、Wikipediaスニペットなどの選択されたフィールドに逆インデックスを使用している可能性があります。あなたのアプリケーションでは、Luceneのようなものを使って達成することができます。アルゴリズム側については

、私は

Zobel and Moffat (2006): "Inverted Files for Text Search Engines"次の用紙に良い概要を見つけます。

関連する問題