因此,我创建了两个随机单词生成器,一个基于二元语法,另一个基于三元语法。在每种情况下,我都设置了一个字典(或者叫做bigrams,它有两个嵌套的字典,或者trigram,它有三个嵌套的字典)...and有很多其他的代码,但是下面这一行在trigram生成器中引起了一个问题:
#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我在eli bendersky的网站上查找了python的非绑定本地错误,这帮助我理解了错误,但我仍然不知道如何摆脱它,或者为什么二元语法代码没有产生错误……
发布于 2012-10-13 05:32:34
假设你在某个地方定义了一个trigrams,可能是因为在你的参数中,trigrams[phoneme1][phoneme2]是一个空的迭代器,因此循环永远不会执行,phoneme3也不会被绑定。
https://stackoverflow.com/questions/12867261
复制相似问题