Как стать автором
Обновить

Сравнение локальных моделей машинного перевода для английского, китайского и русского языков

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров4.5K

"Машинный перевод – одна из наиболее актуальных и востребованных задач в сфере искусственного интеллекта, позволяющая снизить барьер в доступности информации на различных языках. Большинство данных в интернете представлены на английском и русском языках ссылка. Количество данных на китайском языке в открытом доступе становится с каждым днем всё больше.  Поэтому необходимо всё больше инструментов позволяющих использовать все эти языки для своей работы.

Я уже больше года занимаюсь задачей машинного перевода для языков с высоким ресурсом данных. Ранее я подготовил модель к продукту AgrosTranslate для перевода с Английского на Русский язык ссылка. Позже я выпустил открытую модель для перевода с Китайского на Русский язык и обратно ссылка. Позже, несколько человек, просили реализовать модель перевода с Русского на Английский, и анализируя эти запросы, я пришел к выводу, что данных моделей не достаточно, и решил подготовить обновленные модели, собрав весь свой прошлый опыт.

В рамках своей последней работы, на которую у меня ушло по меньшей мере 6 месяцев, я подготовил новые модели машинного  перевода, которые могут работать сразу с тремя языками, а это Английский, Русский и Китайский, в любом направлении перевода!

В этой работе я подготовил сразу 3 модели машинного перевода - это large, base и small. Так, чтобы каждый выбрал для себя нужную модель выбирая между скоростью и качеством перевода.

  1. utrobinmv/t5_translate_en_ru_zh_small_1024 - small модель (наиболее быстрая)

  2. utrobinmv/t5_translate_en_ru_zh_large_1024 - large модель (самый качественный перевод)

  3. utrobinmv/t5_translate_en_ru_zh_base_200 - base модель (не уступающая по качеству модели large), но для более коротких текстов и более быстрая. 

Все 3 модели относятся к классу мультиязычных моделей, которые могут работать с любым из 3х языков.

Свою статью я бы хотел разделить на две части: где в первой сравнить их с существующими решениями локальных моделей машинного перевода от других компаний, а во второй  рассказать про свои новые модели подробнее и методики их использования.

Итак, поехали…

Сравнение моделей перевода для английского, китайского и русского языков

Модель машинного перевода при сравнении сразу для трех различных языков, требует, чтобы мы сравнили их сразу для 6 языковых пар: английский-китайский (en-zh), английский-русский (en-ru), китайский-английский (zh-en), китайский-русский (zh-ru), русский-английский (ru-en) и русский-китайский (ru-zh). Это означает, что нам нужно оценить эффективность моделей в разных направлениях перевода, что является достаточно сложной задачей.

В данном контексте компания Microsoft предоставляет отличный датасет NTREX, который идеально подходит для этой цели.

Датасет NTREX - включает только часть для тестирования, и создан специально для оценки моделей в задаче машинного перевода, для 128 различных языков.

Метрики для оценки качества моделей машинного перевода

Сложность оценки качества машинного перевода заключается в том, что метрика должна учитывать не только точность и грамматическую корректность перевода, но также и сохранение смысла и стиля исходного текста. Кроме того, машинный перевод может сталкиваться с проблемами, связанными с многозначностью слов, сленгом, идиомами и другими языковыми особенностями, что делает процесс оценки более сложным.

Другими словами, не всегда высокая оценка по одной метрике гарантирует качественный перевод. Поэтому для более полной картины необходимо использовать комбинацию различных метрик.

Более подробно про метрики в машинном переводе, можно найти в очень хорошей серии статей на habr.

Я скажу, что я взял максимальный набор метрик, которые смог запустить на своем компьютере. В качестве основы подсчета метрик, я использовал библиотеку evaluate

  1. SacreBLEU - Наверно первая и наиболее популярная метрика для подсчета качества перевода. Которая подсчитывает общее количество слов и словосочетаний. Чем метрика больше тем лучше.

  2. chrF (correlations with human rankings for 6-gram F1-score) - Метрика chrF опирается на подсчет совпадений символов, которые следуют друг за другом (character n-grams), в машинном и эталонном переводах, в отличие от использования токенов (token n-grams) для ROUGE.. Чем метрика больше тем лучше.

  3. BERTScore - Метрика определяется на основе сравнения близости контекстных эмбеддингов, извлеченных из предварительно обученной нейронной сети BERT. Чем метрика больше тем лучше.

  4. TER (Translation Edit Rate) – Метрика, использующая подсчет минимального количества изменений, необходимых для приближения машинного перевода к наиболее точному эталонному переводу. Чем метрика меньше тем лучше.

  5. METEOR (Metric for Evaluation of Translation with Explicit ORdering) – это метод оценки качества перевода, который основан на подсчете совпадений отдельных слов (unigrams) и учитывает precision, recall, а также обобщающий показатель гармонического среднего (Fmean). В отличие от BLEU или ROUGE, METEOR учитывает не только точные соответствия слов, но и наличие однокоренных слов или синонимов. Чем метрика больше тем лучше.

  6. ROUGE (Recall-Oriented Understudy for Gisting Evaluation) – это набор метрик, основанных на подсчете совпадений слов и словосочетаний в машинном переводе и эталоне, также как и BLEU. Однако ROUGE учитывает не только точность, но и полноту, а также параметр F1. Чем метрика больше тем лучше.

  7. GPU и CPU - Метрика оценки времени работы модели на процессоре и видеокарте. Данный параметр, в большинстве случае напрямую зависит от количества параметров в модели машинного обучения, и чем параметров больше, тем медленнее работает модель. Но зависимость не всегда линейная и сильно зависит в том числе от архитектуры нейросети. Для оптимизации таблиц в статье, я не стал приводить данные параметры в статье, вы можете с ними ознакомится в полной версии сравнения моделей. Метрика CPU не актуальна для моделей более 1 миллиарда параметров, так как я не стал оценивать на сколько долго обсчитываются данные модели на процессоре. Чем метрика меньше, тем лучше.

Модели машинного перевода

Для оценки моделей важно учитывать их размер, для этого я напротив названия модели, буду указывать размер по количеству параметров в модели. Например 418M - означает, что в модели 418 миллионов параметров, или 3.3B - означает, что в модели 3.3 миллиарда параметров. Более большие модели, могут иметь лучше качество перевода, но и делают это с меньшей скоростью. Также большие модели требуют очень много видеопамяти на вашей видеокарте. Например мне, специально пришлось уменьшать количество одновременно обрабатываемых предложений, для моделей более 1 миллиарда параметров, а модели более 2 миллиардов параметров мне пришлось запускать в режиме точности 8bit, чтобы они влезли в память моей видеокарты.

Ранее задачи машинного перевода решали, как задачу перевода с одного конкретного языка на какой то другой язык, и моделей машинного перевода было примерно столько же сколько языковых пар. В этом отношении наиболее известным проектом является проект OPUS-MT Хельсинского университета из Финляндии. 

В рамках данного проекта, было выпущено очень большое количество моделей машинного перевода для различных языковых пар, из этого списка нам потребуются модели:

  1. Helsinki-NLP/opus-mt-zh-en - для пары китайский-английский

  2. Helsinki-NLP/opus-mt-en-zh - для пары английский-китайский

  3. Helsinki-NLP/opus-mt-en-ru - для пары английский-русский

  4. Helsinki-NLP/opus-mt-ru-en - для пары русский-английский

Все модели opus-mt имеют примерно одинаковое количество параметров 74М.

для пар китайский-русский, русский-китайский моделей не существует, но мы возьмем, модель машинного перевода, из моей прошлой статьи: joefox/mbart-large-ru-zh-ru-many-to-many-mmt которая как раз и можно использовать для пар китайский-русский, русский-китайский.

Для задач перевода, в последние годы появилось большое количество мультиязычных моделей, это модели которые учатся переводить сразу на множество различных языков. Сразу несколько проектов открыто в компании “Meta” - признана экстремистской организацией в России. 

Первый проект mBART-50, в рамках которого разработана модель, которая переводит тексты сразу для 50 различных языков.

Второй проект M2M100, в рамках которого разработана модель, которая переводит тексты сразу для 100 различных языков.

Третий проект NLLB-200, в рамках которого разработана модель, которая переводит тексты сразу для 200 различных языков.

Из данных проектов мы возьмем следующие модели для сравнения:

  1. facebook/nllb-200-distilled-1.3B - дистиллированная версия основной модели на 1.3 миллиарда параметров

  2. facebook/nllb-200-distilled-600M - дистиллированная версия основной модели на 600 миллионов параметров

  3. facebook/mbart-large-50-many-to-many-mmt - 582M параметров

  4. facebook/m2m100_418M

Ещё, от данной компании, есть проект с двуязычными моделями WMT19, специализированный под задачу перевода новостей. Здесь под нашу задачу подойдет модель: facebook/wmt19-en-ru (279M) для перевода с Английского на Русский язык.

Сравнения моделей

Сравнение перевода для пары “английский-русский” (en-ru)

name

sacre bleu

chrf

bert score f1

ter

meteor

rouge1

Helsinki-NLP/opus-mt-en-ru

25,0095

51,4155

0,8476

66,4672

0,4722

0,2224

facebook/m2m100_418M

22,0757

48,4266

0,8408

68,4320

0,4529

0,2489

facebook/mbart-large-50-many-to-many-mmt

22,8219

49,3038

0,8423

68,4744

0,4624

0,2428

facebook/nllb-200-distilled-1.3B

26,3921

53,4754

0,8590

62,6019

0,4957

0,2563

facebook/nllb-200-distilled-600M

25,2193

52,0565

0,8541

64,9225

0,4699

0,2612

facebook/wmt19-en-ru

27,4767

53,6640

0,8569

63,9424

0,4961

0,2514

utrobinmv/t5_translate_en_ru_zh_base_200

28,5759

54,2799

0,8554

62,4948

0,5174

0,1908

utrobinmv/t5_translate_en_ru_zh_large_1024

28,0225

54,5335

0,8586

62,6889

0,5272

0,1932

utrobinmv/t5_translate_en_ru_zh_small_1024

19,2178

46,3500

0,8257

71,6757

0,4241

0,1970

Сравнение перевода для пары “русский-английский” (ru-en)

name

sacre bleu

chrf

bert score f1

ter

meteor

rouge1

Helsinki-NLP/opus-mt-ru-en

23,9833

53,8174

0,9374

66,4136

0,5700

0,5747

facebook/m2m100_418M

13,7000

43,5764

0,8976

82,6220

0,4345

0,4739

facebook/mbart-large-50-many-to-many-mmt

24,3928

53,7343

0,9361

65,8848

0,5555

0,5669

facebook/nllb-200-distilled-1.3B

25,1481

55,0731

0,9389

65,8016

0,5737

0,5878

facebook/nllb-200-distilled-600M

22,4326

52,0603

0,9285

70,5321

0,5291

0,5482

utrobinmv/t5_translate_en_ru_zh_base_200

27,3035

55,9527

0,9407

63,3606

0,5918

0,5949

utrobinmv/t5_translate_en_ru_zh_large_1024

27,1314

56,2669

0,9429

63,9991

0,6043

0,6031

utrobinmv/t5_translate_en_ru_zh_small_1024

19,9053

49,8936

0,9219

71,3320

0,5206

0,5303

Сравнение перевода для пары “английский-китайский” (en-zh)

name

sacre bleu

chrf

bert score f1

ter

meteor

rouge1

Helsinki-NLP/opus-mt-en-zh

1,4242

23,8306

0,7899

159,1038

0,0478

0,2227

facebook/m2m100_418M

1,8729

23,8577

0,7829

121,8503

0,0799

0,2400

facebook/mbart-large-50-many-to-many-mmt

1,7330

25,4084

0,8042

159,9984

0,0760

0,2178

facebook/nllb-200-distilled-1.3B

1,2399

19,4471

0,7733

128,1332

0,0165

0,1706

facebook/nllb-200-distilled-600M

1,2022

18,8796

0,7673

113,6864

0,0162

0,1781

utrobinmv/t5_translate_en_ru_zh_base_200

2,1928

29,1543

0,8131

113,8981

0,0830

0,2508

utrobinmv/t5_translate_en_ru_zh_large_1024

1,6960

29,6255

0,8265

115,7029

0,0869

0,2523

utrobinmv/t5_translate_en_ru_zh_small_1024

1,6180

22,6094

0,7773

116,6643

0,0726

0,2433

Сравнение перевода для пары “китайский-английский” (zh-en)

name

sacre bleu

chrf

bert score f1

ter

meteor

rouge1

Helsinki-NLP/opus-mt-zh-en

17,8786

49,8389

0,9247

76,6661

0,5134

0,5292

facebook/m2m100_418M

13,8451

45,7770

0,9141

80,4613

0,4578

0,4933

facebook/mbart-large-50-many-to-many-mmt

20,0748

50,3136

0,9276

72,2366

0,5233

0,5399

facebook/nllb-200-distilled-1.3B

13,3269

41,2097

0,8985

81,6055

0,4142

0,4491

facebook/nllb-200-distilled-600M

15,2232

44,9461

0,9112

81,2294

0,4532

0,4814

utrobinmv/t5_translate_en_ru_zh_base_200

22,1332

52,4549

0,9315

70,2528

0,5579

0,5621

utrobinmv/t5_translate_en_ru_zh_large_1024

22,5254

53,2576

0,9361

69,8088

0,5741

0,5742

utrobinmv/t5_translate_en_ru_zh_small_1024

14,9457

45,8742

0,9132

78,4006

0,4781

0,4916

Сравнение перевода для пары “китайский-русский” (zh-ru)

name

sacre bleu

chrf

bert score f1

ter

meteor

rouge1

facebook/m2m100_418M

10,4357

38,6650

0,7828

87,67

0,3206

0,2036

facebook/mbart-large-50-many-to-many-mmt

2,1387

6,6085

0,7093

108,05

0,0948

0,0609

facebook/nllb-200-distilled-1.3B

8,9797

32,8740

0,7646

89,88

0,2619

0,1919

facebook/nllb-200-distilled-600M

8,6919

34,9578

0,7656

91,4727

0,2692

0,1957

joefox/mbart-large-ru-zh-ru-many-to-many-mmt

13,7238

41,5467

0,7985

83,3914

0,3652

0,2274

utrobinmv/t5_translate_en_ru_zh_base_200

13,0804

42,0661

0,8023

84,9454

0,3460

0,2217

utrobinmv/t5_translate_en_ru_zh_large_1024

13,2207

42,4253

0,8077

97,7217

0,3575

0,2260

utrobinmv/t5_translate_en_ru_zh_small_1024

8,2438

35,7662

0,7711

90,7159

0,2737

0,2043

Сравнение перевода для пары “русский-китайский” (ru-zh)

name

sacre bleu

chrf

bert score f1

ter

meteor

rouge1

facebook/m2m100_418M

0,9265

17,3133

0,7453

123,85

0,0638

0,1948

facebook/mbart-large-50-many-to-many-mmt

0,3101

4,3907

0,5623

1407,8

0,0506

0,0635

facebook/nllb-200-distilled-1.3B

0,9701

17,0343

0,7562

136,87

0,0126

0,1795

facebook/nllb-200-distilled-600M

0,8562

14,8349

0,7371

118,69

0,0113

0,1631

joefox/mbart-large-ru-zh-ru-many-to-many-mmt

1,2970

22,5037

0,7852

113,39

0,0726

0,2229

utrobinmv/t5_translate_en_ru_zh_base_200

1,5048

22,9738

0,7856

113,6

0,0723

0,2256

utrobinmv/t5_translate_en_ru_zh_large_1024

1,2027

23,4712

0,7933

117,24

0,0740

0,2267

utrobinmv/t5_translate_en_ru_zh_small_1024

1,1654

17,3986

0,7525

112,15

0,0634

0,2011

Использование моделей

Для обучения моделей серии t5_translate_en_ru_zh использовался обширный набор текстов, полученных с сайта opus. Основной объем данных представлял собой корпус CCMatrix. Перед началом обучения проводилась очистка корпуса от ненужных элементов. 

На полученном корпусе текстов был обучен токенизатор, размерностью 65000 токенов.

Модели обучались с нуля, специально для задачи машинного перевода.

Одной из отличительных особенностей моделей является их способность не требовать указания исходного языка документа. Достаточно лишь указать язык, на который необходимо выполнить перевод, и модель самостоятельно определит, с какого из трех известных ей языков следует осуществить перевод. Это означает, что исходный текст может быть написан на нескольких языках, включая английский и китайский, и модель без труда справится с переводом даже в том случае, если в английском тексте содержатся китайские иероглифы.

Модели работают с разными объемами текста. В частности, модель small и large предназначена для перевода предложений, состоящих из не более чем 1024 токенов. Возможно, она также способна обрабатывать более длинные последовательности, но я не проводил проверку этого лично. С другой стороны, base модель обучалась на коротких последовательностях, состоящих не более чем из 200 токенов.

Для использования моделей вам необходимо использовать библиотеку transformers

from transformers import T5ForConditionalGeneration, T5Tokenizer

model_name = 'utrobinmv/t5_translate_en_ru_zh_large_1024'
model = T5ForConditionalGeneration.from_pretrained(model_name)
tokenizer = T5Tokenizer.from_pretrained(model_name)

prefix = 'translate to zh: '
src_text = prefix + "Съешь ещё этих мягких французских булок."

# translate Russian to Chinese
input_ids = tokenizer(src_text, return_tensors="pt")

generated_tokens = model.generate(**input_ids)

result = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)
print(result)

В коде вы меняете значение переменной prefix исходя из требуемого языка, на который вам необходимо перевести. Возможны варианты:

  1. prefix = 'translate to en: '

  2. prefix = 'translate to ru: '

  3. prefix = 'translate to zh: '

Результаты сравнения моделей

Наверное я не буду делать сам конкретных выводов по оценке качества моделей, цифры говорят сами за себя.

В целом можно сказать, что модели получились неплохими, и их можно использовать в работе, а также для личных задач и проектах, может быть даже на соревнованиях.

  1. utrobinmv/t5_translate_en_ru_zh_small_1024 - модель small можно брать как базовое решение, когда вам нужно провести какие то эксперименты, и вы хотите решить какую то задачу. или вашу задачу нужно решать на CPU.

  2. utrobinmv/t5_translate_en_ru_zh_large_1024 - модель large, можно использовать для задач машинного перевода, когда ваша задача улучшить качество. Она показывает хорошие метрики на инференсе, если вы её используете на GPU.

  3. utrobinmv/t5_translate_en_ru_zh_base_200 - модель base, просто получилась удачной по соотношению количества параметров и результата по метрикам. В некоторых тестах она даже обходит large модель. Так как училась на более коротких текстах, до 200 токенов.

Теги:
Хабы:
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Публикации

Истории

Работа

Data Scientist
53 вакансии

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область