translate_enaz_10m: 10 milyon cütlük açıq ingilis-Azərbaycan dataseti
Milli Kitabxananın mətnlərindən yığılmış təxminən 10 milyon ingilis-Azərbaycan cümlə cütü: datasetin tərkibi və ondan necə istifadə etmək olar.
Keyfiyyətli Azərbaycan dilində maşın tərcüməsi verilənlərdən başlayır, Azərbaycan dili üçün açıq paralel məlumatlar isə böyük Avropa dilləri ilə müqayisədə xeyli azdır. 2023-cü ilin aprelində Learning Machine Hugging Face-də translate_enaz_10m datasetini dərc etdi: təxminən 10 milyon ingilis-Azərbaycan cümlə cütündən ibarət açıq Azərbaycan dataseti. Bu məqalədə mətnlərin haradan götürüldüyünü, cütlərin necə yaradıldığını, faylların necə göründüyünü və onlar üzərində model öyrətməzdən əvvəl nələrə diqqət etmək lazım olduğunu izah edirik.
Datasetin tərkibi
- Həcm: təxminən 10 milyon cümlə cütü; arxivdə 975 MB, açılmış halda 2,8 GB.
- Format: TSV, hər sətirdə bir ingilis-Azərbaycan cütü, iki tərəf tab simvolu ilə ayrılır.
- Tapşırıqlar: tərcümə və mətn generasiyası.
- Lisenziya: OpenRAIL.
- Dərc edən: Learning Machine MMC, 2023-cü ilin aprel ayı (dataset kartındakı istinad qeydində 2022-ci il göstərilib).
Mətnlər haradan götürülüb
Azərbaycan dilindəki cümlələr Azərbaycan Milli Kitabxanasının müxtəlif mətn mənbələrindən çıxarılıb: kitablar, xəbərlər, şeirlər və məqalələr, kitabxananın öz teqlərinə uyğun olaraq. Korpusa yalnız təmiz mətnlər daxil edilib. Vikipediya məqalələrindən qəsdən istifadə edilməyib: bu məqsəd üçün onlarda çoxlu lazımsız məlumat var, böyük və səs-küylü mənbə isə öyrətmə zamanı daha kiçik, lakin təmiz mənbəni asanlıqla üstələyə bilər.
Nəticədə janrları geniş olan korpus alınıb: bədii dil, publisistika və ümumi mövzulu məqalələr. Bu, ümumi təyinatlı model üçün yaxşı bazadır.
Cütlər necə yaradılıb
Azərbaycan tərəfi təmizlənmiş orijinal mətndir. İngilis tərəfi isə Google Translate vasitəsilə əldə edilib. Bunun praktik nəticələri var və məlumatlardan necə istifadə edəcəyinizi seçməzdən əvvəl onları bilmək faydalıdır:
- Təbii istiqamət ingilis dilindən Azərbaycan dilinədir. Modelin yaratmağı öyrəndiyi mətn insan tərəfindən yazılmış orijinal Azərbaycan mətnidir. Korpusdan öz tərcümə modelimiz üçün məhz belə istifadə etmişik.
- Azərbaycan dilindən ingilis dilinə də mümkündür, amma bir şərtlə. Bu halda hədəf maşın tərcüməsi ilə alınmış ingilis mətnidir, ona görə model həmin tərcümə üslubunu, o cümlədən onun səhvlərini təqlid etməyi öyrənəcək.
- İngilis mənbə mətnində səhvlər ola bilər. Sizin sahənizdə dəqiqlik vacibdirsə, cütlərdən nümunələr seçib yoxlayın və səhv görünənləri süzün.
- İxtisaslaşmış sahələr üçün öz məlumatlarınız lazımdır. Hüquqi, tibbi və ya müştəri dəstəyi mətnləri üçün bu ümumi korpusun üzərinə həmin sahəyə aid cütlər əlavə edin.
Necə yükləmək və oxumaq olar
Hugging Face-dəki dataset səhifəsi korpusu təsvir edir, onun yükləyicisi isə məlumatları bir arxivdən götürür: translate_enaz_10m.zip. Onu birbaşa yükləyin:
wget https://learningmachine.az/datasets/translate_enaz_10m.zip
unzip translate_enaz_10m.zip # dataset_enaz_10m.tsv
Arxivdə bir fayl var: dataset_enaz_10m.tsv. Hər sətirdə bir cüt, başlıq sətri yoxdur. Birinci sütun ingiliscə cümlə, ikinci sütun orijinal azərbaycanca cümlədir. 2,8 GB həcmində fayl cədvəl proqramında açılmır, ona görə onu axınla oxuyun:
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
Süzgəc və statistika üçün pandas faylı bütövlükdə yaddaşa yükləmədən hissə-hissə emal edə bilər:
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
Öyrətmədən əvvəl praktik məsləhətlər
- Validasiya dəstini ayırın, hələ heç bir təcrübəyə başlamadan, və nəticələr müqayisə edilə bilsin deyə onu dəyişməyin.
- Təkrarları və həddindən artıq cütləri silin: boş tərəfli, çox uzun cümləli və bir tərəfi digərindən bir neçə dəfə uzun olan cütləri.
- Azərbaycan hərflərini yoxlayın. ə, ı, ğ, ö, ü, ç və ş hərflərinin həm məlumatlarda, həm də modelə veriləcək mətndə eyni cür kodlaşdırıldığına əmin olun.
- Maksimal uzunluğu müəyyənləşdirin, modeliniz üçün tokenlərlə, daha uzun cütləri isə silin və ya bölün.
- Lisenziyanı oxuyun. OpenRAIL geniş istifadəyə icazə verir, lakin istifadə məhdudiyyətləri də ehtiva edir; layihənizin onlara uyğun olduğunu yoxlayın.
Nə üçün istifadə olunub
Bu korpus üzərində ingilis dilindən Azərbaycan dilinə tərcümə edən açıq modelimiz mt5-enaz-10m-i öyrətmişik: mT5-base, 10 epoxa, 620 min addım, qiymətləndirmə itkisi 0,53. Model nümunə kodla birlikdə Hugging Face-də mövcuddur. Korpus haqqında ətraflı məlumat onun layihə səhifəsindədir.
Öz tapşırığınız üçün məlumat lazımdır?
Model onun arxasındakı məlumatlar qədər yaxşıdır. Tapşırığınız üçün Azərbaycan və ya başqa dildə korpusun toplanması, təmizlənməsi, uyğunlaşdırılması və ya işarələnməsi lazımdırsa, məlumatların toplanması və emalı xidmətimizə baxın və ya tapşırığınızı təsvir edin, biz həll yolu təklif edək.
- Hugging Face
- Dataset
- Machine Translation
- Azerbaijani