SentiTR-LLM, Türkçe duygu analizi (Sentiment Analysis) alanında SOTA (State-of-the-Art) performansını hedefleyen modüler bir Python projesidir. Proje, 2025 tarihli "Towards Better Sentiment Analysis in the Turkish Language" makalesinin sonuçlarını iyileştirmek amacıyla geliştirilmiştir.
Hem geleneksel Encoder tabanlı modelleri (ELECTRA, BERT) hem de modern Büyük Dil Modellerini (LLM - QLoRA ile) destekleyen hibrit bir mimariye sahiptir.
SentiTR-LLM, FSMTSAD veri seti üzerinde yapılan testlerde (Encoder: dbmdz/bert-base-turkish-cased) aşağıdaki sonuçları elde etmiştir:
| Metrik | SentiTR-LLM | Hedef (SOTA) | Durum |
|---|---|---|---|
| Accuracy | %90.61 | %91.0 | 🟡 Yakın |
| F1 | %90.60 | %90.64 | 🟡 Çok Yakın |
Not: Bu sonuçlar tek bir epoch ve tek bir model (Encoder) ile elde edilmiştir. Ensemble ve LLM fine-tuning ile skorların artması beklenmektedir.
SentiTR-LLM/
├── data/ # Veri indirme ve ön işleme (FSMTSAD)
├── models/ # Encoder ve LLM model tanımları (PEFT/BitsAndBytes)
├── training/ # Özelleştirilmiş Hugging Face Trainer yapısı
├── evaluation/ # F1, Accuracy, Precision, Recall metrikleri
├── visualization/ # Grafikler, SHAP, Attention Map ve Hata Analizi
├── utils/ # Türkçe normalizasyon ve loglama araçları
├── ensemble.py # Model birleştirme (Ensemble) mantığı
└── main.py # Tüm sistemi yöneten CLI giriş noktası
Proje Python 3.10+ ve PyTorch 2.0+ gerektirir. Bağımlılık çakışmalarını önlemek için sanal ortam (virtual environment) kullanılması şiddetle önerilir.
Repoyu klonlayın:
git clone https://github.com/username/SentiTR-LLM.git
cd SentiTR-LLM
Sanal Ortam Oluşturun ve Aktifleştirin:
python3 -m venv venv
source venv/bin/activate # Mac/Linux
# venv\Scripts\activate # Windows
Bağımlılıkları yükleyin:
pip install -r requirements.txt
Sistem, veri indirmeden eğitime kadar tüm süreçleri main.py üzerinden yönetir.
Veri seti ilk çalıştırmada otomatik olarak indirilir. Manuel tetiklemek için:
python3 -m data.downloader
Standart BERT/ELECTRA modellerini eğitmek ve analiz çıktılarını üretmek için --visualize bayrağını kullanın:
python3 main.py --mode train \
--model_type encoder \
--model_name dbmdz/bert-base-turkish-cased \
--epochs 3 \
--batch_size 16 \
--visualize
Bu işlem outputs/ klasörüne şunları kaydeder:
benchmark_comparison.pngconfusion_matrix.pngshap_explanation.html (Modelin kararlarını açıklayan interaktif SHAP grafiği)error_analysis_table.pngTrendyol-LLM veya benzeri modelleri 4-bit QLoRA ile eğitmek için:
python3 main.py --mode train \
--model_type llm \
--model_name Trendyol/Trendyol-LLM-7b-chat-v1.0 \
--use_4bit \
--batch_size 4 \
--visualize
Projenin temel amacı, FSMTSAD veri setinde makalede belirtilen %90.64 F1 skorunu aşmaktır.
[!IMPORTANT] En iyi sonuçlar genellikle Encoder ve LLM modellerinin Ensemble (topluluk) yöntemiyle birleştirilmesiyle elde edilir.
ensemble.pydosyası bu mantığı içerir.
1 commits
HTML
96.5%
Python
3.5%
SentiTR-LLM, Türkçe duygu analizi (Sentiment Analysis) alanında SOTA (State-of-the-Art) performansını hedefleyen modüler bir Python projesidir. Proje, 2025 tarihli "Towards Better Sentiment Analysis in the Turkish Language" makalesinin sonuçlarını iyileştirmek amacıyla geliştirilmiştir.
Hem geleneksel Encoder tabanlı modelleri (ELECTRA, BERT) hem de modern Büyük Dil Modellerini (LLM - QLoRA ile) destekleyen hibrit bir mimariye sahiptir.
SentiTR-LLM, FSMTSAD veri seti üzerinde yapılan testlerde (Encoder: dbmdz/bert-base-turkish-cased) aşağıdaki sonuçları elde etmiştir:
| Metrik | SentiTR-LLM | Hedef (SOTA) | Durum |
|---|---|---|---|
| Accuracy | %90.61 | %91.0 | 🟡 Yakın |
| F1 | %90.60 | %90.64 | 🟡 Çok Yakın |
Not: Bu sonuçlar tek bir epoch ve tek bir model (Encoder) ile elde edilmiştir. Ensemble ve LLM fine-tuning ile skorların artması beklenmektedir.
SentiTR-LLM/
├── data/ # Veri indirme ve ön işleme (FSMTSAD)
├── models/ # Encoder ve LLM model tanımları (PEFT/BitsAndBytes)
├── training/ # Özelleştirilmiş Hugging Face Trainer yapısı
├── evaluation/ # F1, Accuracy, Precision, Recall metrikleri
├── visualization/ # Grafikler, SHAP, Attention Map ve Hata Analizi
├── utils/ # Türkçe normalizasyon ve loglama araçları
├── ensemble.py # Model birleştirme (Ensemble) mantığı
└── main.py # Tüm sistemi yöneten CLI giriş noktası
Proje Python 3.10+ ve PyTorch 2.0+ gerektirir. Bağımlılık çakışmalarını önlemek için sanal ortam (virtual environment) kullanılması şiddetle önerilir.
Repoyu klonlayın:
git clone https://github.com/username/SentiTR-LLM.git
cd SentiTR-LLM
Sanal Ortam Oluşturun ve Aktifleştirin:
python3 -m venv venv
source venv/bin/activate # Mac/Linux
# venv\Scripts\activate # Windows
Bağımlılıkları yükleyin:
pip install -r requirements.txt
Sistem, veri indirmeden eğitime kadar tüm süreçleri main.py üzerinden yönetir.
Veri seti ilk çalıştırmada otomatik olarak indirilir. Manuel tetiklemek için:
python3 -m data.downloader
Standart BERT/ELECTRA modellerini eğitmek ve analiz çıktılarını üretmek için --visualize bayrağını kullanın:
python3 main.py --mode train \
--model_type encoder \
--model_name dbmdz/bert-base-turkish-cased \
--epochs 3 \
--batch_size 16 \
--visualize
Bu işlem outputs/ klasörüne şunları kaydeder:
benchmark_comparison.pngconfusion_matrix.pngshap_explanation.html (Modelin kararlarını açıklayan interaktif SHAP grafiği)error_analysis_table.pngTrendyol-LLM veya benzeri modelleri 4-bit QLoRA ile eğitmek için:
python3 main.py --mode train \
--model_type llm \
--model_name Trendyol/Trendyol-LLM-7b-chat-v1.0 \
--use_4bit \
--batch_size 4 \
--visualize
Projenin temel amacı, FSMTSAD veri setinde makalede belirtilen %90.64 F1 skorunu aşmaktır.
[!IMPORTANT] En iyi sonuçlar genellikle Encoder ve LLM modellerinin Ensemble (topluluk) yöntemiyle birleştirilmesiyle elde edilir.
ensemble.pydosyası bu mantığı içerir.
1 commits
HTML
96.5%
Python
3.5%