Al Modelleri
Sentence Transformers: all-MiniLM-L6-v2 Modeli ve Metin Gömme (Embedding) Teknolojisi
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.