translate_enaz_10m: открытый англо-азербайджанский датасет, 10 млн пар
Около 10 млн англо-азербайджанских пар предложений из текстов Национальной библиотеки: что внутри translate_enaz_10m и как его применять.
Качественный машинный перевод на азербайджанский начинается с данных, а открытых параллельных данных для азербайджанского языка заметно меньше, чем для крупных европейских языков. В апреле 2023 года Learning Machine опубликовала на Hugging Face translate_enaz_10m: открытый азербайджанский датасет примерно из 10 миллионов англо-азербайджанских пар предложений. В этой статье рассказываем, откуда взяты тексты, как получены пары, как выглядят файлы и что учесть, прежде чем обучать на них модель.
Что внутри
- Объём: около 10 миллионов пар предложений; 975 МБ в архиве и 2,8 ГБ в распакованном виде.
- Формат: TSV, одна англо-азербайджанская пара на строку, стороны разделены табуляцией.
- Задачи: перевод и генерация текста.
- Лицензия: OpenRAIL.
- Издатель: Learning Machine LLC, апрель 2023 года (в записи для цитирования на карточке датасета указан 2022 год).
Откуда тексты
Азербайджанские предложения извлечены из различных текстовых источников Национальной библиотеки Азербайджана: книг, новостей, стихов и статей, согласно тегам самой библиотеки. В корпус вошли только чистые тексты. Статьи Википедии намеренно не использовались: для этой цели в них слишком много нерелевантных данных, а большой зашумлённый источник при обучении легко перевешивает меньший, но чистый.
В итоге получился корпус с широким набором жанров: художественный язык, публицистика и статьи на общие темы. Это хорошая основа для модели общего назначения.
Как получены пары
Азербайджанская сторона — это оригинальный текст после очистки. Английская сторона получена с помощью Google Translate. У этого есть практические последствия, которые стоит понимать до того, как выбрать способ использования данных:
- Естественное направление — с английского на азербайджанский. Модель учится выдавать оригинальный азербайджанский текст, написанный людьми. Именно так мы использовали корпус для собственной модели перевода.
- С азербайджанского на английский тоже можно, но с оговоркой. Здесь целевая сторона — машинный перевод, поэтому модель научится подражать этому стилю перевода вместе с его ошибками.
- В английском исходнике могут быть ошибки. Если в вашей области важна точность, выборочно проверяйте пары и отфильтровывайте подозрительные.
- Для узких областей нужны свои данные. Для юридических, медицинских текстов или переписки службы поддержки добавьте к этому общему корпусу пары из своей области.
Как скачать и прочитать
Страница датасета на Hugging Face описывает корпус, а её загрузчик берёт данные из одного архива: translate_enaz_10m.zip. Скачайте его напрямую:
wget https://learningmachine.az/datasets/translate_enaz_10m.zip
unzip translate_enaz_10m.zip # dataset_enaz_10m.tsv
В архиве один файл, dataset_enaz_10m.tsv: одна пара на строку, без строки заголовка. Первая колонка — английское предложение, вторая — исходное азербайджанское. Файл весит 2,8 ГБ и в табличный редактор не поместится, поэтому читайте его потоком:
import csv
path = 'dataset_enaz_10m.tsv'
with open(path, encoding='utf-8', newline='') as f:
reader = csv.reader(f, delimiter=' ', quoting=csv.QUOTE_NONE)
for i, (english, azerbaijani) in enumerate(reader):
print(english, '|', azerbaijani)
if i == 4:
break
Для фильтрации и статистики pandas может обрабатывать файл частями, не загружая его в память целиком:
import pandas as pd
for chunk in pd.read_csv(path, sep=' ', header=None, names=['en', 'az'],
quoting=3, chunksize=500_000, on_bad_lines='skip'):
chunk = chunk.dropna().drop_duplicates()
# filter, sample or save the chunk here
Практические советы перед обучением
- Отложите валидационную выборку до начала любых экспериментов и не меняйте её, чтобы результаты оставались сопоставимыми.
- Удалите дубликаты и крайние случаи: пары с пустой стороной, очень длинные предложения и пары, где одна сторона в несколько раз длиннее другой.
- Проверьте азербайджанские буквы. Убедитесь, что ə, ı, ğ, ö, ü, ç и ş закодированы одинаково и в данных, и во входном тексте при использовании модели.
- Определите максимальную длину в токенах для вашей модели и удалите или разбейте более длинные пары.
- Прочитайте лицензию. OpenRAIL допускает широкое использование, но содержит ограничения на применение; проверьте, что ваш проект им соответствует.
Где он уже применён
На этом корпусе мы обучили нашу открытую модель перевода с английского на азербайджанский mt5-enaz-10m: mT5-base, 10 эпох, 620 тысяч шагов, потери на валидации 0,53. Модель вместе с примером кода доступна на Hugging Face. Подробнее о корпусе — на его странице проекта.
Нужны данные под вашу задачу?
Модель хороша ровно настолько, насколько хороши данные, на которых она обучена. Если вам нужно собрать, очистить, выровнять или разметить корпус под вашу задачу, на азербайджанском или другом языке, посмотрите нашу услугу сбора и обработки данных или опишите задачу, и мы предложим решение.
- Hugging Face
- Dataset
- Machine Translation
- Azerbaijani