Реализация машинного перевода текста
Машинный перевод прошёл путь от статистических моделей (Moses) через нейронные (seq2seq+attention) к современным трансформерам. Сегодня для большинства языковых пар доступны готовые модели высокого качества — задача сводится к выбору правильной модели и интеграции в продукт.
Выбор модели перевода
Готовые API (лучшее качество, простота):
- Google Cloud Translation API: 500K символов/месяц бесплатно, >100 языков, $20/1M символов
- DeepL API: превосходит Google для европейских языков, $5.99/месяц для 500K символов
- OpenAI GPT-4o: для контекстно-зависимого перевода (маркетинг, литература)
Open-source модели (приватность, on-premise, нет затрат на API):
- MarianMT (Helsinki-NLP): компактные модели для 1000+ языковых пар, Hugging Face
- NLLB-200 (Meta): 200 языков включая редкие, качество близко к Google для мн. пар
- SeamlessM4T (Meta): мультимодальная — текст и речь, 100+ языков
- Opus-MT: большая коллекция обученных MarianMT моделей
from transformers import MarianMTModel, MarianTokenizer
model_name = "Helsinki-NLP/opus-mt-ru-en"
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
def translate(texts: list[str]) -> list[str]:
inputs = tokenizer(texts, return_tensors="pt", padding=True, truncation=True)
translated = model.generate(**inputs)
return tokenizer.batch_decode(translated, skip_special_tokens=True)
Специализированный перевод
Готовые модели плохо справляются с отраслевой терминологией. Стратегии:
Терминологические словари: пост-обработка перевода с заменой на утверждённые термины. Библиотека sacremoses для детокенизации, затем regex-замена.
Fine-tuning на доменных данных: 10K–100K параллельных предложений из вашей области. MarianMT обучается на одном GPU за несколько часов. Качество растёт на 3–8 BLEU для специализированных текстов.
Промпт-инжиниринг для LLM: GPT-4o с инструкцией «переводи медицинские тексты, сохраняй латинские термины» без fine-tuning.
Постобработка качества
Автоматическая оценка перевода:
- BLEU: стандартная метрика, но коррелирует с качеством только на больших наборах
-
COMET: нейросетевая метрика, лучше коррелирует с человеческими оценками (модель
Unbabel/wmt22-comet-da) - chrF: хороша для морфологически богатых языков (русский)
В production: A/B тест двух моделей на реальных пользователях — engagement, время на странице, явные оценки.
Обработка длинных текстов
MarianMT ограничен 512 токенами. Для длинных документов:
- Разбивка на предложения:
nltk.sent_tokenizeилиspacy - Перевод по предложениям
- Сборка с учётом форматирования
Для GPT-4o: чанкинг по абзацам с перекрытием (последнее предложение предыдущего чанка) — сохраняет контекст для связных переходов.
Производительность
| Модель | Скорость (CPU) | Скорость (GPU) | Качество ru-en |
|---|---|---|---|
| MarianMT | 50–100 слов/сек | 500–1000 слов/сек | BLEU ~35 |
| NLLB-200 | 20–50 слов/сек | 200–500 слов/сек | BLEU ~38 |
| GPT-4o-mini API | — | ~500 слов/сек | BLEU ~42 |
| DeepL API | — | ~2000 слов/сек | BLEU ~44 |
Для on-premise с бюджетом на GPU: NLLB-200 на A10G даёт хорошее качество при полном контроле данных.







