Реалізація машинного перекладу тексту
Машинний переклад розвивався від статистичних моделей (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 дає хорошу якість при повному контролі даних.







