これを行うのは簡単ではありません。私がそれを行う方法は、単純な統計分析を使用することです。
英単語の辞書をダウンロードすることから始めます (または、実際には任意の言語 - 「発音可能な」単語の辞書が必要です)。次に、辞書の各単語を 3 文字のブロックに分割します。したがって、「辞書」という単語を考えると、「dic」、「ict」、「cti」、「tio」、「ion」、「ona」、「nar」、および「ary」に分割できます。次に、辞書内のすべての単語の各 3 文字ブロックを、3 文字ブロックを出現回数にマップするコレクションに追加します。このようなもの:
"dic" -> 36365
"ict" -> 2721
"cti" -> 532
などなど... 次に、各数値を辞書内の単語の総数で割って、数値を正規化します。このようにして、3 文字の組み合わせを、その 3 文字の組み合わせを含む辞書内の単語の割合にマッピングします。
最後に、IsWordPronounceable
次のようにメソッドを実装します。
bool IsWordPronounceable(string word)
{
string[] threeLetterBlocks = BreakIntoThreeLetterBlocks(word);
foreach(string block in threeLetterBlocks)
{
if (blockFrequency[block] < THRESHOLD)
return false;
}
return true;
}
明らかに、「調整」したいパラメータがいくつかあります。パラメータは 1 で、ブロックのTHRESHOLD
サイズも 2 か 3 か 4 などのほうがよいかもしれません。正しく設定するには、少し調整が必要になると思います。