BERTURK / README.md
DexopT's picture
Update README.md
26138cb verified
---
language:
- tr
license: mit
tags:
- bert
- text-classification
- sentiment-analysis
- turkish
- pytorch
- transformers
datasets:
- turkish_product_reviews
base_model: dbmdz/bert-base-turkish-cased
model-index:
- name: DexopT/BERTURK
results:
- task:
type: text-classification
name: Sentiment Analysis
dataset:
name: Turkish Product Reviews
type: turkish_product_reviews
metrics:
- type: accuracy
value: 0.9612
name: Accuracy
- type: f1
value: 0.9598
name: F1 (weighted)
---
# 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
```python
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
```python
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
```python
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](https://huggingface.co/datasets/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
```python
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
```bibtex
@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](https://github.com/DexopT)