Архив рубрики ~Лента новостей~

Как переводить смешанный русский-казахский и не сойти с ума

Как переводить смешанный русский-казахский и не сойти с ума
Как переводить смешанный русский-казахский и не сойти с ума

В Казахстане часто смешивают казахский и русский в соцсетях, переписке, быту. Но попробуйте скормить русско-казахскую фразу любой системе машинного перевода (Machine Translation), и она начнёт чудить. Не потому, что она глупая,  а потому что данных для обучения моделей переводить такую языковую кашу почти нет.

В этот раз разбираю научную работу коллег из MWS AI и нескольких университетов, в которой они предложили подход для генерации синтетического датасета под эту задачу на базе уже существующих обычных параллельных корпусов на казахском и русском. Да, это синтетические данные, но в условиях, когда альтернативы нет, это спасает. Их модель, обученная на синтетике, обошла известные коммерческие системы (ручная оценка) в узком, но реальном сценарии.

Введение в проблему и краткий пересказ для тех, кому некогда читать 

В сфере обработки естественного языка переключение кодов (код-свитчинг) — это переход c одного языка на другой внутри одного высказывания. Для NLP-специалистов это та еще головная боль: непредсказуемость, вариативность, а данных для обучения моделей переводить этот языковой винегрет почти нет. Особенно если языки не из топ-10 по популярности. 

Для пар «английский-испанский» или «английский-хинди» еще можно что-то найти, а вот для пары «русский–казахский» публичный параллельный корпус с код-свитчингом днем с огнем не сыщешь. 

Авторы исследования собственноручно собрали такой корпус из 618 предложений, где казахская основа перемешана с русскоязычными вставками. Этого достаточно, чтобы оценивать модели, но катастрофически мало, чтобы их обучать.

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

Дальше они дообучили несколько готовых моделей — mBART, M2M100, NLLB-600 и самую большую NLLB-3.3B — и сравнили с коммерческими системами перевода.

По автоматическим метрикам (BLEU, ChrF++, COMET) коммерческие системы были впереди. Но, когда пригласили носителей, которые оценили перевод по шкале Ликерта от 1 до 5, картина поменялась: модель авторов набрала 3,09, против 2,80 и 3,49 конкурентов.

Разрыв небольшой, но значимый, потому что доказывает: синтетические данные сработали.

Ну и далее – подробнее.

Как найти данные, если их нет?

Я выше уже рассказал, что в случае код-свитчинга в паре «русский-казахский»  встает проблема отсутствия данных для обучения моделей.

Изначально у авторов исследования были следующие датасеты:

  1. Корпус, собранный университетом Назарбаева: юридические документы на 89 тысяч предложений. Сухие официальные тексты, ни одного переключения.

  2. Корпус, собранный Казахским Национальным Университетом им. Аль-Фараби: 80 тысяч пресс-релизов. Та же беда.

  3. Собственноручно собранный и размеченный корпус KRCS из 618 фраз, где уже есть код-свитчинг. Но такой объем датасета подойдет только для оценки, а не для обучения моделей. 

Больше примеров код-свитчинга казахский/русский в открытых источниках не нашлось. Если авторы плохо искали, а вы нашли — закиньте в комменты ссылки, пожалуйста. 

Было принято решение выезжать за счет синтетики. Для того, чтобы сгенерировать обучающий датасет, авторы применили пять подходов (чем выше номер, тем более продвинутая логика):

  • cs-1 — обычная грубая замена казахского слова на русское слово.

  • cs-2 — уже русское слово с казахским окончанием.

  • cs-3 — случайный выбор между первым и вторым методом.

  • cs-4 —  fastalign, статистическое выравнивание, которое смотрит, какие слова чаще всего встречаются вместе в параллельных текстах.

  • Cs-5 — вот тут магия. Берётся SimAlign, и он не просто считает частотность, а смотрит на контекст через эмбеддинги и понимает, какое русское слово впишется в предложение по смыслу, а не только по словарю.

Примеры аугментаций
Примеры аугментаций

 Есть ещё один скрытый нюанс. В лингвистике при переключении кодов выделяют матричный язык (основа, на которой держится грамматика) и встроенный язык (отдельные вставки). Для пары казахский-русский матричным является казахский, а русский — встроенным. Люди в реальной речи не ломают казахскую грамматику, они просто вставляют русские слова в казахскую структуру. И подход cs-5 делает то же самое: он сохраняет казахские окончания, порядок слов и синтаксис, заменяя только отдельные лексемы. Варианты cs-1, cs-2 и cs-3 этим правилом пренебрегают и проигрывают.

В NLP есть понятие Minimal Aligned Units — минимальные пары фраз, где каждое слово из одной части связано со словом из другой и наоборот. В датасете как раз берут казахское предложение и заменяют 15% этих единиц на русские. Если предложение короткое — менее 7 слов — делают одну замену.

Тип

Первый пример

Второй пример

Оригинал

казахстанский гендерлік теңдік саласындағы 12 халықаралық құжаттарды бекітті.

фискал көзқарастан гөрі либералдандыру жақсы

Исправленный

Қазақстан гендерлік теңдік саласындағы 12 халықаралық құжаттарды бекітті.

Фискалдық көзқарастан гөрі либералдандыру жақсы

Русский

Казахстаном ратифицировано 12 международных документов в сфере гендерного равенства.

Лучше либерализация, чем фискальный подход

Расширенный (cs-5)

Қазақстан гендерного теңдік саласындағы 12 халықаралық құжаттарды бекітті.

Фискалдық подход гөрі либералдандыру

Русские слова «гендерного» и «подход» вросли в казахскую грамматику. Неидеально, но похоже на то, как говорят люди.

Авторы обучили одну и ту же модель (transformer-600) на всех пяти типах аугментации и сравнили результаты на реальном KRCS-корпусе. В итоге первые 4 метода даже ухудшили качество, и улучшил только cs-5.

Предполагается, что так происходит из-за того, что cs-5 создает распределение слов, которое ближе всего к реальной разговорной речи. Fastalign смотрит на статистику, но не видит контекст, в отличие от SimAlign.

Тренировка с нуля или дообучение?

Итак, синтетические данные готовы. Но встает вопрос — как на них учить модель?

Авторы заложили семь экспериментов: пять моделей они обучили с нуля или дообучили, и еще  две коммерческие системы  взяли для сравнения.

В таблице ниже — результаты BLEU / ChrF++ / COMET на тестовом корпусе KRCS:

Модель

без обучения

с обучением

identity

7,55 / 25,10 / 0,56

N/A

transformer-NU

7,87 / 31,99 / 0,50

11,31 / 35,35 / 0,53

transformer-600

N/A

12,49 / 36,44 / 0,54

mBART

4,62 / 17,83 / 0,56

12,08 / 34,31 / 0,53

M2M100

5,37 / 21,59 / 0,42

12,50 / 36,44 / 0,53

NLLB-600

12,26 / 36,67 / 0,53

12,95 / 36,44 / 0,54

NLLB-3.3B

15,23 / 39,68 / 0,56

16,48 / 42,27 / 0,56

Коммерческие API

Российская MT

22,24 / 47,13 / 0,67

N/A

Зарубежная MT

24,14 / 47,84 / 0,64

N/A

Первое, что бросается в глаза: дообучение работает и позитивно влияет на качество. Модель mBART без обучения показывает 4,62 BLEU — практически ноль. После дообучения — 12,08. В итоге видим рост в 2,5 раза. M2M100 без обучения — 5,37 BLEU, после — 12,50.

NLLB-600 прибавляет скромнее: с 12,26 до 12,95,  потому что она уже умела переводить смешанный казахско-русский из коробки.

Самая большая модель — NLLB-3.3B — стартовала с 15,23 BLEU. После дообучения поднялась до 16,48. Да, прибавка небольшая в процентах, но в итоге это лучший результат среди всех открытых моделей.

Модель transformer-600, собранная авторами в fairseq с нуля, выдает 12,49 BLEU. Это лучше, чем mBART и M2M100, но хуже, чем NLLB-600 и NLLB-3.3B.

Из результатов следует, что дообучать предобученную модель выгоднее, чем тренировать свою. Даже если модель изначально не знакома с код-свитчингом, у нее есть понимание языка. Остается только направить в нужную сторону.

Стоит заметить, что Identity Baseline — который просто копирует вход на выход — получил 0,56 COMET. Это столько же, сколько и mBART, и NLLB-3.3B без дообучения. Забавно, что для COMET-метрики разница между осмысленным переводом и копированием оказалась нулевой. Но это уже отдельная тема для разговора.

Соцсети не менее важны, чем документы

Мы выяснили, что при помощи cs-5 можно генерировать синтетические данные для обучения, и что дообучение лучше обучения с нуля. Но осталась еще проблема — тренировочные датасеты чаще всего имеют сухой, вылизанный язык, например, такие ресурсы, как корпус университета Аль-Фараби, «Википедия», субтитры, документация. А код-свитчинг встречается в других местах: соцсетях, переписке, разговорах.

Авторы визуализировали эту разницу (см. картинку ниже). 

t-SNE-проекция эмбеддингов LaBSE для казахских предложений из разных датасетов
t-SNE-проекция эмбеддингов LaBSE для казахских предложений из разных датасетов

Что мы видим? Центроид KRCS — того самого оценочного корпуса с реальными переключениями — находится рядом с корпусом русскоязычных сообщений в Twitter (ныне Х), собранный еще в 2018 году. Далеко от всех остальных находятся университетские корпуса, новости и статьи из «Википедии».

В итоге авторы  взяли корпус Рыбаковой из 127 тысяч твитов на русском и  перевели все это на казахский с помощью модели NLLB-200-distilled-600M. Получили параллельный корпус в виде русских твитов с их казахскими переводами, и добавили его к остальным тренировочным данным. 

Затем, чтобы проверить, реально ли от этих данных получить какую-то пользу, обучили transformer-600 в трёх вариантах:

  1. На всех данных, включая переведённые твиты.

  2. На всех данных, но без твитов.

  3. Только на одних твитах.

Результаты на KRCS:

  1. Все данные с твитами: 12,25 BLEU / 37,10 ChrF++ / 0,52 COMET.

  2. Все данные без твитов: 11,64 BLEU / 35,58 ChrF++ / 0,49 COMET.

  3. Только твиты: 10,86 BLEU / 34,76 ChrF++ / 0,52 COMET.

Как видно, твиты дают небольшой, но стабильный прирост. И, что важнее, COMET не упал и держится на том же уровне. Но всё же на одних только твитах модель не вывозит, официальные датасеты также помогают.

Подводные камни

Итак, метод работает, но не спешите копировать подход. Авторы сами честно перечислили пять ограничений.

Во-первых, синтетические данные не идеальны. Модель учится на том, что вы ей скормили, и если замена слов иногда выглядит неестественно, модель запомнит это. Авторы проверили естественность сгенерированных предложений: привлекли носителей, попросили оценить данные по шкале Лайкерта. Средний балл — 2,62 из 5. Это «приемлемо», но не «хорошо», что значит, часть синтетики всё равно звучит для человека фальшиво.

Во-вторых, тестовый корпус слишком маленький — 618 предложений. Этого хватит, чтобы сравнить и проверить модели, но не чтобы делать большие выводы. Один неудачный выбор предложений в тестовую выборку — цифры поедут в другую сторону. Авторы это признают: корпус может не отражать всё разнообразие того, как люди на самом деле смешивают языки.

В-третьих, по BLEU, ChrF++ и COMET коммерческие системы уделывают открытые модели. Но результаты ручной оценки совсем иные. Либо метрики врут на код-свитчинге, либо люди оценивают не то же, что метрики. Скорее всего, и то и другое. COMET, кстати, вообще не увидел разницы между осмысленным переводом и копированием входа (identity baseline).

В-четвертых, сравнение с коммерческими системами нечестное. Авторы сравнивают свою модель с ними через API. Но что именно крутится на их серверах — неизвестно. Возможно, отдельная модель, возможно, они не обучали модели на код-свитчинге. Честное сравнение подразумевает одинаковые условия, но тут условия скрыты.

И в-пятых, переносимость на другие языки — открытый вопрос. Метод завязан на пару казахский-русский. Неизвестно, как он поведёт себя, например, на пары «татарский-русский» или «белорусский-русской».  SimAlign работает для многих языков, но код-свитчинг учитывает и культурные особенности. В Казахстане смешивают языки одним способом, в другой стране — другим. Нет гарантии, что cs-5 сработает так же хорошо.

Заключение

Несмотря на все подводные камни авторы показали, что код-свитчинг можно победить без размеченных данных. Да, костыльно, синтетика хромает, корпус маловат. Но то, насколько модель стала сильнее – уже аргумент.

Авторы смогли решить задачу с тремя компонентами: 

  • синтетические данные через cs-5 и SimAlign;

  • дообучение готовых моделей вместо тренировки с нуля;

  • доменная адаптация через перевод живых твитов. 

Каждый компонент по отдельности даёт скромный прирост, а вместе они позволили добиться неплохих результатов в человеческой оценке.

Если у вас похожая задача — редкая языковая пара без размеченных данных, вам может подойти такой алгоритм:

  1. Соберите все, что есть — обычные корпуса, юридические документы и новости как фундамент для обучения.

  2. Сгенерируйте код-свитчинг не тупой заменой слов, а с выравниванием по смыслу. SimAlign показал себя лучше fastalign и тем более случайных подстановок.

  3. Дообучите предобученную модель, а не стройте ее с нуля. 

  4. Добавьте живых данных — переведите на второй язык корпус твитов или другого разговорного контента. Это приблизит распределение к реальному.

  5. Проверяйте на людях, потому что автоматические метрики на код-свитчинге могут не показать реальной картины. COMET не отличил осмысленный перевод от копирования. BLEU показал одно, а люди — противоположное.

Оригинальное исследование доступно по ссылке.

Источник: habr.com

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Архив рубрики ~Коротко из Telegram~ Грузим картинки и видео откуда угодно Нашли топовую тулзу для… Архив рубрики ~Коротко из Telegram~ Собираем локальную армию ИИ-агентов на своём ПК LocallyUncensored помогает объединить… Новости робототехники Модель фундамента Generalist GEN-1 теперь поддерживает целый ряд конечных исполнительных роботов. Архив рубрики ~Коротко из Telegram~ Российский рынок виртуальных операторов связи может прибавлять в среднем 8–10%… Новости робототехники NEURA Robotics предоставляет тренажерный зал NEURA RWTH Ахен для тренировки физического ИИ Архив рубрики ~Полезное~ Что такое LLM и как «думает» нейросеть — просто о сложном Архив рубрики ~Полезное~ Qwen выпустила новый ИИ-фотошоп — Qwen-Image 3.0 Новую модель заточили… Архив рубрики ~Коротко из Telegram~ Правительство Ирландии отменило тендер на закупку ПО и услуг Microsoft… Архив рубрики ~Коротко из Telegram~ Прокачиваем OSINT без тёмной магии — собрали мощные тулзы и… Архив рубрики ~Полезное~ Веб-дизайнеры, для вас находка — отличный сайт, где можно черпать… Архив рубрики ~Коротко из Telegram~ Слышишь? Ползу Архив рубрики ~Коротко из Telegram~ Госуслуги хотят превратить в универсальную платформу для жизни и общения…. Архив рубрики ~Коротко из Telegram~ ИИ делает людей увереннее, но есть но Новое исследование снова… Архив рубрики ~Полезное~ ИИ-репетитор, который собирает курс почти по любой теме Нашли бесплатный… Архив рубрики ~Коротко из Telegram~ Грузим картинки и видео откуда угодно Нашли топовую тулзу для… Архив рубрики ~Коротко из Telegram~ Собираем локальную армию ИИ-агентов на своём ПК LocallyUncensored помогает объединить… Новости робототехники Модель фундамента Generalist GEN-1 теперь поддерживает целый ряд конечных исполнительных роботов. Архив рубрики ~Коротко из Telegram~ Российский рынок виртуальных операторов связи может прибавлять в среднем 8–10%… Новости робототехники NEURA Robotics предоставляет тренажерный зал NEURA RWTH Ахен для тренировки физического ИИ Архив рубрики ~Полезное~ Что такое LLM и как «думает» нейросеть — просто о сложном Архив рубрики ~Полезное~ Qwen выпустила новый ИИ-фотошоп — Qwen-Image 3.0 Новую модель заточили… Архив рубрики ~Коротко из Telegram~ Правительство Ирландии отменило тендер на закупку ПО и услуг Microsoft… Архив рубрики ~Коротко из Telegram~ Прокачиваем OSINT без тёмной магии — собрали мощные тулзы и… Архив рубрики ~Полезное~ Веб-дизайнеры, для вас находка — отличный сайт, где можно черпать… Архив рубрики ~Коротко из Telegram~ Слышишь? Ползу Архив рубрики ~Коротко из Telegram~ Госуслуги хотят превратить в универсальную платформу для жизни и общения…. Архив рубрики ~Коротко из Telegram~ ИИ делает людей увереннее, но есть но Новое исследование снова… Архив рубрики ~Полезное~ ИИ-репетитор, который собирает курс почти по любой теме Нашли бесплатный…

Оставить комментарий