2

スキャンした手書きの文書を読み取り、テキストに変換するプログラムを作成しています。認識された単語は、私が作成した約 300 語の辞書から取得する必要があります。たとえば、手書きの単語が「heilo」と認識されても、私の辞書には「hello」と「world」しか含まれていない場合、「hello」に変換する必要があります。ただし、「惑星」と認識した場合は、何とも一致しないはずです。考えられるアプローチは、認識された単語が辞書内の各単語とどれだけ一致するかのスコアを作成することだと思います。最小スコアに達しない場合、一致は見つかりません。

私はC#でアプリケーションを書いています。このようなことを行うライブラリ/例はありますか、それともすべてをゼロからコーディングする必要がありますか?

ありがとう

4

4 に答える 4

5

標準ライブラリには単語間の距離を計算するものは何もありませんが、インターネット上にはたくさんの例があります: "edit distance"または"Levenshtein distance"を調べてください。アイデアは、最初の文字列を 2 番目の文字列にするために、最初の文字列への変更の数の観点から類似性を測定することです。"i" を "l" に置き換え (最初の編集)、次に "o" を追加する (2 回目の編集) 必要があるため、"heil" と "hello" の間の距離は 2 です。

実装を探したり、独自に実装したりする場合は、メモリ効率が悪いため、2D 配列を使用した単純な実装は避けてください。O(min(m,n))"naive" の代わりに、メモリ要件のある変更を使用しますO(m*n)

于 2013-05-25T12:01:27.773 に答える
1

必要なことを行うためのライブラリは手元にありませんが、レーベンシュタイン距離を計算したいことを知っているWebを検索すると、検索に役立つ場合があります。

于 2013-05-25T12:01:09.143 に答える
1

おそらく、スペル チェッカーから始める必要があります。これを行うライブラリが多数あります

于 2013-05-25T12:01:22.943 に答える
0

オンラインでいくつかの c# スニペットがあり、ボールが転がります。

レーベンシュタイン: http://www.dotnetperls.com/levenshtein

ボイヤー・ムーア: http://www-igm.univ-mlv.fr/~lecroq/string/node15.html#SECTION00150

それらに基づいて、独自の Word Matcher モジュールを簡単に実装できます。

于 2013-05-25T12:30:28.143 に答える