У меня есть двуязычный словарь («вероятности»), содержащий вероятности перевода 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, если они имеют наибольшую вероятность перевода. Как мне это сделать?
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]
Благодарим за помощь! – Johanna