
Всем привет! Меня зовут Никита, я 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! |
| A designer bouquet in a vase is exactly what you need to buy from us! | |
Yandex |
|
|
DeepL |
|
|
Как можно заметить, добиться качественного перевода во всех случаях с помощью готовых решенией нельзя. Мы столкнулись с различными типами ошибок, которые можно классифицировать следующим образом:
Проблемы в сложных грамматических структурах, требующих транслитерации, например, при переводе названия 'Гибридный гиперкар LEGO® Technic™ PEUGEOT 9X8 24H LeMans Набор для взрослых'.
Проблемы с контекстом и нюансами, когда модели не учитывают контекст и тон текста, что ведет к неправильной интерпретации, как в случае фразы 'Это бомба! Настоящая бомба для ванны'.
Ограниченное понимание идиом и культурных особенностей, например, когда модели некорректно переводят идиомы и пословицы (настоящий колобок -> a real bun(настоящая булочка) ->كولوبوك حقيقي(A real Kolobok))
Предобработка данных, включая html-разметку, лишнюю пунктуацию и грамматические ошибки.

Результаты начальных тестов показали, что существующие решения не соответствуют нашим требованиям к качеству перевода.
Как будем переводить
Опираясь на статью, мы не сразу отошли от традиционных моделей. Мы решили тщательно изучить и протестировать различные подходы, чтобы найти наиболее эффективный метод.
Решения, которые мы использовали в пайплайнах, делятся на две основные категории:
Традиционные модели перевода (Google Translate, Yandex Translate, DeepL): Эти модели отличаются высокой степенью масштабируемости и доступности, обеспечивая последовательные и воспроизводимые результаты. Так как Deepl вообще не знает арабский, а открытые модели с HuggingFace совершают аналогичные ошибки и не дают прирост в качестве. Решили попробовать использовать их только для перевода с русского на английский
Переводчики на основе LLM (ChatGPT, GPT-4, LLaMA2): В этих решениях используются большие языковые модели, которые с помощью сложных подсказок могут быть точно настроены для работы с длинными текстами, учитывая различные нюансы и детали.
Мы объединили преимущества разнообразных методов, что позволило разработать четыре основных пайплайна для перевода:
Использование Готовых Моделей-Переводчиков: Этот подход включает прямое применение готовых моделей-переводчиков для обеспечения качественного перевода.
Двухэтапный Перевод с Использованием GPT-4: Сначала текст переводится на английский язык с помощью модели-переводчика, а затем полученный английский текст вместе с оригинальным русским подается на обработку в GPT-4 для дальнейшего улучшения качества перевода.
Двухэтапный Перевод с Использованием ChatGPT и GPT-4: Первоначально текст переводится с русского на английский (используя ChatGPT, так как это более экономичный вариант), а затем с английского на арабский уже с использованием возможностей GPT-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): Отмечает начало ответа модели.

Используя методику Few-Shot Prompting, наш промпт обладает следующими преимуществами:
- Чатовый формат: Позволяет имитировать естественную диалоговую обстановку, где System, Human и AI взаимодействуют, создавая чёткую структуру диалога.
- Базовая инструкция: Широко описывает задачу, которую необходимо решить, и даёт общее направление модели.
- Детальная инструкция: Описывает процесс пошагово, что позволяет модели точно следовать заданным шагам.
- Другие инструкции: Используются для корректировки системных ошибок и уточнения задачи, а также обратной связи по предыдущим запросам.
- Примеры специфического сленга и перевода сложных приложений: Показывают модели, как переводить специфические термины и сленг, а также сложные фразы.
- Формат ввода и вывода: Структурированный формат JSON позволяет легко интегрировать и использовать полученные данные.
- Эмоциональный промптинг: Побуждает модель осознать значимость запроса, что может повысить качество и точность ответов.
- Затравки для размышления: Побуждают модель к более глубокому анализу и поиску альтернативных решений.
Здесь подробно про архитектуру промпта
Чатовый формат.
System: ..., Human:..., AI:...Базовая инструкция, широко описывающая решаемую.
переведи INPUT из ЭТОЙ сферы с ЭТОГО языка на ТОТПодробная инструкция.
Тут идет формат step-by-stepДругие инструкции.
Это пункт нужен для исправления системных ошибок и уточнения ( обратная связь по прошлым переводам)Вот несколько примеров специфического сленга.
HINT: the word "MAN" means "مان";Примеры перевода сложных приложений.
Input: DOLCE MILK Gift Bag 21 MAN 1 pc.
Arabic Output: دولتشي ميلك: حقيبة هدايا 21 مان 1 قطعة.Объяснить формат вывода.
```json
[
{
"Product Name": <<TRANSLATED TEXT>>
}
]
```Использование эмоционального промптинга.
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.Различные затравки для размышления.
Could you double-check the translations for accuracy and offer alternative translations for any complex terms? The tone should be professional and clear.Особый формат подачи и приема переводимого.
Input:
```json
[
{
"Product Name": {input_product_name}
}
]
```
Output:
```json
[
{
"Product Name (EN)":
"Product Name (AR)":
}
]
```
Использование приемов Few-Shot + Glossary Terms, Examples + HINT, Translation prompts в промпте позволии мне создавать сложные запросы, которые требуют высокого уровня понимания и детализации в ответах модели.

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

Что в итоге
В этой статье мы рассмотрели четыре различных подхода к переводу текстов с русского на английский и арабский. Особое внимание уделено использованию GPT-4, которое показало наилучшие результаты, особенно в сохранении контекста и точности перевода сложного домена. GPT-4 выделяется своим улучшенным механизмом внимания, что позволяет эффективно сохранять фокус и не терять смысл в длинных и сложных предложениях. Именно ''четверка"обеспечила безошибочную выдачу в json-форамате. Кроме того, оптимизация работы с API позволила нам снизить затраты и обеспечить более масштабные и бесперебойные процессы перевода. К сожалению, из-за условий NDA мы не можем представить самые интересные примеры переводов, но мы приглашаем оставлять в комментариях сложные примеры для перевода. Это поможет продемонстрировать возможности нашего переводчика в реальных условиях.
Спасибо за ваш интерес к моей статье. Надеюсь, что информация оказалась полезной)
Литература:
Prompt Engineering: What It Is and 15 Techniques for Effective AI Prompting + Tips
Dictionary-based Phrase-level Prompting of Large Language Models for Machine Translation
How to Design Translation Prompts for ChatGPT: An Empirical Study
Кто знает, что значит GPT в названии ChatGPT, могут дальше не читать