Skip to content

Educational NLP project: Transformer-based topic classifier (coding vs travel) built with PyTorch and a handcrafted dataset.

Notifications You must be signed in to change notification settings

lutfiozark/Transformer-Topic-Classifier-Coding-vs-Travel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Basit Transformer Cümle Sınıflandırıcı

Bu depo, çok basit ve tamamen eğitim amaçlı bir PyTorch Transformer denemesini içerir. Amaç, elle oluşturulmuş küçük bir cümle veri seti üzerinde Encoder tabanlı bir modelin uçtan uca nasıl kurulacağını göstermek; gerçek ürün senaryosu hedeflenmemiştir.

Genel Bakış

  • Tek dosya: deneme_model.py veri üretimi, ön işleme, model tanımı, eğitim ve değerlendirmeyi aynı skripte toplar.
  • Veri: Kodlama temalı ~200 cümle ile seyahat temalı ~120 cümlenin manuel olarak etiketlenmiş hâli kullanılır; veri sentetiktir ve gerçek dünyayı temsil etmez.
  • Model: PyTorch nn.Transformer bileşeni encoder gibi çalışacak biçimde konfigüre edilir, ardından tam bağlantılı katman ve sigmoid çıkışla ikili sınıflandırma yapılır.
  • Düzenlileştirme: Dropout katmanları ile Adam optimizer’ında weight_decay kullanılarak aşırı uyum azaltılmaya çalışılır.

Kurulum

pip install torch scikit-learn

Kod Python 3.11 üzerinde test edilmiştir.

Çalıştırma

python deneme_model.py

Çalışma sırası:

  1. Cümleler tokenize edilir, sabit uzunlukta tensörlere dönüştürülür.
  2. %80 eğitim / %20 test split’i uygulanır.
  3. Model 100 epoch boyunca eğitilir, her epokta loss yazdırılır.
  4. Eğitim bitince train ve test doğrulukları raporlanır.

Son Ölçümler

Veri Seti Doğruluk
Eğitim 0.9858
Test 0.8750

Tek bir train/test bölünmesine dayalıdır; veri küçük olduğu için farklı çalıştırmalarda kayda değer dalgalanmalar beklenmelidir.

Eksikler ve Yol Haritası

  1. Veri hacmi: Sentetik veri çok kısıtlı; gerçek kullanım için yeni cümleler eklenmeli veya veri artırma (parafraz, kelime çıkarma/ekleme) yapılmalı.
  2. Ön işleme: proprocess fonksiyonu dönüş değerini kullanmadığı için lower() ve noktalama temizliği tam uygulanmıyor; ayrıca stop-word, lemma vb. işlemler eksik.
  3. Model mimarisi: nn.Transformer encoder gibi kullanılıyor fakat mask’ler ve padding dikkate alınmıyor. nn.TransformerEncoder, hazır dil modelleri veya daha hafif RNN/CNN mimarileri denenebilir.
  4. Değerlendirme: Sadece accuracy ölçülüyor. K-katlı doğrulama, F1/precision/recall ve karışıklık matrisi ile daha güvenilir raporlar hazırlanmalı.
  5. Model yaşam döngüsü: Ağırlık kaydetme, inference script’i veya basit servis katmanı bulunmuyor.
  6. Hiperparametre yönetimi: Parametreler kod içine gömülü; CLI argümanları, YAML/JSON konfigürasyonu ve erken durdurma gibi kontroller eklenebilir.

Durum

Repo “örnek/öğrenme projesi” statüsündedir; üretim ortamında kullanılması tavsiye edilmez. Katkıda bulunmak isterseniz README’deki yol haritası maddeleri iyi bir başlangıç noktasıdır.

About

Educational NLP project: Transformer-based topic classifier (coding vs travel) built with PyTorch and a handcrafted dataset.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages