Instructions to use efeyol11/bert-turkish-sentiment with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use efeyol11/bert-turkish-sentiment with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="efeyol11/bert-turkish-sentiment")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("efeyol11/bert-turkish-sentiment") model = AutoModelForSequenceClassification.from_pretrained("efeyol11/bert-turkish-sentiment") - Notebooks
- Google Colab
- Kaggle
bert-turkish-sentiment
Türkçe metinler için 3-sınıflı duygu analizi modeli (negative / neutral / positive). Haber başlık + özet metinleri üzerinde duygu sınıflandırması yapmak üzere fine-tune edilmiştir.
Model Details
Model Description
Bu model, Türkçe haber metinlerinin duygu durumunu otomatik olarak sınıflandıran bir BERT tabanlı sequence classification modelidir. Bir B-projesi kapsamında haber takip sistemi için geliştirilmiş olup, GitHub Actions üzerinde haftalık otomatik retrain pipeline'ı ile sürekli güncellenmektedir.
- Developed by: efeyol11
- Model type: BertForSequenceClassification
- Language(s) (NLP): Türkçe (tr)
- License: Apache 2.0
- Finetuned from model: savasy/bert-base-turkish-sentiment-cased
Model Sources
- Repository: efeyol11/bert-turkish-sentiment
Label Mapping
LABEL2ID = {"negative": 0, "neutral": 1, "positive": 2}
ID2LABEL = {0: "negative", 1: "neutral", 2: "positive"}
Eğitim verisindeki Türkçe ham etiketler (negatif, notr, nötr, pozitif) bu üç sınıfa map edilmektedir.
Uses
Direct Use
Model, kısa-orta uzunluktaki Türkçe metinlerin (özellikle haber başlık + kısa özet kombinasyonları) genel duygu polaritesini sınıflandırmak için doğrudan kullanılabilir.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
tokenizer = AutoTokenizer.from_pretrained("efeyol11/bert-turkish-sentiment")
model = AutoModelForSequenceClassification.from_pretrained("efeyol11/bert-turkish-sentiment")
text = "Türkiye ekonomisi son çeyrekte beklentilerin üzerinde büyüme kaydetti."
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding="max_length", max_length=128)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=-1)
pred_id = probs.argmax(dim=-1).item()
print(model.config.id2label[pred_id], probs[0, pred_id].item())
Downstream Use
- Türkçe haber agregasyon platformlarında otomatik etiketleme
- Sosyal medya / yorum metinlerinin duygu izlenmesi
- Domain-specific bir göreve aktarım için ek fine-tuning (transfer learning) için başlangıç noktası
Out-of-Scope Use
- Aspect-based sentiment analysis (model genel duygu polaritesi tahmin eder, belirli bir konuya/yönüne ayrıştırma yapmaz)
- 128 token'dan çok daha uzun metinlerin tek seferde sınıflandırılması — uzun metinler kesilecek ve bilgi kaybı oluşacaktır
- Türkçe dışındaki diller
- Sarkazm, ironi veya açıkça ifade edilmemiş duygu içeren metinler — bu durumlarda model güvenilirliği düşer
Bias, Risks, and Limitations
- Domain mismatch: Eğitim verisi tek bir genel-amaçlı Türkçe duygu corpus'u (
winvoker/turkish-sentiment-analysis-dataset); haber domain'ine spesifik augmentation yalnızca güveni ≥0.85 olan ~74 pseudo-label örnekle yapılmıştır. Çok niş haber konularında performans düşebilir. - Class imbalance / pseudo-labeling bias: Haftalık retrain'de model kendi yüksek-güvenli tahminleriyle augment edildiği için zaman içinde mevcut bias'lar pekişebilir (confirmation bias riski).
- Sequence length:
max_length=128ile eğitildiği için uzun haber özetleri kesilir. - Subsampling: Retrain script'inde kullanılan
--max-orig-samples 8000parametresi class-stratified değildir; minority sınıf örnekleri yetersiz kalabilir. - Sosyal bias: Türkçe duygu corpus'u demografik ya da konu temelli bias barındırabilir; bu bias modele aktarılmış olabilir (formal bir bias audit yapılmamıştır).
Recommendations
Üretim ortamında bu modeli kullanırken:
- Özellikle hassas / yüksek riskli kararlar için tek başına model çıktısına dayanılmamalıdır.
- Domain'e özgü değerlendirme seti üzerinde periyodik performans kontrolü önerilir.
- Pseudo-label augmentation döngüsünün uzun vadeli etkisi izlenmelidir (drift monitoring).
How to Get Started with the Model
from transformers import pipeline
clf = pipeline(
"text-classification",
model="efeyol11/bert-turkish-sentiment",
tokenizer="efeyol11/bert-turkish-sentiment",
)
clf("Borsa İstanbul yeni rekor kırdı, yatırımcılar memnun.")
# [{'label': 'positive', 'score': 0.99...}]
Training Details
Training Data
- Dataset: winvoker/turkish-sentiment-analysis-dataset
- Language: Türkçe
- Splits:
- Train: 440,679 örnek
- Test/Validation: 48,965 örnek
- Augmentation (weekly retrain): PostgreSQL'den çekilen, model güveni ≥ 0.85 olan haber pseudo-label'leri (max 50,000; en son run'da 74 örnek dahil edilmiştir).
Preprocessing
- Tokenizer:
BertTokenizer,do_lower_case=True truncation=True,padding="max_length",max_length=128- Haber örneklerinde input formatı:
f"{cleaned_title}. {cleaned_summary}" - 20 karakterden kısa metinler filtrelenir
- Train set'i deterministik shuffle (
seed=42)
Training Hyperparameters
Aşağıdaki konfigürasyon, Hub'a push edilen modeli üreten weekly retrain pipeline'ına aittir:
| Parametre | Değer |
|---|---|
| Epochs | 2 |
| Per-device train batch size | 32 |
| Per-device eval batch size | 32 |
| Learning rate | 1e-5 |
| Weight decay | 0.01 |
| LR scheduler | Linear with warmup (HF default) |
| Optimizer | AdamW (HF default) |
| Warmup steps | 0 |
| Precision | fp32 |
| Eval strategy | epoch |
| Save strategy | epoch |
| Best metric | f1_macro (load_best_model_at_end=True) |
| Seed | 42 (dataset shuffle) |
İlk full fine-tune (Apple MPS üzerinde): epochs=3, batch_size=16, lr=2e-5 (resume'da 5e-6'ya düşürüldü), weight_decay=0.01, max_length=128, fp32. Yaklaşık 1 epoch = 87 dakika.
Speeds, Sizes, Times
- Hardware: GitHub Actions
ubuntu-latest(CPU-only, no GPU/accelerator) - Training time (last successful run): ~4 saat (8K original sample subset üzerinde)
Evaluation
Testing Data, Factors & Metrics
- Testing Data:
winvoker/turkish-sentiment-analysis-datasettest split (48,965 örnek) - Metrics:
accuracy,f1_macro,f1_weighted— sklearnf1_scoreile hesaplanır.
Results
Fine-tuned model
| Metric | Değer |
|---|---|
| eval_loss | 0.0959 |
| eval_accuracy | 0.9728 |
| eval_f1_macro | 0.9535 |
| eval_f1_weighted | 0.9726 |
Baseline (savasy/bert-base-turkish-sentiment-cased, no fine-tuning on this label space)
| Metric | Değer |
|---|---|
| accuracy | 0.2383 |
| f1_macro | 0.2018 |
| f1_weighted | 0.2339 |
Before / After
| Metric | Baseline | Fine-tuned | Δ |
|---|---|---|---|
| accuracy | 0.2383 | 0.9728 | +0.7345 |
| f1_macro | 0.2018 | 0.9535 | +0.7517 |
| f1_weighted | 0.2339 | 0.9726 | +0.7387 |
Not: Baseline model farklı bir label space ve farklı bir veri dağılımı üzerinde eğitildiği için doğrudan karşılaştırma değildir; bu tablo bu görev/etiket şeması için fine-tuning'in net katkısını göstermek amaçlıdır.
Quality Gate
Retrain pipeline'ı yalnızca f1_macro ≥ 0.80 olan modelleri Hub'a push eder.
Technical Specifications
Model Architecture and Objective
- Architecture:
BertForSequenceClassification - Hidden layers: 12
- Attention heads: 12
- Hidden size: 768
- Intermediate size: 3072
- Max position embeddings: 512
- Vocab size: 32,000
- Problem type:
single_label_classification - Dtype: float32
Compute Infrastructure
Hardware
GitHub Actions ubuntu-latest runner (CPU-only).
Software
transformers >= 4.40.0torch >= 2.2.0accelerate >= 1.1.0datasets >= 2.19.0scikit-learn >= 1.4.0mlflow >= 2.12.0sentence-transformers >= 3.0.0sentencepiece >= 0.2.0- Python
>= 3.10(CI: 3.12)
Model Card Authors
efeyol11
Model Card Contact
HuggingFace üzerinden: efeyol11
- Downloads last month
- 554
Model tree for efeyol11/bert-turkish-sentiment
Base model
savasy/bert-base-turkish-sentiment-casedDataset used to train efeyol11/bert-turkish-sentiment
Evaluation results
- accuracy on winvoker/turkish-sentiment-analysis-datasettest set self-reported0.973
- F1 (macro) on winvoker/turkish-sentiment-analysis-datasettest set self-reported0.954
- F1 (weighted) on winvoker/turkish-sentiment-analysis-datasettest set self-reported0.973