Je suis en train de développer un correcteur orthographique pour une langue non anglaise qui fonctionne sur la sortie OCR. J'utilise de très grands dictionnaires pour vérifier les fautes d'orthographe et donner des suggestions.Amélioration de la correction orthographique basée sur un ensemble de lettres avec des formes similaires en PHP
La plupart des erreurs d'orthographe sont dues à des lettres de forme similaire. Par exemple ـجـ
, ـچـ
, ـحـ
, ـخـ
ou غ
, ع
, etc Ces lettres existent en anglais aussi, par exemple I
, l
et u
, v
, y
.
Le système de vérification orthographique donne quelques suggestions pour un mot que nous voulons vérifier. Par exemple, si nous saisissons voga
il vous conseillerons ces mots:
volga
boga
yoga
toga
Depuis la longueur de voga
est 4, alors nous allons ne gardez que des suggestions de 4 lettres. Maintenant, parce qu'un moteur OCR peut détecter v
comme y
(parce que leurs formes sont semblables), nous allons choisir yoga
comme meilleure suggestion pour voga
comme sortie OCR.
Dans notre langue, ce type de sélection est très efficace. Par exemple, si nous saisissons مدپر
, ces mots seront proposées:
مدارا
مدار
مدیر
مراد
Sur la base de nos ensembles (dans cet exemple: ـبـ
, ـپـ
, ـیـ
et ز
, ر
, ژ
et ذ
, د
et مـ
, فـ
, قـ
) et la longueur du mot, مدیر
serait la meilleure option pour مدپر
.
La façon dont je mets en œuvre habituellement cette fonction dans le langage de script PHP est de garder les mots dans la même longueur qui sont a alors suggéré de créer toutes les combinaisons possibles du mot mal orthographié en remplaçant tous les jeux (comme مدپر
, فدپر
, قدپر
puis مذپر
, فذپر
, قذپر
et ainsi de suite), puis de rechercher le même mot dans la liste des suggestions. Mais cette méthode de mise en œuvre est très lente (spécialement sur un grand contexte) et la rend presque inutile.
Quelle est la meilleure méthode ou algorithme pour implémenter ce type de fonction en PHP?
Mise à jour:
Les moteurs qui produisent des listes de suggestions sont optimisées et comprennent généralement le mot correct dans la liste de suggestions. Le problème est que mon système doit sélectionner l'une des suggestions comme le mot correct sans aucune intelligence artificielle. Donc, je pense que cette méthode est bonne dans ma langue car il existe de nombreux ensembles dans lesquels les lettres ont une forme similaire et c'est pourquoi les moteurs OCR détectent généralement les mots à tort. Mais s'il y a de meilleures méthodes, vous êtes invités à les suggérer.
S'il vous plaît pardonnez-moi, mais êtes-vous sérieux ??? C'est une question trop large. Des solutions existent, mais de nombreux scientifiques y ont passé des années, car c'est un sujet important. Et vous pouvez certainement trouver des centaines de pages sur ce sujet. Alors s'il vous plaît faites quelques recherches, puis revenez et montrez vos efforts, montrez ce que vous avez essayé et quels problèmes vous devez résoudre dans votre prochaine étape. –
@AlKepp Les moteurs que j'utilise pour obtenir des suggestions sont optimisés et donnent presque le mot correct comme une de leurs suggestions. Le problème est que mon système doit sélectionner automatiquement l'une des suggestions et en sélectionner une en utilisant cette méthode est vraiment efficace. Je ne sais pas comment devrais-je sélectionner le meilleur que l'on attend de faire une telle chose. –
@AlKepp J'ai également mis à jour ma question. –