|
--- |
|
license: mit |
|
--- |
|
|
|
# BERT Türkçe Sınıflandırma Modeli |
|
|
|
Bu proje, Türkçe dilindeki metinleri sınıflandırmak için fine-tune edilmiş bir BERT modelini kullanır. Model, metinleri aşağıdaki sınıflara ayırabilir: |
|
|
|
- **Nötr** |
|
- **Positive** |
|
- **Negative** |
|
|
|
|
|
## Kullanım |
|
|
|
1. Gerekli paketleri yükleyin: |
|
```bash |
|
pip install transformers torch matplotlib |
|
``` |
|
|
|
2. Model ve tokenizer'ı indirin: |
|
```python |
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
import torch |
|
|
|
tokenizer = AutoTokenizer.from_pretrained("WhiteAngelss/bert-base-turkish-cased") |
|
model = AutoModelForSequenceClassification.from_pretrained("WhiteAngelss/bert-base-turkish-cased") |
|
``` |
|
|
|
3. Test cümleleri ile modeli test edin: |
|
```python |
|
sentences = [ |
|
"Sen gerçekten aptalsın ve her şeyin en kötüsünü hak ediyorsun.", # INSULT |
|
"Bugün hava çok güzel.", # OTHER |
|
"Bu dilimizdeki küfürlerden biri olabilir.", # PROFANITY |
|
"Tüm kadınlar sadece mutfak işlerini yapar, bu doğaldır.", # SEXIST |
|
"Siyahlar toplumda geri kalmış, bu kabul edilemez." # RACIST |
|
] |
|
|
|
inputs = tokenizer(sentences, return_tensors="pt", padding=True, truncation=True) |
|
outputs = model(**inputs) |
|
probs = torch.nn.functional.softmax(outputs.logits, dim=-1) |
|
``` |
|
|
|
4. Sonuçları yazdırın ve görselleştirin: |
|
```python |
|
import matplotlib.pyplot as plt |
|
|
|
user_probs_np = probs.detach().numpy() |
|
|
|
fig, ax = plt.subplots() |
|
bars = ax.bar(id2label.values(), user_probs_np[0], color='skyblue') |
|
ax.set_xlabel('Sınıflar') |
|
ax.set_ylabel('Olasılıklar') |
|
ax.set_title('Tahmin Edilen Sınıfların Olasılıkları') |
|
|
|
for bar in bars: |
|
height = bar.get_height() |
|
ax.text(bar.get_x() + bar.get_width() / 2, height, f'{height * 100:.2f}%', ha='center', va='bottom') |
|
|
|
plt.xticks(rotation=45) |
|
plt.show() |
|
``` |
|
|
|
## Yazar |
|
|
|
Bu projeyi WhiteAngels Team hazırlamıştır. |
|
|
|
|
|
|
|
|
|
## ÖRNEK KULLANIM : |
|
|
|
import matplotlib.pyplot as plt |
|
import numpy as np |
|
|
|
# Etiketlerin tanımlanması |
|
id2label = { |
|
"0": "Nötr", |
|
"1": "Positive", |
|
"2": "Negative" |
|
|
|
} |
|
|
|
# Test cümleleri |
|
sentences = [ |
|
"Sen gerçekten aptalsın ve her şeyin en kötüsünü hak ediyorsun.", |
|
"Bugün hava çok güzel.", |
|
"Bu dilimizdeki küfürlerden biri olabilir.", |
|
"Tüm kadınlar sadece mutfak işlerini yapar, bu doğaldır.", |
|
"Siyahlar toplumda geri kalmış, bu kabul edilemez." |
|
] |
|
|
|
# Olasılıkları simüle edelim (örnek veri) |
|
user_probs_np = np.array([0.65, 0.05, 0.15, 0.10, 0.05]) |
|
|
|
# Sonuçları çubuk grafik olarak görselleştirme |
|
fig, ax = plt.subplots() |
|
bars = ax.bar(id2label.values(), user_probs_np, color='skyblue') |
|
ax.set_xlabel('Sınıflar') |
|
ax.set_ylabel('Olasılıklar') |
|
ax.set_title('Tahmin Edilen Sınıfların Olasılıkları') |
|
|
|
# Her çubuğun üzerine olasılığı yazdırma |
|
for bar in bars: |
|
height = bar.get_height() |
|
ax.text(bar.get_x() + bar.get_width() / 2, height, f'{height * 100:.2f}%', ha='center', va='bottom') |
|
|
|
# Gösterme |
|
plt.xticks(rotation=45) |
|
plt.show() |
|
|
|
|