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

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

В модели преобразователя это не очень очевидно, поскольку слова не выровнены1: 1. Я видел пару статей на эту тему, но я не уверен, какой из них лучше всего использовать. Каковы лучшие практики для этой проблемы?

1 Ответ

0 голосов
/ 14 октября 2019

Боюсь, вы не можете легко сделать это. Вы не можете легко добавить новые слова в словарь, потому что вы не знаете, какое вложение оно получит во время обучения. Вы можете попытаться удалить некоторые слова, или вы можете вручную изменить смещение в последнем слое softmax, чтобы некоторые слова не появлялись в переводе. Все остальное было бы довольно сложно сделать.

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

. Наиболее часто используемые подходы, вероятно, - это тонкая настройка модели или объединение с языковой моделью. Если вы хотите иметь параллельные данные в своем домене, вы можете попытаться настроить свою модель на эти параллельные данные (с простым SGD, небольшой скоростью обучения).

Если у вас есть только одноязычные данные на целевом языкевы тренируете языковую модель на этих данных. Во время декодирования вы можете смешивать вероятности из предметно-ориентированного языка и модели перевода. К сожалению, я не знаю ни одного инструмента, который мог бы сделать это из коробки.

...