Al Modelleri

Sentence Transformers: all-MiniLM-L6-v2 Modeli ve Metin Gömme (Embedding) Teknolojisi

Yayınlanma

on


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ı:

  1. Semantik Arama: Benzer anlama gelen metinleri bulma
  2. Metin Kümeleme: Benzer içerikleri gruplama
  3. Benzerlik Skorlama: İki metin arasındaki anlamsal yakınlığı ölçme
  4. Öneri Sistemleri: İçerik tabanlı öneriler
  5. Ç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ı:

İndirme Seçenekleri:

  1. Otomatik İndirme: Yukarıdaki kodları çalıştırdığınızda model otomatik indirilir
  2. Manuel İndirme: Hugging Face sayfasından model dosyalarını indirebilirsiniz
  3. 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.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Trend

Exit mobile version