翻訳確率 P(c|e) を含むバイリンガル辞書 (「確率」) があります。これは、特定の英単語 e が与えられた場合に、翻訳が特定の中国語の単語 c になる確率です。辞書のキーは次のようになります。probabilities[chinese_word + " | " + english_word]
また、英語の翻訳に合わせた中国語の文章のコーパス (「バイテキスト」) もあります。ここで、文の各ペア、各中国語の単語 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]