Model
HukukcuApp TR Legal Embedding Gemma-2, Yargıtay emsal kararlarında hukuki uyuşmazlık ➔ emsal gerekçe eşleştirmesi ve içtihat arama görevleri için özelleştirilmiş dikey bir semantik arama modelidir.
Google'ın EmbeddingGemma-2 mimarisi üzerinde, kararlardaki uyuşmazlık tanımları, hukuki ilkeler ve gerekçe blokları arasındaki anlamsal bağı kurmak amacıyla 118.078 adet içtihadi üçlü (triplet) ile fine-tune edilmiştir.
google/embeddinggemma-2 (embedding_gemma2_text mimarisi)transformers, sentence-transformers ve torch kütüphaneleri gereklidir.google/embeddinggemma-2task: search query | query: ➔ title: none | text: olumlu karar ➔ zorlayıcı negatif karar).
Not: Model her 0,5 epoch'ta ara doğrulama setleriyle değerlendirilmiştir. Tablodaki Val NDCG@5 metriği 2.529 soruluk doğrulama havuzunda (999 karar); Top-1, Hukuk ve Ceza başarıları ise 320 kararlık sabit doğrulama kümesinde ölçülmüştür:
| Eğitim Aşaması | Eğitim Kaybı (Loss) | Val NDCG@5 | Sabit Doğrulama Top-1 (320 Karar) | Hukuk Başarısı | Ceza Başarısı | Durum |
|---|---|---|---|---|---|---|
| Başlangıç (Sıfır-Shot) | — | 0,6295 | 224 / 320 (%70,0) | 154 / 200 | 70 / 120 | Ham Taban Model |
| Epoch 0.5 | 0,5120 | 0,7679 | 244 / 320 (%76,3) | 168 / 200 | 76 / 120 | Hızlı Adaptasyon |
| Epoch 1.0 | 0,3845 | 0,7719 | 245 / 320 (%76,6) | 167 / 200 | 78 / 120 | Dengeleme |
| Epoch 1.5 | 0,3012 | 0,7831 | 248 / 320 (%77,5) | 168 / 200 | 80 / 120 | İlerleme |
| Epoch 2.0 (Seçilen Checkpoint) 🏆 | 0,2536 | 0,7858 | 254 / 320 (%79,4) | 173 / 200 | 81 / 120 | Optimum Genelleme |
Ayrı tutulan 10.000 karar (5.000 Hukuk + 5.000 Ceza) üzerinde yapılan $10.000 \times 10.000$ sıralama testi sonuçları:
| Model | Model Türü | Top-1 (1. Sırada) | Top-5 (İlk 5'te) | Top-10 (İlk 10'da) | Hukuk Top-1 | Ceza Top-1 | MRR |
|---|---|---|---|---|---|---|---|
| Gemma-2 Base | Ham Taban (Sıfır-Shot) | %46,21 | %64,62 | %71,82 | %58,04 | %34,38 | 0,5503 |
| Mürşit Base TR | Referans Taban Model | %46,87 | %65,41 | %72,43 | %60,32 | %33,42 | 0,5552 |
| HukukcuApp Gemma-2 | Fine-Tuned (Epoch 2.0) | %53,75 | %71,01 | %77,11 | %65,44 | %42,06 | 0,6178 |
| Net Gelişim (Tabana Göre) | — | +7,54 puan | +6,39 puan | +5,29 puan | +7,40 puan | +7,68 puan | +0,0675 |
pip install --upgrade transformers sentence-transformers torch
from sentence_transformers import SentenceTransformer
# Modeli yukle
model = SentenceTransformer("HukukcuApp/tr-legal-embedding-gemma-2")
# 1. Sorgu ve Emsal Karar Dokumanlari
queries = ["Taşınmaz satış vaadi sözleşmesinde zamanaşımı ve zilyetlik defi"]
documents = [
"Hukuki İlkeler: Satış vaadi sözleşmelerinde zamanaşımı 10 yıldır. Zilyetlik devredilmişse zamanaşımı defi dinlenmez.",
"Hukuki İlkeler: Karşılıksız çek keşide etme suçunda adli para cezası ve çek düzenleme yasağı."
]
# 2. Kodlama (Otomatik prompt ve normalizasyon)
q_emb = model.encode(queries, prompt_name="query", normalize_embeddings=True)
doc_embs = model.encode(documents, prompt_name="document", normalize_embeddings=True)
# 3. Benzerlik Hesabi
similarities = model.similarity(q_emb, doc_embs)
print("Benzerlik Skoru:", similarities[0].tolist())
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
model_id = "HukukcuApp/tr-legal-embedding-gemma-2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModel.from_pretrained(model_id).to("cuda" if torch.cuda.is_available() else "cpu")
model.eval()
def get_embedding(texts, prefix="", max_length=512):
prefixed = [f"{prefix}{t}" for t in texts]
inputs = tokenizer(prefixed, padding=True, truncation=True, max_length=max_length, return_tensors="pt").to(model.device)
with torch.no_grad():
out = model(**inputs)
mask = inputs["attention_mask"].unsqueeze(-1)
emb = torch.sum(out.last_hidden_state * mask, dim=1) / mask.sum(dim=1).clamp(min=1e-9)
return F.normalize(emb, p=2, dim=1)
# Sorgu: max_length=256
q_emb = get_embedding(
["Taşınmaz satış vaadinde zamanaşımı"],
prefix="task: search query | query: ",
max_length=256
)
# Dokuman: max_length=1024
doc_emb = get_embedding(
["Hukuki İlkeler: Satış vaadinde zamanaşımı 10 yıldır. Zilyetlik devrinde defi dinlenmez."],
prefix="title: none | text: ",
max_length=1024
)
score = torch.mm(q_emb, doc_emb.T)
print("Kosinüs Benzerliği:", score.item())
Bu model "Açık Ağırlıklı" olarak sunulmaktadır. Modelin eğitildiği 118.078 adet içtihadi veri kümesi ile test verileri; kişisel verilerin korunması (KVKK), gizlilik ilkeleri ve modelin tescilli veri boru hattı mimarisinin korunması amacıyla kamuya açık bir veri seti olarak paylaşılmamaktadır.
Bu model bir hukuk danışmanı veya nihai hukuki mütalaa organı değildir. Yalnızca emsal içtihat tespitini ve doktrinel araştırmayı hızlandırmak üzere tasarlanmış teknik bir semantik erişim aracıdır. Somut uyuşmazlıklarda nihai hukuki değerlendirme ve sorumluluk uygulayıcıya aittir.
Bu model, Google Gemma lisansı altındadır. Kullanım, dağıtım ve türev çalışmalar Google'ın resmi koşullarına tabidir: