68 votes

Où puis-je me renseigner sur l’algorithme de « vouliez-vous dire » recherche Google ?

Double Possible:
Comment mettre en place un “tu veux dire”?

Je suis en train d'écrire une application où j'ai besoin d'une fonctionnalité similaire à Google "voulez-vous dire?" fonctions utilisées par le moteur de recherche:

alt text

Est-il un code source disponible pour une telle chose ou où puis-je trouver des articles qui pourrait m'aider à construire mon propre?

125voto

BrokenGlass Points 91618

Vous devriez vérifier Peter Norvigs l’article sur l’implémentation de la vérification orthographique en quelques lignes de python : Comment écrire un correcteur d’orthographe , il a également des liens pour des implémentations dans d’autres langues (par exemple c#)

28voto

Smashery Points 13208

J'ai assisté à un séminaire par un ingénieur Google un an et demi, où ils ont parlé de leur approche. Le présentateur a dit que (au moins une partie de) leur algorithme a peu d'intelligence; mais plutôt, utilise d'énormes quantités de données qu'ils ont accès. Ils ont déterminé que, si quelqu'un recherche pour "la Bretagne Speares", clique sur rien, et puis une autre recherche pour "Britney Spears", et clique sur quelque chose, on peut juste deviner ce qu'ils étaient à la recherche pour, et peut suggérer que, dans l'avenir.

Avertissement: Ce peut-être juste été une partie de leur algorithme

16voto

Escualo Points 12584

Python dispose d'un module appelé difflib. Il fournit une fonctionnalité appelée get_close_matches. À partir de la Documentation Python:

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

Retour une liste des meilleurs "bonne assez de" matchs. le mot est une séquence de pour ce qui des correspondances proches sont souhaitées (généralement une chaîne de caractères), et possibilités est une liste de séquences à l'encontre de qui de match mot (généralement une liste de chaînes de caractères).

Argument optionnel n(par défaut 3) est le nombre maximum de près les matches retour; n doit être plus de 0.

Argument optionnel de coupure(par défaut 0.6) est un flotteur dans l'intervalle [0, 1]. Possibilités que ne marquez pas de points à moins que similaire à wordsont ignoré.

Le meilleur (pas plus de n) correspond à parmi les possibilités sont retournés dans une liste, triée par similitude score, plus semblable à la première.

  >>> 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']

Pourrait cette bibliothèque vous aider?

5voto

Oligoglot Points 51

Vous pouvez utiliser http://developer.yahoo.com/search/web/V1/spellingSuggestion.html qui donnerait une fonctionnalité similaire.

3voto

m7d Points 450

Vous pouvez consulter le code source pour Xapian qui fournit cette fonctionnalité, à l’instar de beaucoup d’autres bibliothèques de recherche. http://Xapian.org/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X