AI-эвалюаторы
AI-оценки — это автоматические проверки переводов, которые создают ваши движки локализации. На панели управления они называются измерениями и находятся в разделе Radar, в подразделе Измерения. Оба названия означают одно и то же. Каждое измерение отвечает на один вопрос о переводе: выдаёт результат «пройдено» или «не пройдено» либо оценку от 0 до 100 и объясняет свой ответ. AI-оценки выполняются асинхронно, когда перевод уже готов. Они никогда не блокируют перевод, не меняют его и не решают, будет ли он опубликован.
Как это работает#
Каждая завершённая локализация записывается в Radar как событие localization.completed. Оно содержит исходный текст и перевод, обе локали, движок и контекст запроса. Каждое измерение, которое работает с этим типом событий и условиям которого соответствует событие, ставит задачу оценки в очередь. Ответ сохраняется вместе с оценённым событием.
Для переводов движка отдельного ресурса оценщика нет. Те же измерения могут анализировать изменения переводов из подключённых источников, например репозитория GitHub или Справочного центра Zendesk. Именно оттуда описанные ниже измерения правок берут данные.
Подраздел Измерения в разделе Радар открывается на вкладке Встроенные. На вкладке Ваши измерения собраны измерения, созданные вашей организацией. Для каждого измерения указаны типы событий, к которым оно применяется, тип значения, языки, число измеренных событий, а также включено ли оно.
Встроенные измерения#
Lingo.dev определяет, что вычисляет каждое встроенное измерение и с какими типами событий оно может работать. Ваша организация решает, включать ли его и какие события оно будет оценивать.
| Измерение | На какой вопрос отвечает | С какими событиями работает |
|---|---|---|
| Соответствие глоссарию | Какая доля применимых терминов глоссария использована в переводе | Завершённые локализации |
| Соответствие правилам | Какая доля применимых правил соблюдена в переводе | Завершённые локализации |
| MQM | Какова оценка от 0 до 100, рассчитанная по списку ошибок, найденных моделью | Завершённые локализации |
| Частота правок | Менял ли человек перевод | Создание и обновление переводов |
| Расстояние редактирования | Какая доля текста изменилась, в процентах | Создание и обновление переводов |
| Типы правок | Какие виды правок внесены в текст | Создание и обновление переводов |
Чтобы включить измерение, откройте его в подразделе Измерения раздела Radar. Выберите языки перевода, исходные языки, движки и выборку для оценки, включите переключатель Включено и выберите Сохранить изменения. Встроенные измерения нельзя редактировать или удалять. Оценку соответствия глоссарию и правилам также можно включить для отдельного движка — см. Как включить оценки для движка.
Соответствие глоссарию #
Проверяет, использованы ли в переводе термины глоссария, которые применяет движок. Выбираются термины с подходящей целевой локалью, исходный текст которых встречается в оригинале. Модель-оценщик возвращает результат по каждому термину. Заданные переводы (например, «Deploy» — «Bereitstellen») могут менять форму по правилам языка. Непереводимые термины (например, «OAuth») должны оставаться без изменений. Если записи для одного термина противоречат друг другу, достаточно соблюсти одну из них.
Оценка — это доля полученных результатов с отметкой «термин использован». Если к исходному тексту не применим ни один термин глоссария, ответ — «Неприменимо».
Соответствие правилам #
Оценивает каждое правило, которое движок применяет для целевой локали, отдельно: соблюдено, не соблюдено или неприменимо. Если движок применяет три правила, модель-оценщик возвращает три результата, каждый со своим обоснованием.
Правила раньше назывались инструкциями
На панели управления, в переключателе на вкладке «Оценщики» и в Radar они называются правилами. В REST API отдельное правило по-прежнему доступно по адресу /instructions.
Оценка — это доля соблюдённых правил среди применимых. Правила, которые не относятся к содержимому, не учитываются. Например, правило об официальном обращении не учитывается для перевода, состоящего только из названия продукта. Если ни одно правило не применимо, оценки нет.
Обе проверки используют термины глоссария и правила движка на момент проверки, а не сохранённую копию настроек, с которыми движок создал перевод.
MQM#
MQM просит модель перечислить ошибки перевода, но никогда не просит выставить оценку. Для каждой ошибки модель указывает точные слова с ошибкой, одну из семи категорий MQM Core — точность, терминология, языковые нормы, стиль, нормы локали, соответствие аудитории, оформление и разметка — и серьёзность ошибки, а также в одной строке описывает проблему. Если в событии указан движок, модель также видит его тональность бренда для этого языка, правила и термины глоссария, встречающиеся в исходном тексте.
Оценка рассчитывается по этому списку. Ошибки, в которых указаны слова, отсутствующие в переводе, исключаются. Каждая оставшаяся ошибка получает вес по серьёзности: нейтральная — 0, незначительная — 1, значительная — 5, критическая — 25. Сумма нормализуется на 100 слов исходного текста:
max(0, 100 − 100 × summed error weights / source word count)Оценка 100 означает отсутствие ошибок. Та же формула даёт оценку по каждой категории. Для письменностей без пробелов, например китайской, японской, корейской и тайской, каждый символ считается одним словом. Если в исходном тексте нет слов, ответ — «Неприменимо».
Частота правок, расстояние редактирования и типы правок#
Эти три измерения сравнивают изменённый перевод с предыдущей версией строки. Там, где Lingo.dev сам записывает переводы — при синхронизации со Справочным центром Zendesk или в репозитории, где GitHub App создаёт коммиты с переводами либо CLI отправляет их, — измерения дают один ответ для каждой версии, записанной Lingo.dev, и один для изменения, которое вносит человек:
- Версия, записанная Lingo.dev, получает результат «без изменений»: частота правок —
false, расстояние редактирования — 0. - Версия с правками человека, которая следует сразу за версией Lingo.dev, сравнивается с ней. Результат: частота правок —
true, расстояние редактирования и типы внесённых правок. - Дальнейшие правки человека, возврат к тексту Lingo.dev и изменения только пробельных символов в тексте Lingo.dev получают ответ «Неприменимо».
Таким образом, каждый результат false соответствует одному переводу, записанному Lingo.dev, а каждый true — одному переводу, который изменил человек. Если из 100 переводов Lingo.dev изменены 5, частота правок составляет 5 %.
В разделе Исследование Логическое значение с агрегацией Среднее сразу показывает эту долю: каждый перевод, созданный Lingo.dev, учитывается один раз — как прошедший проверку, если человек его изменил, и как не прошедший, если никто его не менял. Само изменение повторно не учитывается. Изменение засчитывается за тот период, когда был создан перевод. Поэтому показатель за недавнюю неделю может расти, пока люди редактируют переводы за эту неделю.
Частота правок перед сравнением удаляет пробельные символы в начале и конце текста, а их последовательности внутри текста заменяет одним пробелом. Поэтому Save changes и Save changes считаются неизменёнными. Расстояние редактирования — это расстояние Левенштейна между исходными текстами: число вставок, удалений и замен, делённое на длину более длинного текста и умноженное на 100. Если тексты слишком длинные для сравнения, ответ — «Неприменимо». Рассматривайте оба измерения вместе, чтобы отличать частые мелкие правки от редких случаев переписывания текста. Типы правок относят изменения к таким категориям, как регистр речи, выбор слов, терминология, порядок слов, грамматика, пунктуация, добавление, пропуск, ошибка перевода и форматирование.
Ни одно из трёх измерений не оценивает, стала ли формулировка лучше, и не измеряет затраченное время.
Как включить оценки для движка #
Вкладка Оценщики движка состоит из двух разделов:
В разделе Автоматическая проверка есть отдельные переключатели Соответствие глоссарию и Соответствие правилам. Когда вы включаете переключатель, движок добавляется во встроенное измерение и само измерение включается. Когда выключаете — движок удаляется из измерения. Настройки языков и выборки остаются прежними. Если встроенное измерение работает со всеми движками, переключатель включён у каждого из них. Если выключить его для одного движка, сохранится список остальных текущих движков. Поэтому созданный позже движок не будет оцениваться, пока его не добавят. Если ваш план предусматривает оплату за оценки, в разделе отображается Оплата за запуск с указанием тарифа.
В разделе Предложения находятся переключатели для Предложений движка. Они реагируют на низкие результаты пользовательских измерений, а не формируют их.
MQM и пользовательских измерений на этой вкладке нет. Включите MQM в Radar, а движки для пользовательского измерения выберите в его условии.
Собственные измерения #
Пользовательское измерение превращает одно из ваших требований к качеству в чёткий критерий, который можно проверить: сохранить оговорку, соблюсти требование к тональности или не смешивать два понятия продукта. Измерение принадлежит организации.
Напишите промпт
В подразделе Измерения раздела Radar выберите Новое измерение и введите промпт — критерий, который применяет модель-оценщик. См. Как писать инструкции.
Задайте название и выберите тип ответа
Дайте измерению узнаваемое название. В поле Значение выберите Пройдено или не пройдено для ответа с двумя вариантами или От 0 до 100 для шкалы, промежуточные значения которой вы можете определить сами. Оставьте переключатель Разрешить ответ «Неприменимо» включённым, если модель-оценщик должна иметь возможность дать такой ответ.
Выберите триггер и языки
По умолчанию в форме в качестве Триггера выбраны завершённые локализации: оцениваются переводы, созданные вашими движками. Если языки не выбраны, оцениваются переводы на все целевые языки.
Создайте измерение и уточните условия
Выберите Создать измерение. Оно сохранится с включённым условием. На вкладке Основные уточните условие по исходному языку, движку или выборке. Чтобы добавить другие типы событий, используйте Выбрать событие в разделе Запускается при. Если ни одна подключённая интеграция не отправляет события нужных типов, на этой вкладке в разделе Запускается при появится сообщение об этом со ссылкой на Интеграции в Настройках.
Ответы Пройдено или не пройдено сводятся к доле успешных результатов: 75 % означает, что 3 из 4 переводов, получивших ответ, прошли оценку. Для ответов От 0 до 100 рассчитывается среднее значение. Процент — это значение на шкале, заданной вашим промптом, а не вероятность того, что перевод верен.
Как выбрать переводы для оценки#
Каждое условие, как и настройки каждого встроенного измерения, ограничивает набор событий своего типа:
| Фильтр | Что выбирает |
|---|---|
| Языки | Целевые локали. Любой язык выбирает все целевые локали |
| Исходные языки | Исходные локали. Любой исходный язык выбирает все исходные локали |
| Движки | Движки, переводы которых оцениваются. Любой движок включает и движки, созданные позже |
| Выборка | Каждое событие или 50, 25, 20, 10, 5 либо 1 % событий, прошедших остальные фильтры |
Выберите Сохранить изменения, чтобы применить настройки. При выборе локалей учитывается их иерархия, а не точное совпадение текста: fr также выбирает fr-CA, а fr-CA не выбирает fr-FR. Запрос, записанный без движка, не соответствует условию с ограничением по движку.
Попадание в выборку определяется для каждой пары «событие — измерение». Поэтому при повторной оценке одно и то же событие снова попадёт в заданную выборку или снова останется за её пределами. На небольшом наборе событий фактическая доля выборки может отличаться от заданной.
Событие выбранного типа, которое не проходит отбор по селектору, всё равно получает ответ N/A. Обоснование начинается со слов «Условие не выполнено» и указывает селектор. Такой ответ не оплачивается. Не включайте эти ответы в знаменатель при расчёте показателей качества, но учитывайте их, когда объясняете, какая часть объёма переводов прошла проверку.
Настройка Включено включает или выключает все условия измерения сразу. Если её выключить, новые проверки прекратятся, но задачи, уже поставленные в очередь, могут завершиться.
Как писать инструкции #
Промпт — основа пользовательского измерения. Он задаёт модели-оценщику, что именно проверять. Сформулируйте его как конкретный критерий, который можно проверить.
Хорошие инструкции#
Соответствует или не соответствует:
Check whether all HTML tags in the source text are preserved
exactly in the translation. Tags must not be added, removed,
modified, or reordered. Pass if all tags are preserved, fail
if any tag is missing or altered.От 0 до 100:
Rate the fluency of the translation on a scale of 0-100.
100 means a native speaker would find it completely natural.
0 means it reads like machine output. Deduct points for
awkward phrasing, unnatural word order, or overly literal
constructions.Что делает инструкцию хорошей#
- Конкретные критерии — точно определите, что означает соответствие и несоответствие или что обозначают 0 и 100
- Наблюдаемые результаты — модель-оценщик должна принимать решение по тексту, а не угадывать замысел
- Один аспект на измерение — разделяйте проверки разных аспектов качества на отдельные измерения
- Когда воздержаться от оценки — если включена настройка Разрешить «Неприменимо», укажите, когда критерий не применяется, чтобы не путать перевод, к которому он не относится, с переводом, для оценки которого не хватает данных
Прежде чем полагаться на ответы нового измерения для большого числа переводов, протестируйте его на переводах, которые можете проверить: и с известными ошибками, и с допустимыми перефразировками.
Ответы N/A#
Если включена настройка Разрешить «Неприменимо», модель-оценщик может ответить N/A вместо вердикта или балла. Например, при проверке формального обращения в языке, где нет различия между формальным и неформальным обращением. Ответы N/A не учитываются при расчёте средних значений и доли успешных проверок: они не занижают и не завышают оценки. Если настройка выключена, модель-оценщик должна указать соответствие, несоответствие или балл. Событие, которое не соответствует условию, получает ответ N/A без обращения к модели-оценщику независимо от этой настройки.
Как читать ответы#
Каждый ответ содержит обоснование и, если для этого достаточно данных, предложенное исправление.
- В Радаре, в подразделе Измерения раздела Логи, собраны все ответы. Отфильтруйте их по полям Измерение и Значение, затем откройте ответ, чтобы посмотреть значение, обоснование, предложение и запрос судьи.
- На вкладке Журналы движка для каждого запроса на перевод есть столбец Проверка. В нём показано среднее значение последних ответов каждого пользовательского измерения: соответствие считается за 100, несоответствие — за 0, а N/A не учитывается. Если все ответы были N/A, отображается N/A, а если ответов нет — Не проверено. Соответствие глоссарию, соответствие правилам и MQM в этом столбце не учитываются.
- Отчёты показывают динамику ответов на обзорной странице Radar и в разделе «Исследование».
Ответ «Не соответствует» или низкий балл пользовательского измерения для перевода движка также может запустить предложения для движка. Сам ответ не меняет перевод.
Как проверить уже имеющиеся переводы#
Измерение, включённое сегодня, проверяет новые события. Чтобы применить его к уже собранным событиям, откройте вкладку Обработка прошлых событий и выберите интервал. Показатель Измерено вверху показывает, для скольких событий за этот интервал уже получен результат — всего и по каждому источнику. Например, для репозитория: «1 180 из 7 600». Под датами показано число событий за интервал с разбивкой по источникам — каждому репозиторию GitHub, Справочному центру Zendesk, проекту Crowdin и Lingo.dev — и по типам событий из включённых условий измерения. Так вы можете увидеть, какие события будут обработаны. Вы можете измерить только события, для которых ещё нет результата, или повторить измерение за выбранный интервал, заменив прежние результаты. Перед повторным измерением сохраните определения измерений и результаты, которые нужны вам для сравнения.
Модель проверки#
Вы не выбираете модель для оценки. Соответствие глоссарию, соответствие правилам, MQM, закономерности правок и пользовательские измерения оценивает модель, которую задаёт платформа. Она настраивается отдельно от моделей, с помощью которых движок переводит. Частота правок и расстояние редактирования рассчитываются без модели.
Как изменить или удалить измерение#
На вкладке Общие пользовательского измерения измените промпт, название, тип значения, настройку Разрешить «Неприменимо» или условия, затем выберите Сохранить изменения. Изменение критерия меняет смысл последующих ответов, поэтому сохраните прежнее определение вместе с результатами, с которыми будете сравнивать новые.
При удалении пользовательского измерения удаляются его определение и условия. Сохранённые ответы остаются с пометкой Неизвестное измерение и больше не учитываются в столбце Проверка движка. Чтобы остановить новые проверки и сохранить определение, выключите измерение вместо удаления.
Как управлять измерениями через MCP#
Если вы используете Lingo.dev MCP server, ваш AI-помощник для программирования может получать список измерений, создавать и обновлять их, задавать условия, включать и выключать измерения, а также читать их ответы:
"Create a pass-or-fail measurement on completed localizations
that checks whether HTML tags are preserved in translations.""Add a 0 to 100 fluency measurement for English to German
translations from the docs engine, sampling 50% of them."