--- language: - tr - en license: apache-2.0 base_model: google/mt5-base pipeline_tag: summarization tags: - summarization - summary - mt5 - medical - tr - transformers datasets: - umutertugrul/turkish-hospital-medical-articles metrics: - rouge - sacrebleu - bertscore --- # MediSum mT5-Base (TR Medical Summarization) Bu model, **google/mt5-base** üzerinde **Türkçe tıbbi içeriklerin özetlenmesi** amacıyla fine-tune edilmiş bir Seq2Seq (encoder-decoder) modelidir. Hedef kullanım senaryosu, hastane ve sağlık sağlayıcılarının bilgilendirici makalelerinden **kısa, anlaşılır özetler** üretmektir. > Uyarı: Modelin ürettiği çıktılar tıbbi tavsiye değildir. Klinik karar verme amacıyla kullanılmamalıdır. ## Model Özeti - **Mimari:** mT5 (Text-to-Text Transformer), encoder-decoder - **Temel model:** `google/mt5-base` (yaklaşık **580M** parametre) - **Görev:** Summarization (metin özetleme) - **Diller:** - Fine-tune verisi ağırlıklı olarak Türkçe tıbbi metinlerdir. - mT5 çok dilli olduğu için İngilizce girdilerde de çalışabilir; ancak bu checkpoint Türkçe tıbbi alanda optimize edilmiştir. ## Eğitim Verisi Bu checkpoint, Hugging Face üzerinde yer alan **Türkçe tıbbi makale korpusu** ile ilişkilidir: - **Dataset:** `umutertugrul/turkish-hospital-medical-articles` - **İçerik:** Türkiye’deki **14 resmi hastane ve sağlık sağlayıcı web sitesinden** derlenmiş Türkçe tıbbi makaleler. - **Lisans:** **CC BY 4.0** ### Bu eğitim çalışmasındaki pratik veri hazırlığı (pipeline özeti) Eğitim notebook’unda veri, birleştirilmiş CSV üzerinden aşağıdaki mantıkla hazırlanmıştır: - Gerekli kolonlar: `text`, `summary`, `status` - Filtre: `status == "success"` - Temizlik: `text` ve `summary` boş olanlar atılır - Minimum uzunluk filtreleri: - `text` en az 50 karakter - `summary` en az 10 karakter - Bölünme (seed: 42): - Test: %20 - Train: %72 - Validation: %8 (train’in %10’u) > Not: Dataset sayfası ham makale korpusunu tanımlar. Bu fine-tune çalışmasında ayrıca özet hedefleri (summary) bulunan bir eğitim seti kullanılmıştır. ## Ön İşleme ve Prompt Formatı Model girdileri eğitimde şu şablonla hazırlanmıştır: - Opsiyonel prefix prompt: **`"Özetle: "`** - Maksimum kaynak uzunluğu: `MAX_SOURCE_LEN = 768` - Maksimum hedef uzunluğu: `MAX_TARGET_LEN = 250` - Tokenization: - Kaynak metinler truncation ile kesilir - Padding eğitim tarafında `DataCollatorForSeq2Seq` ile dinamik yapılır ## Eğitim (Fine-tuning) Detayları Eğitim ayarları (notebook’tan): - Epoch: **8** - Learning rate: **2e-5** - Batch size: - Train: `per_device_train_batch_size = 4` - Eval: `per_device_eval_batch_size = 4` - Gradient accumulation: **2** (etkin batch size yaklaşık 8) - Warmup ratio: **0.06** - Weight decay: **0.01** - Evaluation strategy: **epoch** - Save strategy: **epoch**, `save_total_limit = 1` - Best model seçimi: - `load_best_model_at_end = True` - `metric_for_best_model = rougeL_f1` - Early stopping: `patience = 3` - Mixed precision: `fp16=False`, `bf16=False` ### Generation (Özet üretim) Ayarları - `num_beams = 4` - `min_length = 30` - `max_length = 250` - `no_repeat_ngram_size = 3` - `early_stopping = True` ## Değerlendirme ### Kullanılan metrikler - Eğitim sırasında: ROUGE-1 / ROUGE-2 / ROUGE-L (F1) - Test aşamasında ayrıca: - sacreBLEU (sentence ve corpus) - BERTScore (F1, `lang="tr"`) ### Test seti sonuçları (notebook çıktısı) - ROUGE-1 F1: **0.4736** - ROUGE-2 F1: **0.2206** - ROUGE-L F1: **0.2801** - Avg sentence BLEU: **11.5804** - Corpus BLEU: **12.0788** - Avg BERTScore F1: **0.6624** > Bu skorlar, kullanılan veri bölünmesi ve eğitim konfigürasyonu ile üretilmiştir. Farklı veri temizlik kuralları, maksimum uzunluklar ve generation ayarları skorları etkileyebilir. ## Kullanım ### Transformers ile hızlı kullanım ```python from transformers import AutoTokenizer, AutoModelForSeq2SeqLM model_id = "YOUR_HF_USERNAME/YOUR_MODEL_REPO" # örn: nebiberke/medisum-mt5-base tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForSeq2SeqLM.from_pretrained(model_id) text = "..." # uzun tıbbi makale metni prompted = "Özetle: " + text inputs = tokenizer( prompted, return_tensors="pt", truncation=True, max_length=768 ) outputs = model.generate( **inputs, num_beams=4, min_length=30, max_length=250, no_repeat_ngram_size=3, early_stopping=True ) summary = tokenizer.decode(outputs[0], skip_special_tokens=True) print(summary) ``` ### pipeline ile kullanım ```python from transformers import pipeline summarizer = pipeline( "summarization", model="YOUR_HF_USERNAME/YOUR_MODEL_REPO", tokenizer="YOUR_HF_USERNAME/YOUR_MODEL_REPO" ) text = "..." result = summarizer("Özetle: " + text, max_length=250, min_length=30, num_beams=4) print(result[0]["summary_text"]) ``` ## Amaçlanan Kullanım - Türkçe tıbbi bilgilendirme metinlerinin özetlenmesi - Sağlık içeriklerinde hızlı gözden geçirme, içerik keşfi ve indeksleme - Hastane blog içeriklerinden kısa açıklamalar üretme ### Kullanım Dışı Senaryolar - Tanı koyma, tedavi önerme, reçeteleme - Acil durum yönlendirmesi - Klinik karar destek çıktısı olarak doğrudan kullanım ## Sınırlılıklar ve Riskler - **Halüsinasyon riski:** Model metinde olmayan ayrıntıları uydurabilir. - **Truncation:** 768 token üstü içerikler kesilir, önemli bilgi kaybı olabilir. - **Alan dışı metinler:** Medikal alan dışındaki metinlerde kalite düşebilir. - **Dil karışımı:** Çok dilli girdilerde özet dilinin tutarlılığı her zaman garanti değildir. ## Etik Hususlar - Çıktılar yalnızca bilgilendirme amaçlı ele alınmalıdır. - Sağlıkla ilgili kritik kararlarda uzman görüşü gereklidir. - Kişisel veri içeren metinlerle kullanımda KVKK ve ilgili politikalar gözetilmelidir. ## Lisans - Temel model `google/mt5-base`: **Apache-2.0** - Dataset `umutertugrul/turkish-hospital-medical-articles`: **CC BY 4.0**