OVH Cloud OVH Cloud

Recherche et correction orthographique...

5 réponses
Avatar
benajam
Hello,
je cherche un truc (soft libre, algo,...) qui va m'aider à faire une
correction orthographique sur un mot lorsque je lance une recherche
dans une application Web.

Exemple (marche sur google) : si je lance une recherche avec le mot "madona"

il m'affiche "Essayez avec cette orthographe : madonna "

Merci de votre aide.

5 réponses

Avatar
Vincent Cantin
Exemple (marche sur google) : si je lance une recherche avec le mot
"madona"


il m'affiche "Essayez avec cette orthographe : madonna "


La seule solution que j'ai en tete est d'appeler l'url de google avec le mot
dedans et de parser le code html retourne pour en extraire sa proposition.
Bien sur, quand la syntaxe de google va changer, il va falloir changer aussi
le prog ... desole, je ne vois pas mieux.

Vincent

Avatar
JScoobyCed
Sandra wrote:

Hello,
je cherche un truc (soft libre, algo,...) qui va m'aider à faire une
correction orthographique sur un mot lorsque je lance une recherche
dans une application Web.

Exemple (marche sur google) : si je lance une recherche avec le mot "madona"

il m'affiche "Essayez avec cette orthographe : madonna "

Merci de votre aide.


Il faut un dictionnaire de mots. Quand un mot n'est pas trouve
*exactement* orthographie, il faut faire un matching des mots les plus
proches. une solution simple est d'avoir un second dictionnaire qui gere
le match. Par exemple:
Query: madona
dictionnaire A: ..., madone, madonna,..., medecine,...
--> ne match pas *exactement*
dictionnaire B: ..., maddona(madonna), madona(madonna), madone(madonna)
--> match sur madona et renvoie le terme associe (entre parenthese dans
cet exemple)

Maintenant, pour ce qui est d'une API existante, je connais pas...

--
JScoobyCed
What about a JScooby snack Shaggy ? ... Shaggy ?!

Avatar
Vincent Cantin
Il faut un dictionnaire de mots. Quand un mot n'est pas trouve
*exactement* orthographie, il faut faire un matching des mots les plus
proches. une solution simple est d'avoir un second dictionnaire qui gere
le match. Par exemple:
Query: madona
dictionnaire A: ..., madone, madonna,..., medecine,...
--> ne match pas *exactement*
dictionnaire B: ..., maddona(madonna), madona(madonna), madone(madonna)
--> match sur madona et renvoie le terme associe (entre parenthese dans
cet exemple)

Maintenant, pour ce qui est d'une API existante, je connais pas...


L'approche avec 2 dictionnaires ne sera pas efficace du tout si
l'utilisateur fait un typo et que c'est ce qu'on chercher a resoudre.

Je propose tout simplement d'utiliser une mesure de similarite entre une
expression tapee par l'utilisateur et les entrees du dictionnaire (le A dont
vous parlez).

Cette mesure peut etre (par exemple) le nombre de paire de lettre
consecutives identiques entre les 2 mots compares.
Cette mesure n'etant que tres peu affectees par une difference de taille des
2 mots, je pense que ca devrait resister a la plus part des typos. Par
exemple "madona" et "madonna" vont avec une grande similarite avec cette
mesure, ainsi que "bonjour" et "vonjoir". Par contre, "bonjour" et "salut"
n'aura aucune similarite.

Vincent

Avatar
Thomas Baruchel
On 10 Aug 2004 02:23:40 -0700, Sandra wrote:
je cherche un truc (soft libre, algo,...) qui va m'aider à faire une
correction orthographique sur un mot lorsque je lance une recherche
dans une application Web.

Exemple (marche sur google) : si je lance une recherche avec le mot
"madona"


Il faut un dictionnaire des mots valide + un algorithme permettant
d'évaluer
la distance entre un mot erronné et les mots valides afin de proposer le
mot
valide le plus proche. L'algorithme classique s'appelle en anglais:
"edit distance algorithm" (distance d'édition)

Si tu lis le Caml, va voir:
http://www.eleves.ens.fr/home/frisch/info/distmot.ml
sinon, je te le convertirai en java (une méthode statique prenant deux
chaînes
de caractères en arguments suffira).

Cordialement,

--
Thomas Baruchel
To contact me, please, see at:
http://cerbermail.com/?OEyHGNQFEa

Avatar
Warko
Thomas Baruchel wrote:
On 10 Aug 2004 02:23:40 -0700, Sandra wrote:

je cherche un truc (soft libre, algo,...) qui va m'aider à faire une
correction orthographique sur un mot lorsque je lance une recherche
dans une application Web.



tiens tiens, ca me rappelle une servlet que j'ai développé jadis...

Exemple (marche sur google) : si je lance une recherche avec le mot
"madona"



Fonction gamma et compagnie (Wagner et Fisher)

Il faut un dictionnaire des mots valide + un algorithme permettant
d'évaluer
la distance entre un mot erronné et les mots valides afin de proposer le
mot


Wagner et Fisher (par exemple) je crois.


- définir un lexique (concepts) de référence
- récupérer la phrase (via web)
- extraire les mots un à un (StringTokenizer)
- pour chaque mot :
- convertir en minuscules
- tester si mot existe dans lexique et si oui retourner concept
- si non, tester l'inclusion (mots lexique dans mot, mot dans
mots lexique)
- si ok => stocker concept dans liste candidat
- retourner la sous liste de candidat
- si non test de Wagner et Fisher, si ok :
- stocker concept dans liste candidat
- retourner la sous liste de candidat
- si non indiquer qu'aucun mot n'a été trouvé

J'ai fait une servlet dans le cadre d'un TP d'info (école d'ingé) qui
gère les requêtes de recherche en langage naturel sur les howtos linux
(ex: Je voudrais la liste des howtos parlant de 3DFx, hwotos parlnat de
NEtwrok,...) avec gestion des fautes de frappes.

L'algo du dessus avait été fourni par le prof, a priori un chercheur
dans le domaine. Nous avions utilisé JLex, JCup avec Java :)
Je crois qu'il existe Flex (dans la lignée de JLex).

Si tu ne trouves pas de solution rapidement, contact moi en privé, j'ai
toutes les sources (que j'ai programmées) et le rapport (que j'ai écrit)

en espérant que ca puisse t'aider.

Warko