112 votes

Comment mettre en place un "Vous voulez dire" ?

Duplicata possible :
Comment fonctionne l'algorithme Google "Did you mean ? Algorithme fonctionne-t-il ?

Supposons que vous ayez déjà un système de recherche sur votre site web. Comment pouvez-vous implémenter le "Did you mean : <spell_checked_word> "comme Google le fait dans certains requêtes de recherche ?

1voto

cherouvim Points 18550

Je le fais avec Lucene 's Vérificateur d'orthographe .

0voto

Keith Points 46288

Soundex est bon pour les correspondances phonétiques, mais fonctionne mieux avec les noms de personnes (il a été développé à l'origine pour les données de recensement).

Consultez également Full-Text-Indexing, la syntaxe est différente de celle de Google logic, mais elle est très rapide et peut traiter des éléments de langage similaires.

0voto

Michael Neale Points 7704

Soundex et "Porter stemming" (soundex est trivial, pas sûr pour porter stemming).

0voto

Il y a quelque chose appelé aspell qui pourrait aider : http://blog.evanweaver.com/files/doc/fauna/raspell/classes/Aspell.html

Il existe une gemme ruby pour cela, mais je ne sais pas comment y accéder depuis python. http://blog.evanweaver.com/files/doc/fauna/raspell/files/README.html

Voici une citation de l'implémentation ruby

Utilisation

Aspell vous permet de vérifier les mots et de suggérer des corrections. Par exemple :

  string = "my haert wil go on"

  string.gsub(/[\w\']+/) do |word|
    if !speller.check(word)
      # word is wrong
      puts "Possible correction for #{word}:"
      puts speller.suggest(word).first
    end
  end

Ces sorties :

Correction possible pour haert : cœur Correction possible pour wil : Will

0voto

Fabian Steeg Points 24261

La mise en œuvre efficace de la correction orthographique pour les moteurs de recherche n'est pas triviale (il ne suffit pas de calculer la distance edit/levenshtein pour chaque mot possible). Une solution basée sur des index de k-grammes est décrite dans Introduction à la recherche d'informations (texte intégral disponible en ligne).

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