Бенчмарк · открытый корпус

Не верь нам на слово — посмотри бенчмарк

Сравнение Тетивы с Google Translate, DeepL и YandexGPT на пяти языковых парах. По метрикам COMET, chrF и слепой оценке носителем. Без cherry-picking — корпус и результаты опубликованы полностью.

+18

пунктов COMET в среднем против Google Translate на RU↔KZ, RU↔UZ, RU↔TR.

📊 Корпус на GitHub 📄 Методология 🔄 Последнее обновление: 14 мая 2026
Корпус

Что мы тестировали и почему

Бенчмарк сфокусирован на пяти парах.

  • EN↔RU · Контрольная пара. DeepL и Google Translate здесь сильны; LLM-подход не даёт радикального преимущества. Включаем, чтобы показать честно: на популярных парах разрыв минимальный.
  • RU↔KZ, RU↔UZ, RU↔KY · Языки, на которые активно локализуются российские продукты, выходящие на рынки Центральной Азии. Google и DeepL здесь слабы или вовсе не поддерживают пару — точка, где LLM-подход с правильной маршрутизацией начинает работать заметно лучше.
  • RU↔TR · Растущее направление: турецкие маркетплейсы, edtech-продукты, экспансия российского B2B SaaS в Стамбул. Турецкий хорошо обеспечен моделями, но именно в продуктовой UX-копии разрыв заметен.
  • RU↔AR · MENA-пивот. Арабский требует правильной обработки RTL, шести plural-форм по CLDR и контекстуально корректного выбора между MSA и диалектами.

Тестовый корпус — 2 400 строк интерфейса из реальных open-source проектов (никаких NDA-данных): команды CLI, сообщения об ошибках, тексты кнопок, push-нотификации, валидационные сообщения форм. Источники — i18n-файлы проектов с MIT/Apache лицензией на GitHub: список в репозитории корпуса.

Результаты

Результаты на пяти парах

COMET (выше = лучше; шкала 0–100)

ПараGoogle TranslateDeepLYandexGPTТетива
EN↔RU84.286.183.785.9
RU↔KZ61.472.881.3
RU↔UZ58.769.279.6
RU↔KY54.164.574.2
RU↔TR76.878.474.182.7
RU↔AR71.373.669.880.1

означает, что пара не поддерживается. DeepL не поддерживает казахский, узбекский, киргизский.

chrF (выше = лучше; шкала 0–100)

ПараGoogle TranslateDeepLYandexGPTТетива
EN↔RU58.160.457.359.8
RU↔KZ41.252.663.1
RU↔UZ38.949.361.4
RU↔KY35.745.857.2
RU↔TR53.455.151.760.8
RU↔AR48.951.247.458.6

Слепая оценка носителем (от 1 до 5)

Носителю показывали исходную строку и переводы четырёх систем без указания, какой откуда. Носитель оценивал каждый перевод по шкале 1–5, средние значения по 300 строк на пару.

ПараGoogle TranslateDeepLYandexGPTТетива
RU↔KZ2.43.64.3
RU↔UZ2.23.44.1
RU↔TR3.43.63.14.2
RU↔AR3.13.33.04.0

Полные результаты по каждой строке, имена носителей-оценщиков и их квалификация — в репозитории github.com/tetiva-dev/quality-benchmark. Бенчмарк обновляется при каждом major-релизе.

Конкретные строки

Что значит «лучше» — на конкретных строках

Пример 01 — Пара RU↔KZ

Источник (RU) В корзине {count, plural, one {# товар} few {# товара} many {# товаров}}
СистемаПеревод
Google TranslateСебетте {count, plural, one {# товар} few {# товара} many {# товаров}}
ICU-структура осталась русской, plural-формы в неё не подставлены
YandexGPTСебетте {count} зат бар
plural-формы потеряны полностью
Тетива{count, plural, one {Себетте # зат} other {Себетте # зат}}
корректная ICU-структура с категориями казахского (one + other по CLDR)

Комментарий носителя: В казахском нет различия «few/many» как в русском — только «one» и «other». Тетива знает CLDR-таблицу и не пытается тянуть русскую трёхчастную структуру в казахский.

Пример 02 — Пара RU↔UZ

Источник (RU) Удалить аккаунт навсегда?
СистемаПеревод
Google TranslateHisobni butunlay o'chirib tashlashni xohlaysizmi?
латиница, но большая часть приложений всё ещё работает с кириллической версией. Google не различает варианты
YandexGPTАккаунтни бутунлай ўчиришни хоҳлайсизми?
кириллица, но в неформальном регистре — для модального диалога удаления слишком вежливая конструкция
Тетива Аккаунтни бутунлай ўчирасизми? (кириллица)
Hisobni butunlay o'chirasizmi? (латиница)
обе версии генерируются автоматически по locale-тегу uz-Cyrl-UZ или uz-Latn-UZ

Комментарий носителя: Узбекский — двухписьменный язык в активной фазе перехода. Реальные продукты должны поддерживать обе версии, и uz-Latn-UZuz-Cyrl-UZ — это разные локали, не разные представления одной.

Пример 03 — Пара RU↔TR

Источник (RU) Сохранить {percent}% на первом заказе
СистемаПеревод
Google Translateİlk siparişinizde {percent}% kaydet
«kaydet» = «сохранить» в смысле «save file», не «сэкономить»
DeepLİlk siparişinizden {percent}% tasarruf edin
корректно, но громоздко для кнопки
YandexGPTİlk siparişinde %{percent} indirim
меняет смысл с «save» на «discount», синтаксис плейсхолдера сломан
Тетиваİlk siparişte %{percent} tasarruf
краткая императивная форма, корректный синтаксис процента, плейсхолдер сохранён

Комментарий носителя: «Сохранить» в контексте кнопки скидки — это про сэкономить, не про сохранить файл. Google здесь делает классическую ошибку машинного перевода без контекста.

Пример 04 — Пара RU↔AR

Источник (RU) У вас {count, plural, one {# непрочитанное сообщение} few {# непрочитанных сообщения} many {# непрочитанных сообщений}}
СистемаПеревод
Google Translateلديك {count} رسالة غير مقروءة
plural-формы потеряны полностью; в арабском их шесть
DeepLلديك {count} رسائل غير مقروءة
plural-формы потеряны, используется одна форма для всех
Тетива {count, plural, zero {…} one {…} two {…} few {…} many {…} other {…}}
все шесть категорий CLDR для арабского, с корректной формой существительного в каждой

Комментарий носителя: Арабский — единственный из мейнстримных языков с шестью plural-категориями (zero, one, two, few, many, other). На счётчиках сообщений это видно сразу — «у вас 0 непрочитанных» звучит грамматически правильно только в форме zero.

Методология

Как мы считали

Корпус

2 400 строк из i18n-файлов 18 open-source проектов под MIT, Apache 2.0 или BSD-3 — список репозиториев и SHA коммитов опубликован. Соотношение типов строк примерно отражает реальную продуктовую копию: 38% UI-кнопки и короткие подписи, 27% сообщения об ошибках и валидации, 18% строки с одним и более плейсхолдерами, 12% ICU MessageFormat с plural-формами, 5% длинные тексты.

Метрики

COMET в версии Unbabel wmt22-comet-da — reference-based нейронная метрика, считается state-of-the-art для оценки качества MT. chrF в classic-варианте — character-level F-score. Слепая оценка носителем — три оценщика на каждую пару, шкала 1–5, без знания, какой перевод от какой системы. В таблице — средние значения, в репозитории — индивидуальные оценки и Cohen's kappa между оценщиками.

Системы

Google Translate — публичный API на момент 12–14 мая 2026. DeepL — публичный API в плане Pro. YandexGPT — модель YandexGPT 5.1 Pro через Yandex Cloud. Тетива — production-роутинг на момент бенчмарка, без специальной «бенчмарк-настройки».

Что мы не делали

Не отбирали «удобные» строки. Не дотюнивали prompt специально под бенчмарк. Не запускали бенчмарк несколько раз и не публиковали лучший прогон — все цифры — single run на зафиксированной версии корпуса. Если воспроизведение даст другие цифры на ±2–3 балла COMET — это нормальный variance.

Воспроизведение

Запусти бенчмарк на своём корпусе

Если ты не доверяешь нашему корпусу — установи CLI и проверь на своём.

$ npm install -g @tetiva/cli $ tetiva benchmark --source ./locales/en.json --targets kk,uz,tr,ar \ --compare google,deepl,yandexgpt

Команда требует API-ключи Google Translate / DeepL / YandexGPT для прямого сравнения. Результат — markdown-отчёт с теми же метриками, что и в нашем бенчмарке, на твоих строках. Без отправки данных третьим лицам кроме указанных провайдеров.

Самопроверка

Вопросы к самому бенчмарку

Почему COMET, а не BLEU?

BLEU — устаревшая метрика. Она хорошо коррелирует с человеческой оценкой только на грубых различиях, и сильно теряет на тонких. COMET — нейронная reference-based метрика, обученная предсказывать человеческие оценки на данных WMT shared tasks. На современных бенчмарках COMET считается состоянием искусства; BLEU добавляем только для совместимости со старыми работами — в репозитории есть и BLEU-цифры, в основной таблице мы их не показываем, чтобы не размывать сигнал.

Почему вы сами и заказчик, и подрядчик бенчмарка?

Честный вопрос. Поэтому: (а) весь корпус и сырые ответы каждой системы — в открытом репозитории; (б) команда CLI tetiva benchmark позволяет запустить тот же бенчмарк на твоём корпусе в один шаг; (в) если ты опубликуешь свой бенчмарк, который показывает другие результаты — мы либо признаем разрыв и обновим методологию, либо аргументированно объясним, в чём разница. Email для таких писем — benchmark@tetiva.dev.

Можно ли натренировать систему под бенчмарк-корпус?

Можно, и это — известная проблема всех публичных бенчмарков. Поэтому мы дополнительно делаем «слепой» прогон на каждом major-релизе: берём 300 строк из приватного корпуса, который никогда не публиковался, и считаем те же метрики. Если разрыв с публичными цифрами больше ±3 баллов COMET — это симптом overfitting, мы это публикуем и расследуем.

Готов попробовать на своём проекте?

Free-тир: 500 ключей. Без карточки. Бенчмарк — на твоём корпусе.

$ npm install -g @tetiva/cli