File size: 5,155 Bytes
560d267 f08d631 a8aec4d f08d631 6ab68b4 a62d445 6ab68b4 66b6d4e a62d445 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | ---
license: mit
language:
- tr
metrics:
- accuracy
- f1
base_model:
- dbmdz/bert-base-turkish-cased
pipeline_tag: text-classification
library_name: transformers
tags:
- absa
- nlp
- sentiment
- turkish
---
# Clothing ABSA Model (v2)
## Model Tanıtımı
Bu model, Türkçe metinler üzerinde **Sentiment Analysis (Duygu Analizi)** yapmak için Türkçe dilindeki giyim ürünlerine ait metinlerden oluşturulan veri kümesi kullanılarak fine-tune edilmiş bir ABSA (Aspect-Based Sentiment Analysis) modelidir.
Model, `dbmdz/bert-base-turkish-cased` temel modelinden türetilmiştir ve Türkçe dilindeki metinlerde olumlu, olumsuz veya nötr duygu kategorilerine ait etiketleri tahmin edebilmektedir.
- **Developed by:** [[ebru kılıç](https://huggingface.co/ebrukilic) , [rumeysa nur yasav](https://huggingface.co/rmysysv)]
- **Model type:** [Fine-Tuned ABSA Model]
- **License:** [MIT]
- **Finetuned from model [optional]:** [dbmdz/bert-base-turkish-cased]
Bu model, doğrudan metin verisini alıp duygu etiketlerini tahmin etmek için kullanılabilir. Modelin çıktı olarak "olumlu", "olumsuz" veya "nötr" etiketlerinden birini döndürmesi beklenir.Model, sadece duygu analizi için eğitilmiştir. Karmaşık doğal dil işleme (NLP) görevleri, makale yazımı veya özetleme gibi işlemler için uygun değildir.
## Modeli Nasıl Kullanabiliriz?
Modeli, `transformers` kütüphanesini kullanarak yükleyebilir ve metinlerdeki duygu analizini gerçekleştirebilirsiniz.
```python
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch
# modelin ve tokenizerın yüklenmesi
model_name = "ebrukilic/bert-absa-tr-2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# cuda
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
model.eval()
```
```python
# test etmek için örnek
text = "Ürün çok güzel ama kolları kısa ve çok dar"
aspect = "Beden"
inputs = tokenizer(aspect, text, truncation=True, padding='max_length', max_length=128, return_tensors="pt").to(device)
# model ile tahmin yapılması:
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
predicted_class_id = torch.argmax(logits, dim=-1).item()
# Tahmin edilen etiketin açıklaması
id_to_label = {0: "negatif", 1: "nötr", 2: "pozitif"}
predicted_label = id_to_label[predicted_class_id]
print(f"Tahmin edilen etiket: {predicted_label}")
```
## Eğitim Verisi
[ebrukilic/clothing_products_ABSA_v2](https://huggingface.co/datasets/ebrukilic/clothing_products_ABSA_v2)
Model, Türkçe metinlerdeki kullanıcı yorumları ve ilgili "aspect"ler (özellikler) kullanılarak eğitildi. Etiketler, 3 sınıflı duygu (polarite) kategorisinde `negatif`, `nötr` ve `pozitif` olarak tanımlanmıştır. Veri kümesi eğitim ve test olmak üzere toplamda 11,470 örnekten oluşmaktadır.
Veri seti:
- **Normalized Yorum**: Yorum metni
- **Aspects**: Kullanıcı yorumu ile ilişkilendirilen konu veya özellik
- **Polarity**: Yorumun duygusal polaritesi (negatif, nötr, pozitif)
```python
from transformers import Trainer, TrainingArguments, AdamW
training_args = TrainingArguments(
output_dir='./results', # modelin kaydedildiği yer
per_device_train_batch_size=32,
per_device_eval_batch_size=32,
num_train_epochs=4, # ilkinde 3'tü -> ebrukilic/bert-finetune-araproje
evaluation_strategy="steps",
eval_steps=50,
save_strategy="steps",
save_steps=50,
load_best_model_at_end=True,
fp16=True,
weight_decay=0.01,
logging_dir='./logs',
logging_steps=10,
)
optimizer = AdamW(
params=model.parameters(), # modelin parametreleri
lr=3e-5, # öğrenme hızı -> ilkinde 2e-5 idi, bu model için 3e-5 olarak değiştirildi
eps=1e-8 # epsilon değeri
)
```
### Test Sonucu
ebrukilic/tubitak_clothing_absa_v3 veri kümesi üzerinde yapılan test sonucu aşağıdaki gibidir.
- **Device:** cuda
- **Label mapping:** `{'negatif': 0, 'nötr': 1, 'pozitif': 2}`
- **Accuracy:** 0.726
- **Macro-F1:** 0.785
### Aspect-aware Evaluation
- Accuracy: 0.8310
- Macro-F1: 0.7850
| Label | Precision | Recall | F1-score | Support |
|---------|-----------|--------|----------|---------|
| negatif | 0.93 | 0.82 | 0.87 | 1719 |
| nötr | 0.55 | 0.64 | 0.59 | 653 |
| pozitif | 0.87 | 0.92 | 0.89 | 1639 |
| **macro avg** | 0.78 | 0.79 | 0.79 | 4011 |
| **weighted avg** | 0.84 | 0.83 | 0.83 | 4011 |
### Text-only Evaluation
- Accuracy: 0.6457
- Macro-F1: 0.5893
| Label | Precision | Recall | F1-score | Support |
|---------|-----------|--------|----------|---------|
| negatif | 0.78 | 0.63 | 0.70 | 1719 |
| nötr | 0.27 | 0.38 | 0.32 | 653 |
| pozitif | 0.74 | 0.77 | 0.75 | 1639 |
| **macro avg** | 0.60 | 0.59 | 0.59 | 4011 |
| **weighted avg** | 0.68 | 0.65 | 0.66 | 4011 |
### Summary
- Aspect-aware: Acc=0.831, F1=0.785
- Text-only: Acc=0.646, F1=0.589
- Aspect effect: +28.7% |