|
|
--- |
|
|
language: tr |
|
|
tags: |
|
|
- text-classification |
|
|
- sentiment-analysis |
|
|
license: mit |
|
|
datasets: |
|
|
- custom-dataset |
|
|
metrics: |
|
|
- accuracy |
|
|
- precision |
|
|
- recall |
|
|
- f1 |
|
|
model-index: |
|
|
- name: ba2hann/bert-base-turkish-sentiment-analize |
|
|
results: |
|
|
- task: |
|
|
type: text-classification |
|
|
name: Sentiment Analysis |
|
|
dataset: |
|
|
name: Custom Dataset |
|
|
type: custom |
|
|
metrics: |
|
|
- type: accuracy |
|
|
value: 0.937 |
|
|
- type: precision |
|
|
value: 0.944 |
|
|
- type: recall |
|
|
value: 0.919 |
|
|
- type: f1 |
|
|
value: 0.927 |
|
|
--- |
|
|
|
|
|
# Türkçe Duygu Analizi Modeli (ba2hann/bert-base-turkish-sentiment-analize) |
|
|
|
|
|
Bu model, Türkçe metinler için duygu analizi yapmayı amaçlamaktadır. Model, dört farklı duygu kategorisini sınıflandırmak üzere eğitilmiştir: |
|
|
|
|
|
* Irkçılık |
|
|
* Kızdırma (Hakaret/Küfür) |
|
|
* Nötr |
|
|
* Cinsiyetçilik |
|
|
|
|
|
## Model Detayları |
|
|
|
|
|
Bu model, `bert-base-turkish-cased` modeli temel alınarak özel bir veri seti üzerinde eğitilmiştir. Hedef, sosyal medyada ve diğer metin tabanlı platformlarda sıklıkla karşılaşılan olumsuz ve ayrımcı söylemleri tespit etmektir. |
|
|
|
|
|
## Performans Metrikleri |
|
|
|
|
|
Modelin genel performansı aşağıdaki gibidir: |
|
|
|
|
|
* **Doğruluk (Accuracy):** %93.7 |
|
|
|
|
|
Kategori bazlı performans metrikleri ise şöyledir: |
|
|
|
|
|
| Kategori | Precision | Recall | F1 Score | |
|
|
|--------------|-----------|--------|----------| |
|
|
| Irkçılık | 0.881 | 0.919 | 0.899 | |
|
|
| Kızdırma | 0.944 | 0.912 | 0.927 | |
|
|
| Nötr | 0.960 | 0.965 | 0.963 | |
|
|
| Cinsiyetçilik | 0.857 | 0.904 | 0.880 | |
|
|
|
|
|
## Nasıl Kullanılır? |
|
|
|
|
|
Aşağıdaki Python kodu, `transformers` kütüphanesi ile bu modelin nasıl kullanılacağını göstermektedir: |
|
|
|
|
|
```python |
|
|
import torch |
|
|
from transformers import pipeline |
|
|
|
|
|
model_name = "ba2hann/bert-base-turkish-sentiment-analize" |
|
|
|
|
|
sentiment_pipeline = pipeline( |
|
|
task="text-classification", |
|
|
model=model_name, |
|
|
tokenizer=model_name, |
|
|
device=0 if torch.cuda.is_available() else -1 # GPU varsa kullan, yoksa CPU |
|
|
) |
|
|
|
|
|
category_map = { |
|
|
0: "Irkçılık", |
|
|
1: "Kızdırma", |
|
|
2: "Nötr", |
|
|
3: "Cinsiyetçilik" |
|
|
} |
|
|
|
|
|
def analyze_sentiment(text): |
|
|
sonuc = sentiment_pipeline(text)[0] |
|
|
label_index = int(sonuc['label'].split('_')[-1]) |
|
|
kategori = category_map.get(label_index, "Bilinmeyen") |
|
|
return { |
|
|
"text": text, |
|
|
"category": kategori, |
|
|
"score": sonuc['score'] |
|
|
} |
|
|
|
|
|
if __name__ == "__main__": |
|
|
ornek_cumleler = [ |
|
|
"Bu çok güzel bir gün.", #Nötr |
|
|
"Sen ne kadar aptalsın!", #Kızdırma |
|
|
"Bu ırkçı bir söylem.", #Irkçılık |
|
|
"Kadınlar araba kullanamaz.", #Cinsiyetçilik |
|
|
"Bu konu hakkında hiçbir fikrim yok." #Nötr |
|
|
] |
|
|
for ornek_cumle in ornek_cumleler: |
|
|
sonuc = analyze_sentiment(ornek_cumle) |
|
|
print("\nAnaliz Sonuçları:") |
|
|
print(f"Analiz Edilen Cümle: {sonuc['text']}") |
|
|
print(f"Tahmin: {sonuc['category']}") |
|
|
print(f"Tahmin Güveni: {sonuc['score']:.2%}") |