我有一本包含翻译概率 P(c|e) 的双语词典(“概率”)。这是给定一个特定的英文单词 e,翻译将是一个特定的中文单词 c 的概率。字典键如下所示:probabilities[chinese_word + " | " + english_word]
我还有一个中文句子的语料库(“bitext”)与其英文翻译对齐。现在,对于每对句子,对于每个中文单词 i,我想遍历所有英文单词 j 并选择 P(c_i | e_j) 最高的单词。为此,我将变量 argmax 定义为 0,并在概率相同或更高时更新此变量。
这就是问题所在:一些 c|e 组合具有完全相同的翻译概率。但是,由于字典键必须是唯一的,我的代码只存储它看到的最后一个 c|e 组合。如果它们共享最高的翻译概率,我希望它能够存储多个 c|e 组合。我该怎么做呢?
alignments = {}
for k in range(1, number_of_sent+1):
sentences = bitext[k-1]
chinese_sent = sentences[0]
english_sent = sentences[1]
for i in range(len(chinese_sent)):
argmax = 0
for j in range(len(english_sent)):
if probabilities[chinese_sent[i] + " | " + english_sent[j]] >= argmax:
argmax = probabilities[chinese_sent[i] + " | " + english_sent[j]]
alignments[k, chinese_sent[i]] = english_sent[j]