OCR出力で動作する英語以外の言語用のスペル修正システムを開発しています。私は非常に大きな辞書を使ってスペルミスをチェックし、提案をします。
スペルミスのほとんどは、似た形の文字によるものです。たとえば、、、、、ـجـ
など。これらの文字は英語にも存在しـچـ
ます。たとえば、、、、、などです。ـحـ
ـخـ
غ
ع
I
l
u
v
y
スペル チェック システムは、チェックしたい単語の候補を示します。たとえば、入力voga
すると、次の単語が提案されます。
volga
boga
yoga
toga
の長さvoga
は 4 であるため、4 文字の候補のみを保持します。ここで、OCR エンジンはv
asを検出できるためy
(形式が似ているため)、OCR 出力としてyoga
の最適な候補として選択します。voga
私たちの言語では、この種の選択は非常に効果的です。たとえば、 を入力するمدپر
と、次の単語が提案されます。
مدارا
مدار
مدیر
مراد
セット (この例ـبـ
でـپـ
は、 、ـیـ
、ز
、ر
、ژ
、ذ
、、 )د
と単語の長さに基づいて、 の最適なオプションになります。مـ
فـ
قـ
مدیر
مدپر
この関数を PHP スクリプト言語で通常実装する方法は、提案された単語を同じ長さに保ち、すべてのセット ( مدپر
、 、فدپر
、 、など)قدپر
を置き換えて、スペルが間違っている単語の可能な組み合わせをすべて作成し、検索することです。提案リスト内の同じ単語。しかし、この実装方法は非常に遅く (特に大規模なコンテキストでは)、ほとんど役に立ちません。مذپر
فذپر
قذپر
PHP でこの種の関数を実装するための最良の方法またはアルゴリズムは何ですか?
アップデート:
候補リストを生成するエンジンは最適化されており、通常は候補リストに正しい単語が含まれています。問題は、私のシステムが人工知能なしで正しい単語として提案の 1 つを選択しなければならないことです。この方法は私の言語には適していると思います。なぜなら、似たような形の文字のセットがたくさんあり、OCR エンジンが通常単語を間違って検出するのはそのためです。しかし、より良い方法がある場合は、それらを提案することを歓迎します。