そのため、2 つのランダム ワード ジェネレーターを作成しています。1 つはバイグラムに基づいており、もう 1 つはトライグラムに基づいています。いずれの場合も、辞書を設定しました (2 つのネストされた辞書を持つバイグラム、または 3 つのネストされた辞書を持つトリグラムと呼ばれます)...他にも多くのコードがありますが、次の行で問題が発生します。トライグラムジェネレーター:
#generates random phonemes
def generate_trigramphoneme(phoneme1, phoneme2):
rand = random.uniform(0,1)
**for phoneme3 in trigrams[phoneme1][phoneme2]:**
rand -= trigrams[phoneme1][phoneme2][phoneme3]
if rand < 0.0: return phoneme3
return phoneme3
ここで、変数「phoneme3」はローカルの非境界エラーを生成します。
ただし、ここでは、バイグラム ジェネレーター (動作します) では、変数 "Following" は問題なく、エラーは発生しません。
def generate_bigramphoneme(phoneme):
rand = random.uniform(0,1)
for following in bigrams[phoneme]:
rand -= bigrams[phoneme][following]
if rand < 0.0: return following
return following
エラーを理解するのに役立ちましたが、エラーを取り除く方法、またはバイグラムコードがエラーを生成しない理由はまだわかりません...