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:
Est-il un code source disponible pour une telle chose ou où puis-je trouver des articles qui pourrait m'aider à construire mon propre?
Réponses
Trop de publicités?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#)
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
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 de0
.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?
Vous pouvez utiliser http://developer.yahoo.com/search/web/V1/spellingSuggestion.html qui donnerait une fonctionnalité similaire.
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/