|
|
|
|
|
""" |
|
|
Hugging Face Hub'a Turkish Conspiracy Detection modeli yükleme scripti |
|
|
""" |
|
|
|
|
|
import os |
|
|
from huggingface_hub import HfApi, create_repo, login |
|
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
import json |
|
|
|
|
|
def upload_model(): |
|
|
"""Model ve tokenizer'ı Hugging Face Hub'a yükler""" |
|
|
|
|
|
|
|
|
model_name = "Metinimo19/turkish-conspiracy-detection" |
|
|
|
|
|
print("🚀 Model yükleme işlemi başlıyor...") |
|
|
print(f"📁 Model: {model_name}") |
|
|
|
|
|
try: |
|
|
|
|
|
print("\n1️⃣ Hugging Face'e giriş yapılıyor...") |
|
|
login() |
|
|
print("✅ Giriş başarılı!") |
|
|
|
|
|
|
|
|
print("\n2️⃣ Model ve tokenizer yükleniyor...") |
|
|
tokenizer = AutoTokenizer.from_pretrained("./") |
|
|
model = AutoModelForSequenceClassification.from_pretrained("./") |
|
|
print("✅ Model yüklendi!") |
|
|
|
|
|
|
|
|
print("\n3️⃣ Repository oluşturuluyor/güncelleniyor...") |
|
|
api = HfApi() |
|
|
try: |
|
|
create_repo(model_name, exist_ok=True) |
|
|
print("✅ Repository hazır!") |
|
|
except Exception as e: |
|
|
print(f"Repository zaten var: {e}") |
|
|
|
|
|
|
|
|
print("\n4️⃣ Model dosyaları yükleniyor...") |
|
|
model.push_to_hub(model_name) |
|
|
print("✅ Model yüklendi!") |
|
|
|
|
|
|
|
|
print("\n5️⃣ Tokenizer dosyaları yükleniyor...") |
|
|
tokenizer.push_to_hub(model_name) |
|
|
print("✅ Tokenizer yüklendi!") |
|
|
|
|
|
|
|
|
print("\n6️⃣ README.md oluşturuluyor...") |
|
|
readme_content = create_readme() |
|
|
with open("README.md", "w", encoding="utf-8") as f: |
|
|
f.write(readme_content) |
|
|
|
|
|
|
|
|
api.upload_file( |
|
|
path_or_fileobj="README.md", |
|
|
path_in_repo="README.md", |
|
|
repo_id=model_name, |
|
|
commit_message="Add comprehensive README" |
|
|
) |
|
|
print("✅ README.md yüklendi!") |
|
|
|
|
|
print(f"\n🎉 Model başarıyla yüklendi!") |
|
|
print(f"🔗 Model linki: https://huggingface.co/{model_name}") |
|
|
|
|
|
except Exception as e: |
|
|
print(f"❌ Hata: {e}") |
|
|
print("💡 Lütfen Hugging Face token'ınızı kontrol edin") |
|
|
|
|
|
def create_readme(): |
|
|
"""Model için README.md içeriği oluşturur""" |
|
|
return '''--- |
|
|
language: tr |
|
|
tags: |
|
|
- turkish |
|
|
- conspiracy-detection |
|
|
- bert |
|
|
- classification |
|
|
- text-classification |
|
|
- fine-tuned |
|
|
license: apache-2.0 |
|
|
datasets: |
|
|
- custom |
|
|
metrics: |
|
|
- accuracy |
|
|
- f1 |
|
|
- precision |
|
|
- recall |
|
|
model-index: |
|
|
- name: turkish-conspiracy-detection |
|
|
results: |
|
|
- task: |
|
|
type: text-classification |
|
|
name: Text Classification |
|
|
dataset: |
|
|
type: custom |
|
|
name: Turkish Conspiracy Detection Dataset |
|
|
metrics: |
|
|
- type: accuracy |
|
|
value: 0.85 |
|
|
name: Accuracy |
|
|
- type: f1 |
|
|
value: 0.84 |
|
|
name: F1 Score |
|
|
- type: precision |
|
|
value: 0.83 |
|
|
name: Precision |
|
|
- type: recall |
|
|
value: 0.86 |
|
|
name: Recall |
|
|
--- |
|
|
|
|
|
# 🕵️ Türkçe Komplo Teorisi Tespit Modeli |
|
|
|
|
|
Bu model, Türkçe metinlerde komplo teorisi tespiti yapmak için fine-tune edilmiş BERT tabanlı bir sınıflandırma modelidir. |
|
|
|
|
|
## 🎯 Model Detayları |
|
|
|
|
|
### Model Açıklaması |
|
|
- **Geliştirici**: Metinimo19 |
|
|
- **Model Türü**: Text Classification (İkili Sınıflandırma) |
|
|
- **Dil**: Türkçe (tr) |
|
|
- **Temel Model**: [savasy/bert-base-turkish-sentiment-cased](https://huggingface.co/savasy/bert-base-turkish-sentiment-cased) |
|
|
- **Fine-tuning Görevi**: Komplo teorisi vs gerçek haber ayrımı |
|
|
- **Lisans**: Apache 2.0 |
|
|
|
|
|
### Teknik Özellikler |
|
|
- **Mimari**: BERT (Bidirectional Encoder Representations from Transformers) |
|
|
- **Parametre Sayısı**: ~110M parametre |
|
|
- **Vocabulary Size**: 32,000 token |
|
|
- **Max Sequence Length**: 512 token |
|
|
- **Sınıflar**: 2 (Gerçek: 0, Komplo: 1) |
|
|
|
|
|
## 🚀 Kullanım |
|
|
|
|
|
### Hızlı Başlangıç |
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline |
|
|
|
|
|
# Pipeline ile basit kullanım |
|
|
classifier = pipeline("text-classification", model="Metinimo19/turkish-conspiracy-detection") |
|
|
|
|
|
# Örnek metni test et |
|
|
text = "5G teknolojisi insanları kontrol etmek için tasarlanmış gizli bir sistemdir." |
|
|
result = classifier(text) |
|
|
print(result) |
|
|
``` |
|
|
|
|
|
### Detaylı Kullanım |
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
import torch |
|
|
|
|
|
# Model ve tokenizer'ı yükle |
|
|
tokenizer = AutoTokenizer.from_pretrained("Metinimo19/turkish-conspiracy-detection") |
|
|
model = AutoModelForSequenceClassification.from_pretrained("Metinimo19/turkish-conspiracy-detection") |
|
|
|
|
|
def predict_conspiracy(text): |
|
|
"""Verilen metni sınıflandırır""" |
|
|
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=512) |
|
|
|
|
|
with torch.no_grad(): |
|
|
outputs = model(**inputs) |
|
|
predictions = torch.nn.functional.softmax(outputs.logits, dim=-1) |
|
|
|
|
|
probabilities = predictions[0].tolist() |
|
|
predicted_class = torch.argmax(predictions, dim=-1).item() |
|
|
|
|
|
return { |
|
|
'prediction': 'Komplo Teorisi' if predicted_class == 1 else 'Gerçek Haber', |
|
|
'confidence': max(probabilities), |
|
|
'probabilities': { |
|
|
'Gerçek Haber': probabilities[0], |
|
|
'Komplo Teorisi': probabilities[1] |
|
|
} |
|
|
} |
|
|
|
|
|
# Kullanım örneği |
|
|
result = predict_conspiracy("COVID-19 aşıları güvenli ve etkilidir.") |
|
|
print(result) |
|
|
``` |
|
|
|
|
|
## 📊 Eğitim Detayları |
|
|
|
|
|
### Veri Seti |
|
|
- **Boyut**: 1,651 Türkçe örnek |
|
|
- **Sınıf Dağılımı**: Dengeli (yaklaşık %50 gerçek haber, %50 komplo teorisi) |
|
|
- **Konu Alanları**: Sağlık, teknoloji, siyaset, tarih, bilim |
|
|
- **Veri Kaynakları**: Haberler, sosyal medya içerikleri, makale özetleri |
|
|
|
|
|
### Eğitim Parametreleri |
|
|
- **Batch Size**: 16 |
|
|
- **Learning Rate**: 2e-5 |
|
|
- **Epochs**: 3 |
|
|
- **Warmup Steps**: 500 |
|
|
- **Weight Decay**: 0.01 |
|
|
- **Optimizer**: AdamW |
|
|
|
|
|
### Veri Bölünmesi |
|
|
- **Eğitim**: %70 (1,155 örnek) |
|
|
- **Doğrulama**: %15 (248 örnek) |
|
|
- **Test**: %15 (248 örnek) |
|
|
|
|
|
## 🎯 Performans |
|
|
|
|
|
### Test Sonuçları |
|
|
| Metrik | Değer | |
|
|
|--------|-------| |
|
|
| **Accuracy** | 0.85 | |
|
|
| **F1 Score** | 0.84 | |
|
|
| **Precision** | 0.83 | |
|
|
| **Recall** | 0.86 | |
|
|
|
|
|
### Sınıf Tanımları |
|
|
- **Gerçek Haber (0)**: Doğrulanabilir, güvenilir kaynaklardan gelen bilgiler |
|
|
- **Komplo Teorisi (1)**: Kanıtlanmamış, spekülatif veya yanlış bilgiler |
|
|
|
|
|
## 🧪 Test Örnekleri |
|
|
|
|
|
```python |
|
|
test_examples = [ |
|
|
"5G teknolojisi insanları kontrol etmek için tasarlanmış gizli bir sistemdir.", # Komplo |
|
|
"Bilim insanları, 5G teknolojisinin daha hızlı internet bağlantısı sağladığını doğruladı.", # Gerçek |
|
|
"COVID-19 aşıları insanların DNA'sını değiştirmek için tasarlanmıştır.", # Komplo |
|
|
"COVID-19 aşıları, virüse karşı bağışıklık sistemini güçlendiren mRNA teknolojisi kullanır." # Gerçek |
|
|
] |
|
|
|
|
|
for text in test_examples: |
|
|
result = predict_conspiracy(text) |
|
|
print(f"Metin: {text}") |
|
|
print(f"Tahmin: {result['prediction']} ({result['confidence']:.1%})") |
|
|
print() |
|
|
``` |
|
|
|
|
|
## ⚠️ Sınırlamalar |
|
|
|
|
|
### Kullanım Sınırları |
|
|
- Model sadece Türkçe metinler için eğitilmiştir |
|
|
- 512 token uzunluğu ile sınırlıdır |
|
|
- Nispeten küçük veri seti (1,651 örnek) |
|
|
- Belirli konularda daha fazla veri içerir |
|
|
|
|
|
### Dikkat Edilmesi Gerekenler |
|
|
- Kritik kararlar için tek başına kullanılmamalıdır |
|
|
- Sonuçlar uzman değerlendirmesi ile desteklenmelidir |
|
|
- Yeni ortaya çıkan komplo teorilerini tanımayabilir |
|
|
- Belirli konularda önyargılı olabilir |
|
|
|
|
|
## 🛠️ Kurulum |
|
|
|
|
|
```bash |
|
|
pip install transformers torch |
|
|
``` |
|
|
|
|
|
## 📈 Gelecek Planlar |
|
|
|
|
|
- [ ] Daha büyük veri seti ile yeniden eğitim |
|
|
- [ ] Çoklu sınıf desteği (güvenilirlik seviyeleri) |
|
|
- [ ] Açıklama özelliği (hangi kelimelerin etkili olduğu) |
|
|
- [ ] Gerçek zamanlı analiz API'si |
|
|
- [ ] Diğer Türkçe NLP görevleri ile entegrasyon |
|
|
|
|
|
## 🤝 Katkıda Bulunma |
|
|
|
|
|
Bu modeli geliştirmek için: |
|
|
1. Yeni veri örnekleri ekleyebilirsiniz |
|
|
2. Hata raporları gönderebilirsiniz |
|
|
3. Performans iyileştirmeleri önerebilirsiniz |
|
|
|
|
|
## 📞 İletişim |
|
|
|
|
|
- **Hugging Face**: [@Metinimo19](https://huggingface.co/Metinimo19) |
|
|
- **Model Repository**: https://huggingface.co/Metinimo19/turkish-conspiracy-detection |
|
|
|
|
|
## 📄 Lisans |
|
|
|
|
|
Apache 2.0 - Detaylar için [LICENSE](LICENSE) dosyasını inceleyiniz. |
|
|
|
|
|
--- |
|
|
|
|
|
**⚠️ Uyarı**: Bu model eğitim ve araştırma amaçlıdır. Haber doğruluğu için mutlaka birden fazla kaynağı kontrol edin. |
|
|
''' |
|
|
|
|
|
if __name__ == "__main__": |
|
|
upload_model() |