Как мы сделали переводчик точнее и дешевле Google и Yandex

7878074a86b50211a4e0518d3468f303.png

Всем привет! Меня зовут Никита, я Data Scientist из Raft. Сегодня я расскажу вам о том, как мы решили задачу перевода каталога товаров большого интернет-магазина с русского на арабский язык с применением искусственного интеллекта. Мы рассмотрим различные подходы и идеи, возникавшие в процессе погружения в эту задачу. Также я объясню, почему мы отказались от готовых решений и выбрали Large Language Models (LLM) в качестве основного инструмента. Как вы, возможно, уже догадались из названия, основным преимуществом нашего финального решения стала значительная оптимизация расходов: нам удалось сократить использование API OpenAI в 4 раза, при этом сохранив высокое качество перевода.

Что будем переводить

Месяц назад перед нами встала задача перевода товарных позиций (SKU — Stock Keeping Unit, или 'единица складского учёта') с русского на арабский язык. Что из себя передставляет одна позиция:

SKU

Описание

Производитель

Характеристика

Состав

Инструкция

Казалось бы,   для ее решения уже существуют многочисленные готовые модели-переводчики с открытым API от таких компаний, как Google, DeepL, и Yandex. Но на практике оказалось,   что во-первых, синтаксис арабских и и русских слов  значительно отичается, а во-вторых,  арабский язык обладает множеством диалектов. Для письменного и формального общения в большинстве случаев используется Modern Standard Arabic (MSA) — стандартизированный вариант арабского языка, принятый в образовании, СМИ и на официальных мероприятиях.  Естественно, возникают определенные трудности при переводе, особенно когда речь идет о специфических терминах, таких как названия товаров или технические характеристики. Кроме того, прямой перевод с русского на арабский часто невозможен из-за различий в структуре и грамматике этих языков. Русский язык имеет сложную грамматическую систему со множеством склонений и падежей, тогда как арабский язык обладает своей уникальной системой корневых слов и обширной морфологией. Эти различия могут привести к тому, что дословный перевод окажется непонятным или даже искаженным.

Поэтому вместо прямого перевода мы решили использовать двухэтапный процесс. Сначала текст переводится с русского на английский, что позволяет сохранить первоначальное значение и стиль. Затем перевод с английского на арабский осуществляется с учетом особенностей MSA и культурного контекста арабоязычных стран.

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

Например, в нашем тестовом наборе был 'Авторский букет'. Слово 'авторский' подразумевает  в это случае уникальность или дизайнерское происхождение, а не прямую связь с автором.

Результаты перевода представлены в таблице:

Переводчик

Позиция

Описание

ChatGPT

A designer bouquet

A designer bouquet in a vase — exactly what you need to purchase from us!

Google

Author’s bouquet

A designer bouquet in a vase is exactly what you need to buy from us!

Yandex

The author’s bouquet

An author’s bouquet in a vase is exactly what you need to buy from us!

DeepL

Author’s bouquet

Author’s bouquet in a vase, what you need to buy from us!

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

  • Проблемы в сложных грамматических структурах, требующих транслитерации, например, при переводе названия 'Гибридный гиперкар LEGO® Technic™ PEUGEOT 9×8 24H LeMans Набор для взрослых'.

  • Проблемы с контекстом и нюансами, когда модели не учитывают контекст и тон текста, что ведет к неправильной интерпретации, как в случае фразы 'Это бомба! Настоящая бомба для ванны'.

  • Ограниченное понимание идиом и культурных особенностей, например, когда модели некорректно переводят идиомы и пословицы (настоящий колобок → a real bun (настоящая булочка) →كولوبوك حقيقي (A real Kolobok))

  • Предобработка данных, включая html-разметку, лишнюю пунктуацию и грамматические ошибки.

база

база

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

Как будем переводить

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

Решения, которые мы использовали в пайплайнах, делятся на две основные категории:

  1. Традиционные модели перевода (Google Translate, Yandex Translate, DeepL): Эти модели отличаются высокой степенью масштабируемости и доступности, обеспечивая последовательные и воспроизводимые результаты. Так как Deepl вообще не знает арабский, а открытые модели с HuggingFace совершают аналогичные ошибки и не дают прирост в качестве. Решили попробовать использовать их только для перевода с русского на английский

  2. Переводчики на основе LLM (ChatGPT, GPT-4, LLaMA2): В этих решениях используются большие языковые модели, которые с помощью сложных подсказок могут быть точно настроены для работы с длинными текстами, учитывая различные нюансы и детали.

Мы объединили преимущества разнообразных методов, что позволило разработать четыре основных пайплайна для перевода:

  1. Использование Готовых Моделей-Переводчиков: Этот подход включает прямое применение готовых моделей-переводчиков для обеспечения качественного перевода.

  2. Двухэтапный Перевод с Использованием GPT-4: Сначала текст переводится на английский язык с помощью модели-переводчика, а затем полученный английский текст вместе с оригинальным русским подается на обработку в GPT-4 для дальнейшего улучшения качества перевода.

  3. Двухэтапный Перевод с Использованием ChatGPT и GPT-4: Первоначально текст переводится с русского на английский (используя ChatGPT, так как это более экономичный вариант), а затем с английского на арабский уже с использованием возможностей GPT-4.

  4. Прямой Перевод с Русского на Английский и Арабский через GPT-4: В этом подходе мы экспериментируем с прямым переводом текста с русского на английский, а затем на арабский, полностью используя возможности GPT-4.

Лучшие понимание дает картиночка

Пайплайны проверили

Пайплайны проверили

После всех тестов мы увидели, что в рейтинге качества пайплайны выстроились в обратном порядке. Доказали, что традиционные модели не всегда справляются с задачей, и их ошибки сложно исправить даже с помощью дополнительной обработки.
3 и 4 пайплайны хороши, но GPT-4 лучше слушается подсказок и делает меньше ошибок. Поэтому для обеспечения наилучшего результата решено было использовать ее, но сойдется ли экономика?   (спойлер — сначала нет, но мы хитрые укротители LLM)

Pipeline

Скорость

Контекстная точность

Учет культурных особенностей

Другие заметки

1. Традиционные модели

Быстро

Низкая

Слабый 

Быстрый и дешевый, но может привести к простому, иногда неадекватному переводу.

2. Гибридный подход (традиционный + LLM)

Настраиваемая

Низкая

Слабый

Обеспечивает баланс скорости и точности; использует двухэтапный перевод для достижения лучших результатов.

3. На основе LLM (начальный уровень)

Настраиваемая

Хорошая

Хороший

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

4. Продвинутый уровень LLM

Настраиваемая

Отличная

Отличный

Как сэкономить?

Интересный момент заключался в том, что расчет стоимости каждого пайплайна устроен по-разному, используя либо символы, либо токены. При анализе стоимости выяснилось, что самое передовое (state-of-the-art, SOTA) решение оказалось самым дорогим, однако мы решили искать пути его оптимизации. 

Было две возможности:  

1) Удаление дубликатов — позволило бы не переводить многократно одно и то же

2) Использование полного окна контекста модели — позволяющее перевести всю позицию за один запрос к API

Первый метод, хотя и помог избежать повторного перевода, не принес ожидаемого снижения стоимости и привел к несогласованности в переводе. В связи с этим мы решили протестировать возможность расширенного запроса к LLM, используя максимально возможную длину контекстного окна в модели GPT-4. Для минимизации риска неправильных интерпретаций (галлюцинаций) мы использовали JSON-формат, который позволял эффективно управлять данными и снижал риск ошибок на выходе. Хоть этот подход и требует увеличения промпта, но он улучшил качество перевода и сократил затраты в 4 раза, показывая при этом стабильные результаты.

Как видно из таблицы 2 после оптимизации итогового решение на GPT4 вышло. 

Решение

1 SKU (Eng+MSA), рублей

Дешевле бейзлайна на GPT4

Во сколько раз дороже итогового решения

1. Only Translators

5,3

72,62

1,15

2. Translator+GPT4

12,3

36,31

2,67

3. ChatGPT+GPT4

10,5

45,71

2,28

4.1 Бейзлайн GPT4

19,32

4,2

4.2 Оптимизация GPT4

4,6

76,19

А сейчас самое время рассказать про магию

Немного технических подробностей

Работа с удаленным API накладывает определенные ограничения: мы не можем влиять на архитектуру сети, включая дообучение модели. В нашем распоряжении только инструмент промптинга, который позволяет направлять механизм внимания GPT-4 для получения желаемых результатов. Механизм внимания играет ключевую роль, выявляя связи между словами в различных контекстах, что способствует более точной ассоциации токенов в процессе перевода. 

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

1. Инструкции (Instructions): Чётко определённые указания для модели, описывающие желаемые действия и ожидаемый результат.
2. Контекст (Context): Дополнительная информация, которая используется моделью как знание для улучшения ответов.
3. Ввод пользователя (Prompter Input): Непосредственный запрос или вопрос, который модель должна обработать.
4. Индикатор вывода (Output Indicator): Отмечает начало ответа модели.

A typical prompt structure.

Используя методику Few-Shot Prompting, наш промпт обладает следующими преимуществами:

— Чатовый формат: Позволяет имитировать естественную диалоговую обстановку, где System, Human и AI взаимодействуют, создавая чёткую структуру диалога.
— Базовая инструкция: Широко описывает задачу, которую необходимо решить, и даёт общее направление модели.
— Детальная инструкция: Описывает процесс пошагово, что позволяет модели точно следовать заданным шагам.
— Другие инструкции: Используются для корректировки системных ошибок и уточнения задачи, а также обратной связи по предыдущим запросам.
— Примеры специфического сленга и перевода сложных приложений: Показывают модели, как переводить специфические термины и сленг, а также сложные фразы.
— Формат ввода и вывода: Структурированный формат JSON позволяет легко интегрировать и использовать полученные данные.
— Эмоциональный промптинг: Побуждает модель осознать значимость запроса, что может повысить качество и точность ответов.
— Затравки для размышления: Побуждают модель к более глубокому анализу и поиску альтернативных решений.

Здесь подробно про архитектуру промпта

  1. Чатовый формат.
    System: …, Human:…, AI:…

  2. Базовая инструкция, широко описывающая решаемую.
    переведи INPUT из ЭТОЙ сферы с ЭТОГО языка на ТОТ

  3. Подробная инструкция.
    Тут идет формат step-by-step

  4. Другие инструкции.
    Это пункт нужен для исправления системных ошибок и уточнения (обратная связь по прошлым переводам)

  5. Вот несколько примеров специфического сленга.
    HINT: the word «MAN» means «مان»;

  6. Примеры перевода сложных приложений.
    Input: DOLCE MILK Gift Bag 21 MAN 1 pc.
    Arabic Output: دولتشي ميلك: حقيبة هدايا 21 مان 1 قطعة.

  7. Объяснить формат вывода.
    ```json
    [
    {
    «Product Name»: <>
    }
    ]
    ```

  8. Использование эмоционального промптинга.
    I’m going to tip $1000 for a perfect solution! PLEASE NOTHING ELSE! This is very important to my career and I need to get this right.

  9. Различные затравки для размышления.
    Could you double-check the translations for accuracy and offer alternative translations for any complex terms? The tone should be professional and clear. 

  10. Особый формат подачи и приема переводимого.
    Input:  
    ```json
    [
    {
    «Product Name»: {input_product_name}
    }
    ]
    ```
    Output:
    ```json
    [
    {
    «Product Name (EN)»:
    «Product Name (AR)»:
    }
    ]
    ```

Использование приемов Few-Shot + Glossary Terms,  Examples + HINT,  Translation prompts в промпте позволии мне создавать сложные запросы, которые требуют высокого уровня понимания и детализации в ответах модели.

из статьи Adaptive Machine Translation with Large Language Models

Как валидировали

В процессе базовой валидации мы используем такие инструменты, как Google Translate или Yandex Translate. Эти сервисы позволяют прослушивать транслитерации, что особенно полезно для проверки правильности перевода названий производителей. Для гарантии точности и качества финального перевода мы привлекли специалистов-носителей арабского языка.

f2d325d4f72523ac7c50b8cfb5e7e5f0.png

Что в итоге

В этой статье мы рассмотрели четыре различных подхода к переводу текстов с русского на английский и арабский. Особое внимание уделено использованию GPT-4, которое показало наилучшие результаты, особенно в сохранении контекста и точности перевода сложного домена. GPT-4 выделяется своим улучшенным механизмом внимания, что позволяет эффективно сохранять фокус и не терять смысл в длинных и сложных предложениях. Именно ''четверка«обеспечила безошибочную выдачу в json-форамате. Кроме того, оптимизация работы с API позволила нам снизить затраты и обеспечить более масштабные и бесперебойные процессы перевода. К сожалению, из-за условий NDA мы не можем представить самые интересные примеры переводов, но мы приглашаем оставлять в комментариях сложные примеры для перевода. Это поможет продемонстрировать возможности нашего переводчика в реальных условиях.

Спасибо за ваш интерес к моей статье. Надеюсь, что информация оказалась полезной)

Литература:  

  1. Prompt Engineering: What It Is and 15 Techniques for Effective AI Prompting + Tips

  2. 9 AI translation tools you need to try in 2023

  3. Tokenizer

  4. Adaptive Machine Translation with Large Language Models

  5. Dictionary-based Phrase-level Prompting of Large Language Models for Machine Translation

  6. How to Design Translation Prompts for ChatGPT: An Empirical Study

  7. Do LLMs or MT engines perform translation better?

  8. Что в промптах работает, а что нет

  9. Кто знает, что значит GPT в названии ChatGPT, могут дальше не читать

© Habrahabr.ru