Instructions to use BurakshDev/berturk-turkish-emotion-8class with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use BurakshDev/berturk-turkish-emotion-8class with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="BurakshDev/berturk-turkish-emotion-8class")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("BurakshDev/berturk-turkish-emotion-8class") model = AutoModelForSequenceClassification.from_pretrained("BurakshDev/berturk-turkish-emotion-8class", device_map="auto") - Notebooks
- Google Colab
- Kaggle
BERTurk — Türkçe 8 sınıflı duygu sınıflandırma
Türkçe metinleri 8 duyguya ayıran, dbmdz/bert-base-turkish-cased
üzerinde fine-tune edilmiş model.
A BERTurk model fine-tuned to classify Turkish text into 8 emotions. Test macro-F1 0.811 on 8,875 human-labelled examples.
Sınıflar: mutluluk · üzüntü · öfke · korku · şaşkınlık · tiksinti · sevgi · nötr
Kod, veri seti derleme, ablation ve istatistik testleri: GitHub — Turkish-Text-Emotion-Measurement-Artificial-Intelligence
Kullanım
from transformers import pipeline
clf = pipeline("text-classification", model="BurakshDev/berturk-turkish-emotion-8class", top_k=None)
print(clf("Bugün sınavdan yüksek not aldım, çok mutluyum!"))
Kalibre olasılıklar (isteğe bağlı)
Olasılıklar validation seti üzerinde temperature scaling ile kalibre edildi (temperature.json, T ≈ 1.124;
test ECE 0.034 → 0.014). Kalibre olasılık için logit'leri T'ye bölüp softmax alın:
import json, torch
from huggingface_hub import hf_hub_download
from transformers import AutoTokenizer, AutoModelForSequenceClassification
repo = "BurakshDev/berturk-turkish-emotion-8class"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForSequenceClassification.from_pretrained(repo).eval()
T = json.load(open(hf_hub_download(repo, "temperature.json")))["temperature"]
inputs = tok("Yıllardır görmediğim arkadaşımı karşımda görünce donup kaldım.",
return_tensors="pt", truncation=True, max_length=128)
with torch.no_grad():
probs = torch.softmax(model(**inputs).logits / T, dim=-1)[0]
for i, p in sorted(enumerate(probs.tolist()), key=lambda x: -x[1]):
print(f"{model.config.id2label[i]:10s} {p:.3f}")
Sonuçlar
Test seti: 8.875 insan etiketli örnek (yalnızca gold veri). Bu repodaki model seed 42 çalışmasıdır; model seçimi yalnızca validation macro-F1 ile yapıldı, test en sonda bir kez değerlendirildi.
| Metrik | Değer |
|---|---|
| Macro-F1 | 0.811 |
| Weighted-F1 | 0.816 |
| Accuracy | 0.816 |
3 seed ortalamasında BERTurk 0.812 ± 0.001 macro-F1 aldı; aynı veri ve bütçeyle XLM-RoBERTa-base 0.797, mBERT 0.780, TF-IDF + Logistic Regression 0.767 (farkların hepsi anlamlı, paired bootstrap + Holm, p < 0.001).
Sınıf bazlı (test)
| Sınıf | Precision | Recall | F1 | n |
|---|---|---|---|---|
| mutluluk | 0.855 | 0.893 | 0.873 | 2.191 |
| üzüntü | 0.852 | 0.845 | 0.848 | 1.101 |
| öfke | 0.749 | 0.760 | 0.754 | 1.422 |
| korku | 0.915 | 0.873 | 0.893 | 762 |
| şaşkınlık | 0.851 | 0.865 | 0.858 | 654 |
| tiksinti | 0.941 | 0.846 | 0.891 | 551 |
| sevgi | 0.628 | 0.639 | 0.634 | 299 |
| nötr | 0.744 | 0.730 | 0.737 | 1.895 |
Kaynak bazlı (tek sayı yanıltıcıdır)
| Kaynak | n | Macro-F1 |
|---|---|---|
| GoEmotions TR (İngilizceden makine çevirisi, Reddit) | 4.775 | 0.612 |
| TREMO — 2/3 oy uzlaşısı | 855 | 0.798 |
| TREMO — 3/3 oy uzlaşısı | 2.660 | 0.961 |
| Türkçe tweet | 585 | 0.981 |
TREMO-consensus ve tweet örnekleri çoğunlukla duyguyu doğrudan adlandırır ("korkarım", "şaşırdım"); kelime tabanlı
TF-IDF bile bu kaynaklarda 0.93-0.97 alır. Gerçekçi performans GoEmotions (0.61) ve TREMO-majority (0.80)
satırlarıdır.
Eğitim
| Base model | dbmdz/bert-base-turkish-cased |
| Eğitim verisi | 41.465 gold örnek (TREMO, Türkçe tweet duygu, GoEmotions TR) |
| max_length | 128 |
| Batch size | 32 |
| Learning rate | 2e-5 (warmup %10, weight decay 0.01) |
| Epoch | en fazla 4, early stopping (patience 2); en iyi epoch 2 |
| Loss | ağırlıksız cross-entropy |
| Donanım | NVIDIA RTX 5070 Ti Laptop GPU, ~4 dakika |
val ve test yalnızca gold veriden oluşur; yakın kopyalar MinHash-LSH ile gruplanıp aynı split'e konur. Weak (kural tabanlı) ve silver veri denendi ama kullanılmadı: weak veri etkisiz (+0.001), silver veri zararlı (−0.018).
Sınırlamalar
- nötr ve sevgi sınıflarının eğitim örneklerinin tamamı makine çevirisidir (GoEmotions). Bu iki sınıf en zayıf sınıflardır ve ana dil metinlerdeki performansları doğrudan ölçülemez.
- Alanlar: kişisel anı cümleleri (TREMO), Reddit yorumları (çeviri), tweet'ler. Ürün yorumu, haber veya konuşma dili gibi başka alanlarda performans farklı olabilir.
- Tek etiketli sınıflandırmadır; karışık duygular tek sınıfa indirgenir.
- En sık karışıklık öfke ↔ nötr ve nötr → mutluluk.
Lisans
Model CC BY-NC 4.0 ile yayınlanır: yalnızca ticari olmayan kullanım. Eğitim verisindeki TREMO yalnızca ticari olmayan amaçlarla kullanılabildiği için ondan türetilen bu model de aynı kısıtı taşır. Proje kodu GitHub'da MIT lisanslıdır.
Veri kaynakları: TREMO (Tocoglu & Alpkocak, 2018), Türkçe tweet duygu veri seti (Güven vd., 2019), GoEmotions (Demszky vd., 2020; Türkçe makine çevirisi).
- Downloads last month
- 22
Model tree for BurakshDev/berturk-turkish-emotion-8class
Base model
dbmdz/bert-base-turkish-casedEvaluation results
- Macro F1 (test)self-reported0.811
- Accuracy (test)self-reported0.816