Türkçe KVKK sınıflandırıcısı
turkish-kvkk-classifier, Türkçe bir metinde hangi tür kişisel verilerin bulunduğunu söyleyen çok etiketli bir model. 24 kategoriyi kapsar: Veri Sorumluları Sicil Bilgi Sistemi VERBİS'te kullanılan 14 kategori ve 6698 sayılı Kişisel Verilerin Korunması Kanunu'nun (KVKK) 6. maddesindeki 10 özel nitelikli kişisel veri kategorisi. Bir masaüstü CPU'da metin başına yaklaşık 22 ms sürer.
- Boyut
- 110M parametre
- Temel model
dbmdz/bert-base-turkish-cased(BERTurk)- Etiketler
- 24, çok etiketli
- Sonuç
- Eğitimde kullanılmayan 987 metinde 0.874 micro-F1
- CPU hızı
- metin başına yaklaşık 22 ms
- Lisans
- MIT
Ne yapar
- 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ı
- etiket yok
Bir kategori yalnızca metin belirli bir kişiye ait o türden bir bilgi içerdiğinde işaretlenir; kişinin adı geçmese bile, “hasta” ya da “müşteri” gibi. Genel bilgiler, kurallar, duyurular ve istatistikler etiket almaz. İlk örnekte bir hastanın böbrek yetmezliği sağlık verisidir. İkincisinde böbrek yetmezliği farkındalık haftası kimseyle ilgili değildir.
Sınıflandırıcı maskeleme modelinin önünde çalışmak için tasarlandı: metni sınıflandırın, bir maskeleme politikası seçin, sonra maskeleyin.
Etiketler
| Etiket | Kapsam | F1 |
|---|---|---|
| Genel kategoriler (VERBİS) | ||
kimlik |
Kimlik: ad soyad, T.C. kimlik numarası (TCKN), doğum bilgileri, yaş, cinsiyet, uyruk, medeni durum, kimlik belgesi numaraları, imza | 0.97 |
iletisim |
İletişim: telefon, e-posta, posta adresi | 0.97 |
lokasyon |
Lokasyon: kişinin konumu, nerede bulunduğu ya da nereye gittiği, güzergâhı | 0.74 |
ozluk |
Özlük: çalışanın özlük kaydı, hizmet dökümü, bordro, izin, disiplin, SGK bildirgesi | 0.84 |
hukuki_islem |
Hukuki İşlem: dava, icra takibi, haciz, tebligat, vekâletname, ihtarname, arabuluculuk | 0.89 |
musteri_islem |
Müşteri İşlem: sipariş, fatura, abonelik, talep ya da şikâyet, poliçe ya da sözleşme işlemi | 0.75 |
fiziksel_mekan_guvenligi |
Fiziksel Mekân Güvenliği: bina giriş çıkışları, turnike, ziyaretçi kaydı, güvenlik kamerası | 0.83 |
islem_guvenligi |
İşlem Güvenliği: IP adresi, log, cihaz kimliği, kullanıcı adı, parola ya da PIN, oturum kaydı | 0.83 |
risk_yonetimi |
Risk Yönetimi: kredi notu, risk skoru, şüpheli işlem, kara liste, MASAK (Mali Suçları Araştırma Kurulu) | 0.82 |
finans |
Finans: hesap, IBAN, kart, bakiye, borç, gelir ya da maaş, vergi numarası, kripto varlık | 0.85 |
mesleki_deneyim |
Mesleki Deneyim: işyeri, meslek, pozisyon, diploma, sertifika, referans | 0.80 |
pazarlama |
Pazarlama: alışveriş alışkanlıkları, tercihler, iletişim izni, anket cevapları, çerez ya da segment verisi | 0.83 |
gorsel_isitsel |
Görsel ve İşitsel Kayıtlar: kişinin fotoğrafı, ses kaydı, videosu, çağrı kaydı | 0.79 |
arac |
Araç bilgileri: plaka, şasi numarası, motor numarası, ruhsat | 0.96 |
| Özel nitelikli kişisel veriler (KVKK md. 6) | ||
saglik |
Sağlık Bilgileri: hastalık, teşhis, tedavi, ilaç, engellilik, kan grubu, gebelik | 0.92 |
biyometrik |
Biyometrik Veri: parmak izi, yüz tanıma, iris ya da retina, ses izi | 0.88 |
genetik |
Genetik Veri: genetik test, DNA, taşıyıcılık durumu | 0.79 |
cinsel_hayat |
Cinsel Hayat: cinsel yönelim, cinsel hayata ilişkin bilgiler | 0.86 |
ceza_mahkumiyeti |
Ceza Mahkûmiyeti ve Güvenlik Tedbirleri: geçmiş suçlar, adli sicil kaydı, mahkûmiyet, güvenlik tedbiri | 0.84 |
din_felsefi_inanc |
Felsefi İnanç, Din, Mezhep ve Diğer İnançlar: din, mezhep, inanç, dini pratikler | 0.93 |
siyasi_dusunce |
Siyasi Düşünce: parti üyeliği ya da tercihi, siyasi görüş, bir eyleme katılım | 0.85 |
irk_etnik |
Irk ve Etnik Köken: ırk, etnik köken | 0.82 |
dernek_vakif_sendika |
Dernek, Vakıf ve Sendika Üyeliği: bir derneğe, vakfa ya da sendikaya üyelik | 0.89 |
kilik_kiyafet |
Kılık ve Kıyafet: başörtüsü, dini ya da kültürel kıyafet tercihi | 0.91 |
Sonuçlar
İki test seti var. Ana set, eğitimde kullanılmayan bağımsız bir set: eğitim verisine bakılmadan yazılmış 1.125 metin, ikinci kez ve kör olarak yeniden etiketlendi. İki etiketlemenin birebir örtüştüğü 987 metin altın standart seti oluşturuyor (%87.7 tam uyum, etiket başına Cohen's kappa 0.84 ile 1.00 arasında). İkinci set, eğitimde hiç kullanılmamış 333 şablondan gelen 771 örneklik, şablon bazında ayrık bir test. 987 metinlik altın sette turkish-kvkk-classifier 0.874 micro-F1 ve 0.856 macro-F1 alıyor.
| Metrik | Bağımsız set 987 metin | Ayrık test 771 örnek |
|---|---|---|
| micro-F1 | 0.874 | 0.895 |
| macro-F1 | 0.856 | 0.875 |
| Özel nitelikli veri var mı: kesinlik | 0.960 | 0.955 |
| Özel nitelikli veri var mı: duyarlılık (recall) | 0.884 | 0.955 |
| Tam eşleşme (tüm etiketler doğru) | 0.717 | 0.733 |
Micro-F1, tüm etiket kararları bir araya toplanarak hesaplanan F1'dir. Macro-F1, etiket başına F1 skorlarının ağırlıksız ortalamasıdır.
Bağımsız setteki metinler ve iki etiketleme turu bir dil modeliyle üretildi ve otomatik olarak kontrol edildi. Bir insan tarafından satır satır doğrulanmadı.
Python ile hızlı başlangıç
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()
thresholds = json.load(open(hf_hub_download(MODEL, "thresholds.json")))
SPECIAL = {"saglik", "biyometrik", "genetik", "cinsel_hayat", "ceza_mahkumiyeti", "din_felsefi_inanc",
"siyasi_dusunce", "irk_etnik", "dernek_vakif_sendika", "kilik_kiyafet"}
def classify(text):
with torch.inference_mode():
p = torch.sigmoid(model(**tok(text, return_tensors="pt", truncation=True, max_length=320)).logits)[0]
labels = [model.config.id2label[i] for i, v in enumerate(p.tolist()) if v >= thresholds[model.config.id2label[i]]]
return labels, bool(set(labels) & SPECIAL)
print(classify("hastanın böbrek yetmezliği ilerlemiş, eşi 0532 111 22 33'ten ulaşılabilir"))
Etiket başına eşikler dev setinde ayarlandı ve thresholds.json içinde gelir. Özel nitelikli kategorilerde eşik hiçbir zaman 0.5'in üstüne çıkmaz; bu da duyarlılığı (recall) öne alır.
Ölçülen hız: Intel i5-12400F üzerinde sekiz thread ve batch boyutu bir ile, ortalama 126 karakterlik metinlerde metin başına 22 ms.
Eğitim
- Temel model.
dbmdz/bert-base-turkish-cased(BERTurk, 110M). - Yöntem. Çok etiketli sınıflandırma, ikili çapraz entropi ile sigmoid, 5 epoch, öğrenme oranı 3e-5, bfloat16, en fazla 320 token.
- Veri. 3.276 şablondan 36.000 sentetik örnek. Çoğu maskeleme modelinin şablonlarıdır: her kişisel veri alanı sabit bir kuralla bir kategoriye eşlenir, her şablon ayrıca bağlamının eklediği kategorilerle de işaretlenir. Geri kalanı hiç değer içermeyen bağlamsal cümlelerdir. Örneklerin %21'i tuzaktır, yani hiç etiket almaması gereken metinlerdir.
- Bölme. Eğitim, dev ve test setleri şablon hash'ine göre ayrıldı.
Sınırlar
- Eğitim verisi sentetik. Model kritik bir akışa girmeden önce onu kendi kurumunuzun metinlerinde ölçün.
- En zayıf etiketler
lokasyon(F1 0.74),musteri_islem(0.75) vegorsel_isitsel(0.79). Üçü de bağlamdan çıkarılıyor ve keskin bir sınırları yok.genetikde 0.79 alıyor. - “Burada özel nitelikli kişisel veri var mı?” sorusu için bağımsız setteki duyarlılık (recall) 0.884; yani bu tür metinlerin kabaca dokuzda biri kaçıyor.
- Çıktı bir kategori sinyalidir, hukuki bir değerlendirme değildir. VERBİS envanteri ve KVKK'ya uyum kullanıcının sorumluluğunda kalır.
Türkçe KVKK kategori sınıflandırıcısı
turkish-kvkk-classifier, Türkçe bir metinde hangi kişisel veri kategorilerinin bulunduğunu belirleyen çok etiketli bir sınıflandırıcıdır: 14 VERBİS kategorisi ve KVKK md. 6’daki 10 özel nitelikli veri kategorisi. Maskeleme modelinden önce çalıştırılır: metin önce sınıflandırılır, sonuca göre maskeleme politikası seçilir, ardından metin maskelenir.
Eğitim verisine bakılmadan yazılmış 987 metinlik bağımsız sette micro-F1 0.874, macro-F1 0.856’dır. CPU’da metin başına yaklaşık 22 ms sürer. Çıktı yalnızca bir kategori tahminidir, hukuki nitelendirme değildir.
Bağlantılar
- Model kartı ve ağırlıklar
- Değerlendirme seti
- Türkçe kişisel veri tespiti ve maskeleme
- Türkçe BSEBY sınıflandırıcısı
- Türkçe prompt injection sınıflandırıcısı
- Kişisel veri ve yapay zekâ: metin bir modele ulaşmadan önce neyin maskelenip neyin içeride tutulacağını anlatan kısa rehber
- Tüm modeller