BERTurk — Türkçe Duygu Analizi

dbmdz/bert-base-turkish-cased modeli üzerine Türkçe ürün yorumları ile fine-tune edilmiş bir duygu analizi (sentiment analysis) modelidir.

Model Detayları

Özellik Değer
Temel model dbmdz/bert-base-turkish-cased
Görev İkili sınıflandırma (Pozitif / Negatif)
Dil Türkçe
Doğruluk %96.12
F1 Skoru 0.9598
Parametre ~110M
Max token 128

Kullanım

Transformers Pipeline

from transformers import pipeline

sentiment = pipeline(
    "text-classification",
    model="DexopT/BERTURK"
)

sonuc = sentiment("Ürün gerçekten harika, çok memnun kaldım!")
print(sonuc)
# [{'label': 'positive', 'score': 0.9934}]

Manuel Kullanım

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

model_name = "DexopT/BERTURK"
tokenizer  = AutoTokenizer.from_pretrained(model_name)
model      = AutoModelForSequenceClassification.from_pretrained(model_name)
model.eval()

metin = "Berbat bir ürün, para israfı."

inputs = tokenizer(metin, return_tensors="pt", truncation=True, max_length=128)

with torch.no_grad():
    logits = model(**inputs).logits

probs    = torch.softmax(logits, dim=-1)[0]
label_id = probs.argmax().item()
label    = model.config.id2label[label_id]
guven    = probs[label_id].item()

print(f"Sonuç    : {label}")
print(f"Güven    : {guven:.4f}")
print(f"Pozitif  : {probs[1].item():.4f}")
print(f"Negatif  : {probs[0].item():.4f}")

Toplu Tahmin

yorumlar = [
    "Harika ürün, kesinlikle tavsiye ederim!",
    "Çok kötü, hiç memnun kalmadım.",
    "Fiyatına göre gayet iyi.",
    "Kargo geç geldi ama ürün kaliteliydi.",
]

for yorum in yorumlar:
    r = sentiment(yorum, truncation=True, max_length=128)[0]
    print(f"[{r['label'].upper():8}] {r['score']:.2%}{yorum[:50]}")

Eğitim

Veri Seti

Turkish Product Reviews veri seti kullanılmıştır.

  • Toplam: ~235.000 Türkçe e-ticaret yorumu
  • Eğitim: 18.000 örnek
  • Test: 2.000 örnek
  • Etiketler: positive (1), negative (0)

Hiperparametreler

TrainingArguments(
    num_train_epochs       = 3,
    per_device_train_batch_size = 32,
    per_device_eval_batch_size  = 64,
    learning_rate          = 2e-5,
    warmup_steps           = 200,
    weight_decay           = 0.01,
    fp16                   = True,       # T4 GPU
    evaluation_strategy    = "epoch",
    load_best_model_at_end = True,
    metric_for_best_model  = "f1",
)

Eğitim Sonuçları

Epoch Train Loss Val Loss Doğruluk F1
1 0.1303 0.1664 95.40% 94.56%
2 0.1001 0.1555 95.80% 95.63%
3 0.0812 0.1489 96.12% 95.98%

Eğitim Ortamı

  • GPU: NVIDIA T4 (Google Colab)
  • Süre: ~20 dakika
  • Framework: PyTorch + Hugging Face Transformers

Etiketler

ID Label Açıklama
0 negative Negatif yorum
1 positive Pozitif yorum

Sınırlılıklar

  • Maksimum token uzunluğu 128 olarak ayarlanmıştır, uzun metinler kırpılır.
  • Model yalnızca Türkçe üzerinde eğitilmiştir; diğer dillerde güvenilir sonuç vermez.
  • Nötr veya karma duygular içeren yorumlarda doğruluk düşebilir.
  • Ürün yorumları dışındaki metin türleri (haber, akademik metin vb.) için optimize edilmemiştir.

Lisans

MIT License

Atıf

@misc{berturk2025,
  author    = {Yılmaz KARAAĞAÇ (DexopT)},
  title     = {BERTurk: Turkish Sentiment Analysis},
  year      = {2026},
  publisher = {Hugging Face},
  url       = {https://huggingface.co/DexopT/BERTURK}
}

Yılmaz KARAAĞAÇ · GitHub

Downloads last month
41
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for DexopT/BERTURK

Finetuned
(156)
this model

Dataset used to train DexopT/BERTURK

Evaluation results