mt5-enaz-10m ilə Azərbaycan dilinə maşın tərcüməsi: praktik bələdçi
mt5-enaz-10m ingilis dilindən Azərbaycan dilinə tərcümə edən açıq mT5 modelidir. Onun necə öyrədildiyini və Python-da necə işə salındığını göstəririk.
mt5-enaz-10m ingilis dilindən Azərbaycan dilinə maşın tərcüməsi üçün açıq modeldir. Biz onu 2023-cü ilin aprelində Hugging Face-də dərc etmişik. Bu bələdçidə modelin nə olduğunu, necə öyrədildiyini, Python-da necə işə salındığını və onu məhsula daxil etməzdən əvvəl nələri nəzərə almaq lazım olduğunu izah edirik.
Model nədir
Model Google-un mətndən mətnə T5 arxitekturasının çoxdilli versiyası olan mT5-base əsasında qurulub. Biz onu öz açıq korpusumuz translate_enaz_10m üzərində əlavə öyrətmişik: təxminən 10 milyon ingilis-Azərbaycan cümlə cütü, burada Azərbaycan tərəfi Azərbaycan Milli Kitabxanasının mənbələrindən götürülmüş təmizlənmiş orijinal mətndir. Yəni model başqa tərcümə sistemi tərəfindən deyil, insanlar tərəfindən yazılmış Azərbaycan mətnini yaratmağı öyrənib.
Öyrətmə qısaca
| Parametr | Dəyər |
|---|---|
| Baza model | mT5-base |
| Öyrətmə məlumatları | translate_enaz_10m, təxminən 10 mln cüt |
| Batch ölçüsü | 16 |
| Epoxalar | 10 |
| Addımlar | 620 min |
| Öyrətmə itkisi | 0,56 |
| Qiymətləndirmə itkisi | 0,53 |
| Öyrətmə müddəti | 2 gün |
| Lisenziya | CC BY-NC-SA 4.0 |
Necə işə salmaq olar
Sizə transformers kitabxanası, mT5 tokenizatoru üçün sentencepiece və PyTorch lazımdır:
pip install transformers sentencepiece torch
Model mətnin əvvəlində tapşırıq prefiksi gözləyir: translate English to Azerbaijani: {text}. Budur model kartından determinist (greedy) dekodlaşdırma ilə əsas nümunə:
from transformers import MT5Tokenizer, MT5ForConditionalGeneration
model_name = 'learningmachineaz/mt5-enaz-10m'
tokenizer = MT5Tokenizer.from_pretrained(model_name)
model = MT5ForConditionalGeneration.from_pretrained(model_name)
text = "Artificial intelligence is already superior to human learning in numerous domains."
input_ids = tokenizer(f'translate English to Azerbaijani: {text}', return_tensors="pt").input_ids
outputs = model.generate(input_ids, max_length=128, do_sample=False, num_return_sequences=1)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
# Süni intellekt artıq çoxsaylı domenlərdə insanın öyrənilməsindən üstünlük təşkil edir.
Sampling ilə bir neçə variant
Bəzən birdən çox tərcüməni görmək faydalıdır, məsələn, redaktor ən yaxşı ifadəni seçə bilsin deyə. Sampling-i aktivləşdirin və bir neçə ardıcıllıq istəyin:
outputs = model.generate(input_ids, max_length=128, do_sample=True,
top_k=10, num_return_sequences=3)
for out in outputs:
print(tokenizer.decode(out, skip_special_tokens=True))
Sampling zamanı hər işə salma fərqli variantlar qaytara bilər. Pipeline-da təkrarlana bilən nəticələr üçün do_sample=False saxlayın.
Bir dəfəyə çoxlu cümlənin tərcüməsi
Mətnlər toplusu üçün girişləri eyni uzunluğa qədər doldurun (padding) və hər çıxışı dekodlaşdırın:
texts = ["The meeting starts at ten.", "Please send me the report."]
batch = tokenizer([f'translate English to Azerbaijani: {t}' for t in texts],
return_tensors="pt", padding=True)
outputs = model.generate(**batch, max_length=128, do_sample=False)
for out in outputs:
print(tokenizer.decode(out, skip_special_tokens=True))
GPU bunu xeyli sürətləndirir, lakin kiçik həcmlər üçün model CPU-da da işləyir.
Praktik məsləhətlər
- Prefiksi dəqiq saxlayın. Model
translate English to Azerbaijani:prefiksi ilə öyrədilib; başqa ifadə nəticəni pisləşdirə bilər. - Cümlə-cümlə tərcümə edin. Generasiya
max_length=128ilə məhdudlaşdırılıb, ona görə uzun sənədləri cümlələrə və ya qısa abzaslara bölün, sonra nəticələri birləşdirin. - Yalnız bir istiqamət. Model ingilis dilindən Azərbaycan dilinə tərcümə edir; əks istiqamət üçün öyrədilməyib.
- Sahə terminologiyasını yoxlayın. Öyrətmə mətnləri kitablar, xəbərlər, şeirlər və məqalələrdir. Hüquqi, tibbi və ya texniki məzmun üçün nəticəni yoxlayın və ya modeli həmin sahəyə aid cütlər üzərində əlavə öyrədin.
- Dərc olunan mətndə insan iştirakını saxlayın. İstənilən maşın tərcüməsi kimi, keyfiyyət vacib olanda nəticə insan redaktəsindən sonra daha yaxşı oxunur.
Lisenziya: qeyri-kommersiya
mt5-enaz-10m CC BY-NC-SA 4.0 lisenziyası ilə yayımlanıb. Ondan müəllifliyi göstərməklə, yalnız qeyri-kommersiya məqsədləri üçün istifadə edə, paylaşa və uyğunlaşdıra bilərsiniz, törəmə işlər isə eyni lisenziya ilə paylaşılmalıdır. Tədqiqat, tədris və şəxsi layihələr bu şərtlərə uyğundur. Kommersiya istifadəsi üçün bizimlə əlaqə saxlayın.
Bundan sonra
Model və onun kartı Hugging Face-dədir, ətraflı məlumat isə layihə səhifəsində toplanıb. Məhsulunuza Azərbaycan dilində maşın tərcüməsi, mətnlərin təsnifatı, axtarış və ya başqa dil tapşırığı daxil etmək lazımdırsa, təbii dilin emalı xidmətimizə baxın və ya tapşırığınızı təsvir edin.
- Hugging Face
- mT5
- Machine Translation
- Azerbaijani