#!/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()