from jyquickhelper import add_notebook_menu
add_notebook_menu()
On cherche à construire un correcteur orthographique statistique. Il s'appuie sur l'hypothèse que la plupart du temps, un mot est écrit de façon correcte. Il fonctionne comme suit :
Au sein d'un texte sur l'hôpital, on a remarqué que le mot hôpital
est orthographié de manières différentes : hôpital (3 fois), hopital (1 fois), hospital (1 fois). En appliquant la règle décrite plus haut, l'écriture correcte serait hôpital.
Comment aborder ce problème ? Il faut réussir à le formuler de telles sortes qu'on arrive à le décrire sous forme informatique.
L'étape 2 suppose qu'on regroupe différents mots qui se ressemblent. Que veut dire que deux mots se ressemblent ? Ont-ils la plupart des lettres en commun ? Si on part de ce principe, on va essayer de construire une distancd entre deux mots : on compte le nombre de lettres supprimées puis ajoutées pour passer d'un mot $w_1$ à un mot $w_2$. Ceci ressemble à la distance de Jaccard. On suppose que chaque mot est un ensemble de lettres, il suffit de compter les lettres qui ne sont pas partie de l'intersection de ces deux ensembles.
Exemples :
Comment utiliser cette distance pour repérer les mots qui se ressemblent ? Une idée est de se fixer un seuil, 2 par exemple, puis pour un mot donné w, extraire tous les mots x qui vérifient : $distance(w, x) \leqslant 2$. Une fois qu'on a découpé un texte en une séquence de mots $(w_1, ..., w_n)$, on constuire une matrice de distances entre tous les couples de mots possibles.
Comment représenter cette matrice ? (avec les types standard de Python)