Перевод и ответы на вопросы
Ещё две полезные задачи 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) — потому что ответ это буквально подстрока.
Когда что выбрать
| Задача | Тип модели | Что выдаёт |
| translation | encoder-decoder | текст на целевом языке |
| question-answering | encoder (BERT-подобная) | фрагмент контекста |
Как работает под капотом
В extractive QA модель получает на вход склеенные вопрос и контекст. Она предсказывает для каждого токена два числа: вероятность того, что этот токен — начало ответа, и что он — конец. Постобработка выбирает пару (start, end) с максимальной суммарной вероятностью и вырезает соответствующий фрагмент. Перевод же работает авторегрессионно на стороне декодера, как генерация, но «направляется» закодированным исходным текстом.
Частые ошибки
- Ждать от extractive QA ответа, которого нет в контексте. Модель только выделяет фрагмент текста; если ответа в контексте нет, результат будет бессмысленным.
- Путать extractive и generative QA. Большие LLM генерируют ответ, а эти модели выбирают подстроку.
- Переводить без подходящей языковой пары. Модель
opus-mt-ru-enпереводит только с русского на английский, не наоборот.
Итог
- Перевод выполняет encoder-decoder модель; пара языков задаётся выбором модели.
- Extractive QA находит ответ как подстроку контекста, а не придумывает его.
- QA-модель предсказывает позиции начала и конца ответа в тексте.
- Если ответа нет в контексте — extractive QA выдаст мусор.