all-MiniLM-L6-v2 Modeli: Detaylı Açıklama Model Nedir? sentence-transformers/all-MiniLM-L6-v2, metinleri anlamlı sayısal vektörlere (embedding) dönüştüren özel bir doğal dil işleme (NLP) modelidir. Metinler arası benzerlik karşılaştırması, kümeleme (clustering) ve semantik arama gibi görevlerde yüksek performans sunar. Teknik Özellikler: Mimari: 6 katmanlı MiniLM modeli (Hafifletilmiş BERT varyantı) Çıktı Boyutu: 384 boyutlu vektörler Eğitim Verisi: 1 milyardan fazla cümle çifti Dil: İngilizce Öne Çıkan Özellik: Yüksek hız ve küçük boyut (90MB), en iyi performans/hız oranlarından biri Kullanım Alanları: Semantik Arama: Benzer anlama gelen metinleri bulma Metin Kümeleme: Benzer içerikleri gruplama Benzerlik Skorlama: İki metin arasındaki anlamsal yakınlığı ölçme Öneri Sistemleri: İçerik tabanlı öneriler Çoğulculuk (Deduplication): Yinelenen içerikleri tespit etme Nasıl Çalışır? Model, girdi metnini alır ve 384 boyutlu yoğun bir vektöre dönüştürür. Benzer anlama sahip metinler, vektör uzayında birbirine yakın konumlanır. Kurulum ve Kullanım Kodu 1. Gereksinimlerin Yüklenmesi pip install sentence-transformers # veya pip install transformers torch numpy 2. Modelin Yüklenmesi ve Temel Kullanım from sentence_transformers import SentenceTransformer import numpy as np # Modeli yükle (ilk çalıştırmada otomatik indirilir) model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2') # Örnek metinler metinler = [ "Kedi sevimli bir ev hayvanıdır", "Kediler fareleri avlamayı sever", "İstanbul Boğaz'da güzel bir gün", "Python programlama dili popülerdir" ] # Metinleri vektörlere dönüştür vektörler = model.encode(metinler) print(f"Vektör boyutu: {vektörler.shape}") print(f"Örnek vektör: {vektörler[0][:10]}...") # İlk 10 değer 3. Benzerlik Hesaplama from sklearn.metrics.pairwise import cosine_similarity # Benzerlik matrisini hesapla benzerlik_matrisi = cosine_similarity(vektörler) print("Metinler arası benzerlik skorları:") for i, metin in enumerate(metinler): for j in range(i+1, len(metinler)): benzerlik = benzerlik_matrisi[i][j] print(f"'{metin[:20]}...' vs '{metinler[j][:20]}...' = {benzerlik:.4f}") 4. Semantik Arama Örneği def semantik_arama(sorgu, metin_listesi, model, top_k=2): """ Sorgu metinine en benzer metinleri bulur """ # Tüm metinleri vektörlere dönüştür metin_vektörleri = model.encode(metin_listesi) sorgu_vektoru = model.encode([sorgu]) # Benzerlikleri hesapla benzerlikler = cosine_similarity(sorgu_vektoru, metin_vektörleri)[0] # En benzer sonuçları sırala en_benzer_indeksler = benzerlikler.argsort()[-top_k:][::-1] print(f"Sorgu: '{sorgu}'\n") print("En benzer sonuçlar:") for idx in en_benzer_indeksler: print(f"- {metin_listesi[idx]} (benzerlik: {benzerlikler[idx]:.4f})") return en_benzer_indeksler # Örnek arama sorgu_metni = "hayvanlar ve evcil pets" sonuçlar = semantik_arama(sorgu_metni, metinler, model) 5. Gelişmiş Kullanım: Toplu İşlemler import pandas as pd from tqdm import tqdm def metinleri_vektorlestir(metin_listesi, batch_size=32): """ Büyük metin listelerini batch'ler halinde vektörlere dönüştürür """ vektörler = model.encode(metin_listesi, batch_size=batch_size, show_progress_bar=True, convert_to_numpy=True) return vektörler # Örnek büyük veri seti büyük_metin_listesi = [ "Yapay zeka teknolojileri hızla gelişiyor", "Makine öğrenmesi algoritmaları", "Derin öğrenme sinir ağları", "Veri bilimi istatistik ve programlama gerektirir", "Python veri analizi için popüler bir dildir", # ... yüzlerce/metinlerce metin ] * 100 # Örnek için çoğaltma # Toplu işlemle vektörleştirme büyük_vektörler = metinleri_vektorlestir(büyük_metin_listesi) print(f"Oluşturulan vektör sayısı: {len(büyük_vektörler)}") İndirme Bilgileri Resmi İndirme Kaynakları: Hugging Face Model Hub: https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2 PyPI Package: sentence-transformers GitHub Repository: https://github.com/UKPLab/sentence-transformers İndirme Seçenekleri: Otomatik İndirme: Yukarıdaki kodları çalıştırdığınızda model otomatik indirilir Manuel İndirme: Hugging Face sayfasından model dosyalarını indirebilirsiniz Docker ile: Resmi Docker imajlarını kullanabilirsiniz Model Boyutları: Toplam Boyut: ~90 MB Bellek Kullanımı: ~250-500 MB (işlem boyutuna göre değişir) İndirme Süresi: Ortalama internet hızında 1-2 dakika Performans İpuçları # GPU kullanımı için (daha hızlı) import torch device = 'cuda' if torch.cuda.is_available() else 'cpu' model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2', device=device) # Optimizasyon için model.encode(metinler, batch_size=64, # Daha büyük batch'ler için convert_to_tensor=True, # TensorFlow kullanıyorsanız show_progress_bar=True) # İlerleme çubuğu Bu model, metin benzerliği ve semantik arama görevleri için mükemmel bir başlangıç noktası sunar. Küçük boyutuna rağmen birçok ticari uygulamada kullanılabilecek kadar güçlü performans sergiler.