Yandex Translate

💡 Translate — это сервис машинного перевода от Яндекса. Он позволяет переводить текст на более чем 100 языков и определять язык исходного текста. Этот сервис можно использовать в следующих сценариях:
- для локализации контента, например сайтов или приложений;
- для перевода чатов и других текстовых коммуникаций, в том числе в режиме реального времени;
- для машинного обучения: перевода датасетов для обучения или, наоборот, для перевода данных с различных языков на язык модели, в которой они обрабатываются.
💡 Translate предоставляется в виде API (gRPC и REST), единица тарификации — один символ, включая пробелы.
Начало работы
Любое начало работы с сервисом начинается с авторизации. Translate не исключение. Далее вы изучите первые шаги для старта работы.1️⃣ Выберите удобный способ авторизации: IAM-токен или API-ключ и получите его в консоли облака.2️⃣ Получите идентификатор любого каталога, для которого у вашего аккаунта есть рольai.translate.user или выше. Идентификатор каталога должен передаваться в теле каждого запроса в поле folderId.
Перевод текста
Сервис Translate поддерживает три типа операций:
- перевод текста — метод translate;
- определение языка текста — метод detectLanguage;
- получение списка поддерживаемых языков — метод listLanguages.
Посмотрите на пример, где требуется перевести на русский язык две строки с текстом: Hello и World. Язык исходного текста будет определён автоматически.1️⃣ Создайте файл с телом запроса, например body.py:
**import** requests
IAM_TOKEN = '<IAM-токен>'
folder_id = '<идентификатор_каталога>'
target_language = 'ru'
texts = ["Hello", "World"]
body = {
"targetLanguageCode": target_language,
"texts": texts,
"folderId": folder_id,
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {0}".format(IAM_TOKEN)
}
response = requests.post('https://translate.api.cloud.yandex.net/translate/v2/translate',
json = body,
headers = headers
)
print(response.text)
IAM_TOKEN— IAM-токен, полученный перед началом работы;folder_id— идентификатор каталога, полученный перед началом работы;target_language— язык, на который переводится текст: вы можете узнать код языка вместе со списком поддерживаемых языков;texts— текст для перевода в виде списка из строк.
2️⃣ В ответ сервис вернёт переведённые строки текста:
- Результат
{
"translations": [
{
"text": "Привет",
"detectedLanguageCode": "en"
},
{
"text": "Мир",
"detectedLanguageCode": "en"
}
]
}
💡 Translate также умеет переводить текст в формате HTML с сохранением разметки. Для этого в теле запроса нужно указать параметр "format": “HTML”. Он является необязательным, значение по умолчанию “PLAIN_TEXT”.
Особенности сервиса
У Translate есть установленные квоты и лимиты.Квоты можно увеличить через обращение в техническую поддержку:
- количество символов на перевод в час — 1 000 000 000;
- количество запросов к сервису в секунду — 20.
Лимиты, которые нельзя изменить:
- количество передаваемых глоссарных пар в одном запросе — 50;
- количество символов в одном запросе — 20 000, по 10 000 для исходного и для переведённого текста.
Ещё три важные детали:1️⃣ Translate не поддерживает перевод мультиязычных текстов. Если необходимо перевести текст, написанный на нескольких языках, следует разбить его на несколько частей, отдельных для каждого языка, и отправлять на перевод по частям.💡 Для повышения точности определения языка не рекомендуется отправлять слишком короткие сегменты текста: одиночные слова и короткие словосочетания. Иногда они содержат одинаковые значения в некоторых языках, и метод может вернуть неправильный результат.3️⃣ Список языков, которые поддерживает сервис, можно получить не только через API, но и посмотреть на сайте.
Повышение точности перевода текста
Качество перевода можно улучшить с помощью следующих инструментов:
Предлагаем разобраться с каждым из них подробнее!
Экранирование текста
Инструмент позволяет оставлять без перевода определённые фрагменты текста. Это полезно, например, для имён собственных. Для этого нужно передать текст на перевод с указанием “format”: “HTML” и экранировать нужный фрагмент текста.Пример кода
{
"format": "HTML",
"texts": [
"The e-mail has been changed. The new password is **<span translate=no>**%\$Qvd14aa2NMc**</span>**"
]
}
Проверка текста на опечатки
Слова с опечатками могут быть переведены неправильно или транслитерированы. Например, слово Hellas переводится как Эллада. Это же слово, написанное с ошибкой — helas, будет переводиться как хелас. Чтобы проверить правильность написания слов, используйте параметр speller.Пример кода
{
"sourceLanguageCode": "en"
"targetLanguageCode": "ru",
"texts": [
"helas"
],
"folderId": "<идентификатор_каталога>",
"speller": true
}
Глоссарии
💡 Глоссарий — это словарь слов и словосочетаний с определёнными вариантами перевода. Он передаётся вместе с текстом внутри API-запроса и позволяет повысить точность перевода текстов со специфической тематикой и лексикой, например медицинских или юридических. В запросе глоссарий выглядит следующим образом:Пример кода
body = {
"targetLanguageCode": target_language,
"sourceLanguageCode": source_language,
"texts": texts,
"folderId": folder_id,
"glossaryConfig": {
"glossaryData": {
"glossaryPairs": [
{
"sourceText": "table",
"translatedText": "таблицы",
},
{
"sourceText": "frame",
"translatedText": "фрейм"
}
]
}
},
}
💡 Глоссарий — это скорее рекомендация для модели, как именно переводить тот или иной фрагмент текста. В некоторых случаях она может не учитывать указанный в глоссариях вариант и использовать свой.Для языков ar, bg, cs, de, en, es, fr, it, kk, pl, ru, tr, tt, uk работают дополнительные инструменты:
- Нейроглоссарии. В отличие от обычных глоссариев, которые привязываются к конкретной форме слова, нейроглоссарии автоматически учитывают возможные формы слов, падеж и род.
Например, если в глоссарии указать, что чёрный переводится как dark, то фраза самая чёрная комната будет переведена как the darkest room.
- Мультиглоссарии. Это возможность передать в одном запросе разные варианты перевода (род и падеж) одного и того же слова или фразы. Нейросеть сама выберет наиболее подходящий вариант. Важно, что это должны быть разные варианты одного и того же перевода, а не совсем разные значения. Например, передавать в одном глоссарии, что letter — буква и letter — письмо, не следует.
Параметр exact позволяет задать однозначный перевод определённого глоссарного термина. Например:Запрос
target_language = 'ru'
source_language = 'en'
texts = ["It is a table.", "It is a frame"]
body = {
"targetLanguageCode": target_language,
"sourceLanguageCode": source_language,
"texts": texts,
"folderId": folder_id,
"glossaryConfig": {
"glossaryData": {
"glossaryPairs": [
{
"sourceText": "table",
"translatedText": "таблицы",
"exact": True
},
{
"sourceText": "frame",
"translatedText": "фрейм"
}
]
}
},
}
Ответ
{
"translations": [
{
"text": "Это таблицы."
},
{
"text": "Это фрейм"
}
]
}
Капитализация перевода с использованием глоссария
Перевод глоссарных терминов учитывает капитализацию переданного перевода. При определении капитализации используются правила:
- Если термин написан строчными буквами, то его капитализация определяется автоматически по исходному тексту.
- Если термин начинается или полностью написан заглавными буквами, то его капитализация в переводе совпадает с заданной в глоссарии.
- Если в термине есть и заглавные, и строчные буквы, но он начинается со строчной, будет найдена максимальная общая подстрока у термина и сгенерированного перевода. Капитализация в переводе будет скопирована из термина, а остальные символы будут строчными.
Пример:Исходный текст: I saw a KITTEN.
- Глоссарий:
kitten→котенокПеревод:Я видел КОТЕНКА - Глоссарий:
kitten→КотенокПеревод:Я видел Котенка - Глоссарий:
kitten→КОТЕНОКПеревод:Я видел КОТЕНКА - Глоссарий:
kitten→КотЕнОкПеревод:Я видел КотЕнка
❗️ Ограничения при работе с глоссариями: обязательно передавать параметры source_language и target_language; максимальное количество глоссарных пар в одном запросе — 50.
Дообучение модели перевода
Вы можете улучшить качество машинного перевода в определённой области знаний с помощью собственных данных для тренировки модели. При этом качество переводов общей лексики не упадёт.
Какие данные требуются для дообучения
Для дообучения требуются сегменты в виде оригинал — перевод в ТМХ-формате. Для получения значимого эффекта необходимы как минимум 15 000 таких сегментов. Если требуется переводить только определённые термины, то лучше использовать глоссарии.
Как дообучить модель
1️⃣ Оставьте обращение в техническую поддержку2️⃣ Специалисты Yandex Cloud отправят вам инструкцию, по которой вы сможете дообучить модель в сервисе Yandex DataSphere3️⃣ Для использования модели укажите её идентификатор в параметре model при отправке запросаДля лучшего результата дообучения данные должны быть связаны с определённой тематикой: медицина, юриспруденция, IT, нефтегазовая сфера и т. д.
💻 Практика. Работа с Translate
Теперь, когда вы освоили всю основную теорию о сервисе Translate, можно переходить к практике.❗️Практическая часть курса предполагает использование облачных ресурсов, которые вы оплачиваете самостоятельно. Курс разработан так, чтобы расходы были минимальными, — часть из них покроет стартовый грант.Чтобы избежать лишних трат:— останавливайте ВМ в перерывах между практиками (это не снизит потребление до нуля, но заметно сократит расходы);— настройте бюджет и уведомления в разделе Биллинг;— удаляйте ресурсы после завершения курса;— необязательно выполнять все практики — сосредоточьтесь на релевантных.Выполните следующие операции:
- переведите произвольный текст с английского языка на русский;
- переведите тот же текст с использованием глоссариев, добавив туда несколько пар, попробуйте использовать параметры
exact,spellerи поменять капитализацию некоторых глоссарных терминов.
0 комментариев