Перевод и ответы на вопросы

Ещё две полезные задачи pipeline: машинный перевод и извлечение ответа из текста.

Question Answering (QA) — задача, где модель находит ответ на вопрос внутри заданного контекста (фрагмента текста).

Машинный перевод

Задача перевода обозначается как translation_xx_to_yy или просто translation с указанием модели. Под капотом — encoder-decoder модель (вроде T5 или Marian), которая читает текст на одном языке и порождает его на другом.

translator = pipeline(
    "translation",
    model="Helsinki-NLP/opus-mt-ru-en"
)
print(translator("Привет, как дела?"))
# [{'translation_text': 'Hello, how are you?'}]

Extractive Question Answering

В этой задаче модель не придумывает ответ, а находит его в контексте — выделяет фрагмент исходного текста. Это extractive QA, и оно отличается от генеративного QA у больших LLM.

qa = pipeline("question-answering")
print(qa(
    question="Где основали SpaceX?",
    context="Илон Маск основал SpaceX в США в 2002 году."
))
# {'answer': 'США', 'score': 0.95, 'start': 30, 'end': 33}

Модель возвращает не только текст ответа, но и его позицию в контексте (start, end) — потому что ответ это буквально подстрока.

Когда что выбрать

ЗадачаТип моделиЧто выдаёт
translationencoder-decoderтекст на целевом языке
question-answeringencoder (BERT-подобная)фрагмент контекста

Как работает под капотом

В extractive QA модель получает на вход склеенные вопрос и контекст. Она предсказывает для каждого токена два числа: вероятность того, что этот токен — начало ответа, и что он — конец. Постобработка выбирает пару (start, end) с максимальной суммарной вероятностью и вырезает соответствующий фрагмент. Перевод же работает авторегрессионно на стороне декодера, как генерация, но «направляется» закодированным исходным текстом.

Частые ошибки

  • Ждать от extractive QA ответа, которого нет в контексте. Модель только выделяет фрагмент текста; если ответа в контексте нет, результат будет бессмысленным.
  • Путать extractive и generative QA. Большие LLM генерируют ответ, а эти модели выбирают подстроку.
  • Переводить без подходящей языковой пары. Модель opus-mt-ru-en переводит только с русского на английский, не наоборот.

Итог

  • Перевод выполняет encoder-decoder модель; пара языков задаётся выбором модели.
  • Extractive QA находит ответ как подстроку контекста, а не придумывает его.
  • QA-модель предсказывает позиции начала и конца ответа в тексте.
  • Если ответа нет в контексте — extractive QA выдаст мусор.
Проверьте себя
1. Чем extractive QA отличается от генеративного?
AОно работает быстрее всегда
BОно выделяет ответ как подстроку контекста, а не придумывает его
CОно требует интернета
DОно работает только с английским
2. Что предсказывает модель extractive QA для каждого токена?
AЧасть речи
BВероятности быть началом и концом ответа
CТональность
DПеревод
3. Какой тип модели обычно используется для перевода?
Aencoder (только)
Bencoder-decoder
Cdecoder (только)
Dклассификатор