Зачем слова режут на части: BPE в переводе
BPE (byte pair encoding, «попарное слияние байтов») — приём, который склеивает частые пары соседних символов в кусочки. Его применили к переводу, чтобы редкие и незнакомые слова кодировать по частям, а не целиком.
Зачем это нужно
Нейросетевой перевод работает с фиксированным словарём в 30 000–50 000 слов, а перевод — задача с открытым словарём: слова в тексте не ограничены заранее. Раньше редкие слова переводили через откат к словарю; авторы предлагают кодировать их частями прямо в модели.
Как это работает
Части слов часто переводимы по отдельности: имена — копированием или транслитерацией, сложные слова — переводом частей, родственные слова и заимствования — по регулярным соответствиям. Для этого авторы применили BPE (byte pair encoding) — приём, который склеивает частые пары соседних символов в кусочки, а потом режет слова этими кусочками. К символам добавляют знак конца слова. Набор кусочков можно учить отдельно для исходного и целевого языков или один общий (joint BPE) — на объединении обоих.
Пример
Немецкое сложное слово Abwasser|behandlungs|anlange переводят по частям. Слово lower, которого не было в обучении, режут на уже известные low и er.
Что запомнить
- Частями слов можно перевести слово, которого не было в обучении.
- BPE даёт открытый словарь через компактный набор кусочков переменной длины.
- На WMT 15 модели с кусочками превзошли базовую линию с откатом к словарю: прирост до 1,1 BLEU для английского→немецкого и до 1,3 BLEU для английского→русского; joint BPE оказался лучше раздельного.