| ---
|
| language: tr
|
| tags:
|
| - sentiment-analysis
|
| - turkish
|
| - bert
|
| - text-classification
|
| license: apache-2.0
|
| datasets:
|
| - winvoker/turkish-sentiment-analysis-dataset
|
| - WhiteAngelss/Turkce-Duygu-Analizi-Dataset
|
| metrics:
|
| - accuracy
|
| - f1
|
| - precision
|
| - recall
|
| ---
|
|
|
| # Turkish Sentiment Analysis Model
|
|
|
| A fine-tuned BERT model for Turkish sentiment analysis, trained on a combined dataset of 439,384 labeled Turkish sentences.
|
|
|
| ## Model Details
|
|
|
| - **Base Model:** `dbmdz/bert-base-turkish-cased`
|
| - **Task:** Text Classification (Sentiment Analysis)
|
| - **Language:** Turkish
|
| - **Labels:** positive, negative, neutral
|
|
|
| ## Training Data
|
|
|
| The model was trained on a combination of two high-quality Turkish sentiment datasets:
|
| - `winvoker/turkish-sentiment-analysis-dataset` (440,641 samples)
|
| - `WhiteAngelss/Turkce-Duygu-Analizi-Dataset` (440,641 samples)
|
|
|
| After deduplication and preprocessing, the final training set consisted of:
|
| - **Training:** 351,507 samples
|
| - **Validation:** 43,938 samples
|
| - **Test:** 43,939 samples
|
|
|
| ### Label Distribution
|
|
|
| - **Positive:** 234,957 (53.5%)
|
| - **Neutral:** 153,809 (35.0%)
|
| - **Negative:** 50,618 (11.5%)
|
|
|
| ## Training
|
|
|
| - **Epochs:** 3
|
| - **Learning Rate:** 2e-5
|
| - **Batch Size:** 16
|
| - **Max Length:** 128
|
| - **Optimizer:** AdamW
|
|
|
| ## Usage
|
|
|
| ```python
|
| from transformers import AutoTokenizer, AutoModelForSequenceClassification
|
| import torch
|
|
|
| # Load model and tokenizer
|
| model_name = "codealchemist01/turkish-sentiment-analysis"
|
| tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| model = AutoModelForSequenceClassification.from_pretrained(model_name)
|
|
|
| # Example text
|
| text = "Bu ürün gerçekten harika!"
|
|
|
| # Tokenize
|
| inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
|
|
|
| # Predict
|
| with torch.no_grad():
|
| outputs = model(**inputs)
|
| predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
|
| predicted_label_id = predictions.argmax().item()
|
|
|
| # Map to label
|
| id2label = {0: "negative", 1: "neutral", 2: "positive"}
|
| predicted_label = id2label[predicted_label_id]
|
| confidence = predictions[0][predicted_label_id].item()
|
|
|
| print(f"Label: {predicted_label}")
|
| print(f"Confidence: {confidence:.4f}")
|
| ```
|
|
|
| ## Performance
|
|
|
| Evaluation metrics on the test set (43,939 samples):
|
|
|
| - **Accuracy:** 97.45%
|
| - **Weighted F1:** 97.42%
|
| - **Weighted Precision:** 97.41%
|
| - **Weighted Recall:** 97.45%
|
|
|
| ### Per-Class Performance
|
|
|
| | Class | Precision | Recall | F1-Score | Support |
|
| |----------|-----------|--------|----------|---------|
|
| | Negative | 91.42% | 86.69% | 88.99% | 5,062 |
|
| | Neutral | 99.79% | 99.96% | 99.87% | 15,381 |
|
| | Positive | 97.15% | 98.12% | 97.63% | 23,496 |
|
|
|
| **Note:** Negative class has lower performance due to class imbalance (only 11.5% of the dataset). The model performs excellently on neutral and positive classes.
|
|
|
| ## Limitations
|
|
|
| - The model may not perform well on very short texts (< 3 words)
|
| - Performance may vary across different domains (social media, news, reviews)
|
| - Class imbalance may affect performance on minority classes (negative)
|
|
|
| ## Citation
|
|
|
| If you use this model, please cite:
|
|
|
| ```bibtex
|
| @misc{turkish-sentiment-analysis,
|
| title={Turkish Sentiment Analysis Model},
|
| author={codealchemist01},
|
| year={2024},
|
| howpublished={\url{https://huggingface.co/codealchemist01/turkish-sentiment-analysis}}
|
| }
|
| ```
|
|
|
| ## License
|
|
|
| Apache 2.0
|
|
|
|
|