前提・実現したいこと
100種類ある動物の単語の中からもっとも可能性が高い単語のものを算出したい。
例えば、
”い”ね・”い”む・( )”ぬ” と認識された →いぬ に変換
”う”きぎ・”う”ちぎ、ウ”さぎ” と認識された →うさぎ に変換 のようにアルゴリズムを書いて変換したい。
発生している問題・エラーメッセージ
100種類ある動物の単語の手書き文字のデータがそれぞれ100個ずつある。今OCRのアルゴリズムを作り、それぞれの文字画像を読み込ませたところ、正常にいぬorうさぎorライオンと認識される他に、
・いぬ の場合
いね、いむ、( )ぬ・・・などと認識されることがある
・うさぎ の場合
うきぎ、うちぎ、ウさぎ・・・などと認識されることがある
・ライオン の場合
ライオソ、ライ才ソ、ラ人オン・・・などと認識されることがある。
また、例えばいぬの場合、レ | ぬのように誤認識される時、文字数が増えてしまう事もある。
該当のソースコード
import Levenshtein #正解配列 string1 = ["いぬ","うさぎ","ライオン","カメレオン","りす","猫",など・・・100種類ある] #取得データの配列 string2 = ["いね","いむ","( )ぬ","うきぎ","ライオソ","ライ才ソ","ラ人オン",など・・・200種類ある] #単純に総当たりで求める for i in range(len(string1)): for j in range(len(string1)): print Levenshtein.distance(string1[i], string2[j])
とコードを書いた。
確かに総当たりでは求められるとは思うが、効率が悪い。if文を使い、取得データの配列の先頭の文字と正解の配列の先頭の文字を比較して効率化できるかと思ったが、取得データの配列の先頭の文字が必ずしも正解しているとは限らないため手法として微妙だと感じた。
何か効率的な方法がないかどうかをお聞きしたい。
試したこと
総当たりで読み取った単語が正解の単語群のどれに近いのかを計算する事
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。