web-dev-qa-db-ja.com

Google検索の「もしかして」アルゴリズムの詳細はどこで確認できますか?

可能性のある複製:
「もしかして」をどのように実装しますか?

Googleの「もしかして」と同様の機能が必要なアプリケーションを書いています。彼らの検索エンジンで使用される機能:

alt text

そのようなものに利用できるソースコードはありますか、または私が自分のものを構築するのに役立つ記事をどこで見つけることができますか?

68
vidhi

私は1年半前にGoogleエンジニアによるセミナーに参加しました。そこで彼らはこれに対する彼らのアプローチについて話しました。プレゼンターは、彼らのアルゴリズム(の少なくとも一部)はほとんど知性を持たないと言っていました。むしろ、彼らがアクセスできる膨大な量のデータを利用します。彼らは、誰かが「ブリタニースピアーズ」を検索し、何もクリックせずに「ブリトニースピアーズ」をもう一度検索して何かをクリックした場合、彼らが探していたものについてかなり推測できると判断し、未来。

免責事項:これは、アルゴリズムの一部であった可能性があります

28
Smashery

Pythonには difflib というモジュールがあります。 _get_close_matches_と呼ばれる機能を提供します。 Pythonドキュメントから:

get_close_matches(Word, possibilities[, n][, cutoff])

「十分に良い」一致のリストを返します。 Wordは、一致が必要なシーケンス(通常は文字列)であり、possibilitiesは、照合するシーケンスのリストですWord(通常、文字列のリスト)。

オプションの引数n(デフォルトの_3_)は、返される近似一致の最大数です。 nは_0_より大きくなければなりません。

オプションの引数cutoff(デフォルトの_0.6_)は、[0、1]の範囲の浮動小数点数です。少なくともWordと同様のスコアを獲得できない可能性は無視されます。

可能性の中で最良の(以下n)一致がリストに返され、類似性スコアでソートされます。

_  >>> get_close_matches('appel', ['ape', 'Apple', 'Peach', 'puppy'])
  ['Apple', 'ape']
  >>> import keyword
  >>> get_close_matches('wheel', keyword.kwlist)
  ['while']
  >>> get_close_matches('Apple', keyword.kwlist)
  []
  >>> get_close_matches('accept', keyword.kwlist)
  ['except']
_

このライブラリは役に立ちますか?

16
Escualo

同様の機能を提供する http://developer.yahoo.com/search/web/V1/spellingSuggestion.html を使用できます。

5
Oligoglot

それがあなたの目的を果たしているかどうかはわかりませんが、小さなアプリケーションでは、辞書付きの文字列編集距離アルゴリズムで十分です。

3
Geek

他の多くの検索ライブラリと同様に、この機能を提供するXapianのソースコードをチェックアウトできます。 http://xapian.org/

3
m7d

google bombing に関するこの記事を見てみましょう。これは、以前に入力された結果に基づいて回答を提案するだけであることを示しています。

2
Kyle

Uは比較にngramを使用できます: http://en.wikipedia.org/wiki/N-gram

python ngram module: http://packages.python.org/ngram/index.html の使用

import ngram

G2 = ngram.NGram([  "iis7 configure ftp 7.5",
                    "ubunto configre 8.5",
                    "mac configure ftp"])

print "String", "\t", "Similarity"
for i in G2.search("iis7 configurftp 7.5", threshold=0.1):
    print i[0], "\t", i[1]

U取得:

>>> 
String  Similarity
"iis7 configure ftp 7.5"    0.76
"mac configure ftp  0.24"
"ubunto configre 8.5"   0.19
1
hugo24

このトピックの素晴らしい章は、公開されている Introduction to Information Retrieval にあります。

1
Fabian Steeg

私の知る限り、「もしかして?」機能はスペルをチェックしません。 googleによって解析されたコンテンツに基づく別のクエリのみを提供します。

1
Colin Hebert

Levenshtein-Automata を見てください

1
Francis