turkish-conspiracy-detection / upload_model.py
Metinimo19's picture
Upload folder using huggingface_hub
70302c3 verified
#!/usr/bin/env python3
"""
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 bilgileri
model_name = "Metinimo19/turkish-conspiracy-detection"
print("🚀 Model yükleme işlemi başlıyor...")
print(f"📁 Model: {model_name}")
try:
# 1. Hugging Face'e giriş yap
print("\n1️⃣ Hugging Face'e giriş yapılıyor...")
login()
print("✅ Giriş başarılı!")
# 2. Model ve tokenizer'ı yükle
print("\n2️⃣ Model ve tokenizer yükleniyor...")
tokenizer = AutoTokenizer.from_pretrained("./")
model = AutoModelForSequenceClassification.from_pretrained("./")
print("✅ Model yüklendi!")
# 3. Repository oluştur (varsa güncelle)
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}")
# 4. Model dosyalarını yükle
print("\n4️⃣ Model dosyaları yükleniyor...")
model.push_to_hub(model_name)
print("✅ Model yüklendi!")
# 5. Tokenizer dosyalarını yükle
print("\n5️⃣ Tokenizer dosyaları yükleniyor...")
tokenizer.push_to_hub(model_name)
print("✅ Tokenizer yüklendi!")
# 6. README.md oluştur ve yükle
print("\n6️⃣ README.md oluşturuluyor...")
readme_content = create_readme()
with open("README.md", "w", encoding="utf-8") as f:
f.write(readme_content)
# README'yi yükle
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()