早上好:) 我目前正在做词汇培训师。 我有一本字典,所有词汇及其翻译都存储在其中。现在我有一个查询,告诉我应该翻译什么词汇。
如果我现在正确输入翻译词,那么该词被查询的可能性就会降低。我怎样才能做到这一点?我想知道,是否有可能通过在回答翻译权时制作一个列表,使其比第一个列表少,并将词汇移入该列表中。
这是我的代码:
or
答案 0 :(得分:0)
您可以执行以下操作。每次用户获得正确的翻译时,都将该单词添加到单独的列表中。下次随机选择一个单词并将其放在新列表中时,请以一定的概率(例如50%)使用该单词;否则,请选择另一个单词。您需要将此逻辑放在自己的循环中,以防随机选择另一个“正确”的词。
react-native addpod [pod]
答案 1 :(得分:0)
好主意。
words = {
("Haus", "house", 1),
("Garten", "garden", 0.5),
("Freund", "friend", 1),
("Freundin", "friend", 1)
}
def get_word():
total_probability = sum(map(words, lambda x: x[2]))
selected = random.random() * total_probability
current_probability = 0
for word, translation, probability in words:
current_probability += probability
if select < current_probability:
return word, translation
答案 2 :(得分:0)
您可以使用random.choices
来指定样本权重。然后,我还将词汇表存储为一个列表,以保持相对于权重的排序。权重如何根据正确或错误的答案进行更新取决于您,但是您可以使用反比例缩放,例如:
vocab = [
("Haus", "house"),
("Garten", "garden"),
("Freund", "friend"),
("Freundin", "friend")
]
weights = [1] * len(vocab)
while ...:
index, (x, y) = random.choices(enumerate(vocab), weights)
attempt = input("Translate " + x)
if(attempt == y):
weights[index] = 1 / (1/weights[index] + 1)
else:
weights[index] = 1 / max(1/weights[index] - 1, 1)