Как создать выравнивание для моделей перевода на основе слов, если количество слов в обоих предложениях различно - PullRequest
0 голосов
/ 04 ноября 2019

Я работаю над внедрением IBM Model 1. У меня есть параллельный корпус из примерно 2 000 000 предложений (с английского на голландский). Кроме того, предложения двух документов уже выровнены. Цель состоит в том, чтобы перевести голландское предложение на английский язык и наоборот.

Код, который я использую для генерации выравниваний:

A = pair_sent[0].split()  # To split English sentence
B = pair_sent[1].split()  # To split Dutch sentence
trips.append([zip(A, p) for p in product(B, repeat=len(A))])

Теперь есть пара предложений с неравнымколичество слов (например, 10 на английском и 14 в переводе на голландский). Наш профессор сказал нам, что мы должны использовать NULL или пропустить слово. Но я не понимаю, как это сделать? Куда вставить NULL и как выбрать слово, которое нужно отбросить.

В конце я требую, чтобы пара предложений имела одинаковое количество слов.

1 Ответ

0 голосов
/ 11 ноября 2019

Проблема не в том, что предложения имеют разное количество слов. В конце концов, модель IBM рассчитывает для каждого слова в исходном предложении распределение вероятностей по всем словам в целевом предложении и не заботится о том, сколько слов содержит целевое предложение. Проблема заключается в том, что в целевом предложении могут быть слова, не имеющие контрагента.

Если вы добавляете слово NULL в целевое предложение (независимо от того, где, потому что IBM Model 1 делаетне рассматривайте возможность переупорядочения), вы также можете смоделировать вероятность того, что слово не имеет контрагента в целевом предложении.

Фактическое двуязычное выравнивание затем выполняется с использованием эвристики симметризации из пары моделей IBM наобе стороны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...