turkish-kvkk-classifier

Türkçe metinde hangi kişisel veri kategorilerinin bulunduğunu söyleyen çok etiketli sınıflandırıcı: 14 VERBİS kategorisi + KVKK md. 6'daki 10 özel nitelikli kategori. Maskeleyicinin önüne konur: sınıflandır → politika seç → maskele. CPU'da metin başına ~22 ms.

Girdi : hastanın böbrek yetmezliği ilerlemiş, eşi 0532 111 22 33'ten ulaşılabilir
Çıktı : kimlik, iletisim, saglik    → özel nitelikli: evet

Girdi : böbrek yetmezliği farkındalık haftası başladı
Çıktı : (yok)

Maskeleme modeliyle birlikte: halilneed/turkish-pii-detection · değerlendirme seti: halilneed/turkish-kvkk-classification-benchmark (CC0)

Etiketler

Genel (VERBİS) Özel nitelikli (KVKK md. 6)
kimlik iletisim lokasyon ozluk hukuki_islem musteri_islem fiziksel_mekan_guvenligi islem_guvenligi risk_yonetimi finans mesleki_deneyim pazarlama gorsel_isitsel arac saglik biyometrik genetik cinsel_hayat ceza_mahkumiyeti din_felsefi_inanc siyasi_dusunce irk_etnik dernek_vakif_sendika kilik_kiyafet

Kural: kategori, metin belirli bir kişiye (adı geçmese bile) ait o türden bilgi içeriyorsa işaretlenir. Genel bilgi, kural, duyuru, istatistik → etiket yok. "Hastanın böbrek yetmezliği ilerlemiş" → saglik; "böbrek yetmezliği farkındalık haftası" → yok.

Sonuçlar

İki ayrı değerlendirme seti:

  1. Bağımsız held-out (asıl sonuç): eğitim verisini hiç görmemiş bir yazarın yazdığı 1.125 metin, ikinci bir etiketleyici tarafından kör olarak yeniden etiketlendi. İki etiketleyicinin birebir uzlaştığı 987 metin altın set (uzlaşma %87,7; etiket başına Cohen kappa 0,84–1,00).
  2. Şablon düzeyinde ayrık test: eğitimde hiç kullanılmamış 333 şablondan 771 örnek.
Held-out (987) Ayrık test (771)
micro-F1 0.874 0.895
macro-F1 0.856 0.875
Özel nitelikli var mı — kesinlik 0.960 0.955
Özel nitelikli var mı — duyarlılık 0.884 0.955
Tam eşleşme (tüm etiketler doğru) 0.717 0.733

Etiket bazlı F1 (held-out): kimlik 0.97 · iletisim 0.97 · arac 0.96 · din_felsefi_inanc 0.93 · saglik 0.92 · kilik_kiyafet 0.91 · hukuki_islem 0.89 · dernek_vakif_sendika 0.89 · biyometrik 0.88 · cinsel_hayat 0.86 · finans 0.85 · siyasi_dusunce 0.85 · ozluk 0.84 · ceza_mahkumiyeti 0.84 · pazarlama 0.83 · fiziksel_mekan_guvenligi 0.83 · islem_guvenligi 0.83 · risk_yonetimi 0.82 · irk_etnik 0.82 · mesleki_deneyim 0.80 · genetik 0.79 · gorsel_isitsel 0.79 · musteri_islem 0.75 · lokasyon 0.74

Kullanım

Etiket başına eşikler dev setinde ayarlandı (thresholds.json); özel nitelikli etiketlerde eşik 0.5'i geçmez (duyarlılık öncelikli).

import json, torch
from huggingface_hub import hf_hub_download
from transformers import AutoModelForSequenceClassification, AutoTokenizer

MODEL = "halilneed/turkish-kvkk-classifier"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForSequenceClassification.from_pretrained(MODEL).eval()
esik = json.load(open(hf_hub_download(MODEL, "thresholds.json")))
OZEL = {"saglik", "biyometrik", "genetik", "cinsel_hayat", "ceza_mahkumiyeti", "din_felsefi_inanc",
        "siyasi_dusunce", "irk_etnik", "dernek_vakif_sendika", "kilik_kiyafet"}

def siniflandir(metin):
    with torch.inference_mode():
        p = torch.sigmoid(model(**tok(metin, return_tensors="pt", truncation=True, max_length=320)).logits)[0]
    etiketler = [model.config.id2label[i] for i, v in enumerate(p.tolist()) if v >= esik[model.config.id2label[i]]]
    return etiketler, bool(set(etiketler) & OZEL)

print(siniflandir("hastanın böbrek yetmezliği ilerlemiş, eşi 0532 111 22 33'ten ulaşılabilir"))

CPU gecikmesi: Intel i5-12400F, 8 iş parçacığı, ortalama 126 karakterlik metin → batch 1: 22 ms/metin.

Eğitim

Taban model dbmdz/bert-base-turkish-cased (BERTurk, 110M)
Yöntem çok etiketli sınıflandırma (sigmoid + BCE), 5 epoch, lr 3e-5, bf16, maks. 320 belirteç
Veri 36.000 sentetik örnek, 3.276 şablondan: maskeleme modelinin şablonları (PII yuvalarından deterministik kategori eşlemesi + şablon başına bağlamsal işaretleme) ve değer içermeyen bağlamsal cümleler; %21 tuzak (etiketsiz)
Bölme şablon düzeyinde hash ile ayrık train / dev / test

Sınırlar

  • Eğitim verisi sentetiktir; gerçek kurum metninde ölçmeden kritik bir hatta koymayın.
  • En zayıf etiketler lokasyon, musteri_islem, gorsel_isitsel: bağlamdan çıkarılan, sınırı bulanık kategoriler.
  • Sınıflandırıcı bir kategori sinyalidir, hukuki nitelendirme değildir. VERBİS envanteri ve KVKK uyumu kullananın sorumluluğundadır.
Downloads last month
-
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for halilneed/turkish-kvkk-classifier

Finetuned
(206)
this model

Dataset used to train halilneed/turkish-kvkk-classifier