Update README.md
Browse files
README.md
CHANGED
|
@@ -31,37 +31,51 @@ model-index:
|
|
| 31 |
value: 0.927
|
| 32 |
---
|
| 33 |
|
| 34 |
-
Türkçe Duygu Analizi Modeli (ba2hann/bert-base-turkish-sentiment-analize)
|
|
|
|
| 35 |
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:
|
| 36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
-
|
| 39 |
-
Kızdırma
|
| 40 |
-
Nötr
|
| 41 |
-
Cinsiyetçilik
|
| 42 |
-
Performans Metrikleri
|
| 43 |
-
Model, aşağıdaki doğruluk değerlerine sahiptir:
|
| 44 |
|
| 45 |
-
|
| 46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
-
|
| 49 |
-
|
|
|
|
|
|
|
|
|
|
| 50 |
import torch
|
| 51 |
from transformers import pipeline
|
| 52 |
|
| 53 |
-
# Model adı
|
| 54 |
model_name = "ba2hann/bert-base-turkish-sentiment-analize"
|
| 55 |
|
| 56 |
-
# Duygu analizi için pipeline oluşturma
|
| 57 |
sentiment_pipeline = pipeline(
|
| 58 |
task="text-classification",
|
| 59 |
model=model_name,
|
| 60 |
tokenizer=model_name,
|
| 61 |
-
device=0 if torch.cuda.is_available() else -1 # GPU
|
| 62 |
)
|
| 63 |
|
| 64 |
-
# Kategori haritası
|
| 65 |
category_map = {
|
| 66 |
0: "Irkçılık",
|
| 67 |
1: "Kızdırma",
|
|
@@ -69,29 +83,27 @@ category_map = {
|
|
| 69 |
3: "Cinsiyetçilik"
|
| 70 |
}
|
| 71 |
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
Kategori Precision Recall F1 Score
|
| 76 |
-
Irkçılık 0.881 0.919 0.899
|
| 77 |
-
Kızdırma 0.944 0.912 0.927
|
| 78 |
-
Nötr 0.960 0.965 0.963
|
| 79 |
-
Cinsiyetçilik 0.857 0.904 0.880
|
| 80 |
-
Genel Doğruluk (Accuracy): %93.7
|
| 81 |
-
|
| 82 |
-
if __name__ == "__main__":
|
| 83 |
-
# Analiz edilecek örnek cümle
|
| 84 |
-
ornek_cumle = "örnek cümle"
|
| 85 |
-
|
| 86 |
-
# Pipeline ile analiz
|
| 87 |
-
sonuc = sentiment_pipeline(ornek_cumle)[0]
|
| 88 |
-
|
| 89 |
-
# Tahmini kategoriye dönüştürme
|
| 90 |
-
label_index = int(sonuc['label'].split('_')[-1]) # 'LABEL_0' -> 0
|
| 91 |
kategori = category_map.get(label_index, "Bilinmeyen")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
value: 0.927
|
| 32 |
---
|
| 33 |
|
| 34 |
+
# Türkçe Duygu Analizi Modeli (ba2hann/bert-base-turkish-sentiment-analize)
|
| 35 |
+
|
| 36 |
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:
|
| 37 |
|
| 38 |
+
* Irkçılık
|
| 39 |
+
* Kızdırma (Hakaret/Küfür)
|
| 40 |
+
* Nötr
|
| 41 |
+
* Cinsiyetçilik
|
| 42 |
+
|
| 43 |
+
## Model Detayları
|
| 44 |
+
|
| 45 |
+
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.
|
| 46 |
+
|
| 47 |
+
## Performans Metrikleri
|
| 48 |
+
|
| 49 |
+
Modelin genel performansı aşağıdaki gibidir:
|
| 50 |
+
|
| 51 |
+
* **Doğruluk (Accuracy):** %93.7
|
| 52 |
|
| 53 |
+
Kategori bazlı performans metrikleri ise şöyledir:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
|
| 55 |
+
| Kategori | Precision | Recall | F1 Score |
|
| 56 |
+
|--------------|-----------|--------|----------|
|
| 57 |
+
| Irkçılık | 0.881 | 0.919 | 0.899 |
|
| 58 |
+
| Kızdırma | 0.944 | 0.912 | 0.927 |
|
| 59 |
+
| Nötr | 0.960 | 0.965 | 0.963 |
|
| 60 |
+
| Cinsiyetçilik | 0.857 | 0.904 | 0.880 |
|
| 61 |
|
| 62 |
+
## Nasıl Kullanılır?
|
| 63 |
+
|
| 64 |
+
Aşağıdaki Python kodu, `transformers` kütüphanesi ile bu modelin nasıl kullanılacağını göstermektedir:
|
| 65 |
+
|
| 66 |
+
```python
|
| 67 |
import torch
|
| 68 |
from transformers import pipeline
|
| 69 |
|
|
|
|
| 70 |
model_name = "ba2hann/bert-base-turkish-sentiment-analize"
|
| 71 |
|
|
|
|
| 72 |
sentiment_pipeline = pipeline(
|
| 73 |
task="text-classification",
|
| 74 |
model=model_name,
|
| 75 |
tokenizer=model_name,
|
| 76 |
+
device=0 if torch.cuda.is_available() else -1 # GPU varsa kullan, yoksa CPU
|
| 77 |
)
|
| 78 |
|
|
|
|
| 79 |
category_map = {
|
| 80 |
0: "Irkçılık",
|
| 81 |
1: "Kızdırma",
|
|
|
|
| 83 |
3: "Cinsiyetçilik"
|
| 84 |
}
|
| 85 |
|
| 86 |
+
def analyze_sentiment(text):
|
| 87 |
+
sonuc = sentiment_pipeline(text)[0]
|
| 88 |
+
label_index = int(sonuc['label'].split('_')[-1])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
kategori = category_map.get(label_index, "Bilinmeyen")
|
| 90 |
+
return {
|
| 91 |
+
"text": text,
|
| 92 |
+
"category": kategori,
|
| 93 |
+
"score": sonuc['score']
|
| 94 |
+
}
|
| 95 |
|
| 96 |
+
if __name__ == "__main__":
|
| 97 |
+
ornek_cumleler = [
|
| 98 |
+
"Bu çok güzel bir gün.", #Nötr
|
| 99 |
+
"Sen ne kadar aptalsın!", #Kızdırma
|
| 100 |
+
"Bu ırkçı bir söylem.", #Irkçılık
|
| 101 |
+
"Kadınlar araba kullanamaz.", #Cinsiyetçilik
|
| 102 |
+
"Bu konu hakkında hiçbir fikrim yok." #Nötr
|
| 103 |
+
]
|
| 104 |
+
for ornek_cumle in ornek_cumleler:
|
| 105 |
+
sonuc = analyze_sentiment(ornek_cumle)
|
| 106 |
+
print("\nAnaliz Sonuçları:")
|
| 107 |
+
print(f"Analiz Edilen Cümle: {sonuc['text']}")
|
| 108 |
+
print(f"Tahmin: {sonuc['category']}")
|
| 109 |
+
print(f"Tahmin Güveni: {sonuc['score']:.2%}")
|