Türkçe BSEBY sınıflandırıcısı

turkish-bseby-classifier, Türkçe metinde beş veri sınıfını işaretleyen çok etiketli bir modeldir: kişisel veri, özel nitelikli kişisel veri, kimlik doğrulama verisi (BSEBY’de hassas veri), müşteri sırrı ve banka sırrı. Bankaların veri envanteri ve veri sızıntısı önleme (DLP) süreçleri için yaptım.

Bankaların Bilgi Sistemleri ve Elektronik Bankacılık Hizmetleri Hakkında Yönetmelik (BSEBY), bankalardan verilerinin güvenlik sınıfını üç ölçüte göre belirlemesini ister: kişisel veri, hassas veri ve sır niteliğindeki veri (md. 6/6). Hassas verinin ve sırların dışarı giden trafikte sızmasının önlenmesini de ister (md. 14/9). Model masaüstü bir CPU’da metin başına yaklaşık 32 ms sürer.

Boyut
110M parametre
Temel model
dbmdz/bert-base-turkish-cased (BERTurk)
Etiketler
5, çok etiketli
Sonuç
v2: ayrılmış 747 metinde 0.960 micro-F1 (v1: 0.944); 202 metinlik zor sette 0.933 (v1: 0.860)
CPU hızı
metin başına yaklaşık 32 ms
Lisans
MIT

Örnekler

Model kartından altı metin ve aldıkları etiketler
Metin Etiketler Neden
Demirtepe Yapı A.Ş.'nin nakdi kredi limiti 40 milyon TL'ye çıkarıldı musteri_sirri Müşteri bir şirket, bu yüzden kişisel veri yok.
müşteri kemoterapi gördüğü için kredi taksitlerinin ertelenmesini istedi kisisel_veri, ozel_nitelikli, musteri_sirri Bir banka müşterisinin sağlık verisi.
internet şubesi parolanız: Kp!7731x, kimseyle paylaşmayın kisisel_veri, hassas_veri Bir kişinin parolası, değeri metnin içinde.
core banking prod DB servis hesabı: svc_cb / Xr9!mQ2 banka_sirri Sistem kimlik bilgisi bir kişiye değil, bankaya aittir.
abonenin son üç faturası ödenmemiş, hattı kısıtlanacak kisisel_veri Banka müşterisi değil, telekom müşterisi; bu yüzden müşteri sırrı değil.
ihtiyaç kredisi faiz oranımız 1 Ekim itibarıyla %3,49'dur etiket yok Yayımlanmış bir oran.

Etiketler

Beş etiket, kapsadıkları ve sınıfın dayanağı
Etiket Kapsam Dayanak
kisisel_veri belirli bir gerçek kişiye ilişkin her türlü bilgi KVKK md. 3; BSEBY md. 6/3
ozel_nitelikli sağlık, biyometrik veri, din, ceza mahkûmiyeti, sendika üyeliği ve diğer özel nitelikli kişisel veriler KVKK md. 6
hassas_veri değeri metinde geçen kimlik doğrulama verisi: parola, PIN, tek kullanımlık şifre, CVV, tam kart numarası, güvenlik sorusunun cevabı, oturum anahtarı BSEBY md. 3/1-o
musteri_sirri belirli bir gerçek ya da tüzel kişinin bir bankayla ilişkisinden doğan bilgi; müşteri olduğunu gösteren her şey dahil Sır Yönetmeliği md. 4/3-4
banka_sirri bankanın açıklanmamış kendi bilgisi: denetim bulguları, iç limitler ve politikalar, yayımlanmamış sonuçlar, sistem bilgileri ve sistem kimlik bilgileri Sır Yönetmeliği md. 5/5

Etiket yoksa metin kamuya açık bir bilgi, genel bir kural, bir duyuru ya da bir ürün tanımıdır.

KVKK, Kişisel Verilerin Korunması Kanunu’dur. BSEBY, Bankaların Bilgi Sistemleri ve Elektronik Bankacılık Hizmetleri Hakkında Yönetmelik’tir (Resmî Gazete , sayı 31069). Sır Yönetmeliği, Sır Niteliğindeki Bilgilerin Paylaşılmasına İlişkin Yönetmelik’tir (Resmî Gazete , sayı 31501).

Sınırları nereden çizdim

Yönetmelikler her sınıfın neye hizmet ettiğini söylüyor ama sınırdaki durumları çözmüyor, bu yüzden sınırları kendim çizmem gerekti. Bankanızın varlık sınıflandırma rehberi (BSEBY md. 6/5) bu sınırları farklı çiziyorsa, modeli o rehbere göre değerlendirin.

  • Kimlik doğrulama verisi kimin. Yönetmelik “müşteriye ait” diyor. Bir parolanın müşteriye mi çalışana mı ait olduğu metinden çoğu zaman anlaşılmaz, bu yüzden bir kişinin kimlik doğrulama verisi, sahibi kim olursa olsun hassas_veri sayılır. Bir sistem ya da servis hesabının parolası ve bir API anahtarı kişiye değil kuruma aittir: banka_sirri.
  • Değer metinde olmalı. “müşteri şifresini dolandırıcıya vermiş” hassas_veri değildir. Maskelenmiş bir değer (****) de değildir.
  • Anne kızlık soyadı. Tek başına hassas_veri değildir (BSEBY md. 34/10 kimlik doğrulamada kullanılmasını yasaklar). Metin onu açıkça bir kimlik doğrulama cevabı olarak kullanıyorsa işaretlenir.
  • Hesap tanımlayıcıları. IBAN, hesap numarası ve tam kart numarası, bankacılık bağlamı açık olmasa da musteri_sirri sayılır.
  • Başka işletmelerin müşterileri. Bankacılık dışındaki bir müşteri ilişkisi (e-ticaret, telekom, sigorta) müşteri sırrı değil, kişisel veridir. Borç, taksit ve icra takibi tek başına bankacılık içeriği sayılmaz.
  • Banka sırrı. Sır Yönetmeliği yalnızca “sadece bankaya ait bilgi” der (md. 5/5) ve terimi daha fazla tanımlamaz. Kurum açıkça banka değilse etiket kullanılmaz. Belirsizse banka olduğu varsayılır.
  • Tüzel kişiler. Tüzel kişi bir müşteriye ilişkin bilgi kisisel_veri değil, musteri_sirri sayılır.

Sonuçlar

Sürüm 2 (14 Ekim 2026), ilk sürümün sayfasında yazdığım zayıf noktalar için 263 eğitim şablonu ekliyor: tüzel kişi müşteriler, açıkça banka dışı kurumların iç bilgisi, bankanın kamuya açık bilgisi ve iki sırrın birlikte geçtiği metinler. Ayarlar aynı. v1 revision="v1" ile duruyor.

İki set de halilneed/turkish-bseby-classification-benchmark içinde. Held-out set (747 metin) 2 Ekim’de, v2 şablonlarından önce ve onlardan bağımsız yazıldı; asıl sonuç odur. Zor set (202 metin, hard yapılandırması) v2 şablonlarıyla aynı zayıf noktaları hedefliyor; yazarı şablonları görmedi ama aynı dil modelini ve kılavuzu kullandı. v2’nin oradaki kazancını daha temkinli okuyun.

747 metinlik held-out sette turkish-bseby-classifier v2, 0.960 micro-F1 ve 0.952 macro-F1 alıyor (v1: 0.944 ve 0.939).

v1 ve v2, iki bağımsız sette. Held-out: 747 metin; zor set: 202 metin
ÖlçütHeld-out v1Held-out v2Zor set v1Zor set v2
micro-F10.9440.9600.8600.933
macro-F10.9390.9520.8790.908
Tam eşleşme (tüm etiketler doğru)0.8920.9130.7380.871
Sır var mı: kesinlik / duyarlılık0.970 / 0.9630.966 / 0.9790.829 / 0.9830.899 / 0.983
Tüzel kişi dilimi tam doğru0.8590.9530.7710.964
İki sır birlikte, ikisi de doğru20 / 2725 / 2718 / 3527 / 35
banka_sirri F1 (kesinlik)0.920 (0.888)0.965 (0.956)0.685 (0.561)0.795 (0.761)
hassas_veri F10.8730.8810.857 (n=4)0.857 (n=4)

“Sır var mı”, musteri_sirri ya da banka_sirri demektir. Tüzel kişi dilimi, altın etiketinde müşteri sırrı olup kişisel veri olmayan metinlerdir; tahmin ikisini de doğru verirse doğru sayılır. v2’nin kendi şablon-ayrık test bölmesinde (1.102 örnek) micro-F1 0.950.

Metinler ve iki etiketleme aynı dil modeliyle (Claude) ve aynı kılavuzla üretildi; satır satır insan doğrulaması yok. Birebir uzlaşma held-out’ta %99,6, zor sette %100. Bu, kılavuzun tutarlı uygulanabildiğini gösterir; iki bağımsız insanın uzlaşması değildir.

Python ile hızlı başlangıç

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

MODEL = "halilneed/turkish-bseby-classifier"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForSequenceClassification.from_pretrained(MODEL).eval()
thresholds = json.load(open(hf_hub_download(MODEL, "thresholds.json")))

def classify(text):
    with torch.inference_mode():
        p = torch.sigmoid(model(**tok(text, return_tensors="pt", truncation=True, max_length=320)).logits)[0]
    return [model.config.id2label[i] for i, v in enumerate(p.tolist()) if v >= thresholds[model.config.id2label[i]]]

print(classify("Demirtepe Yapı A.Ş.'nin nakdi kredi limiti 40 milyon TL'ye çıkarıldı"))
# ['musteri_sirri']

Etiket bazındaki eşikler geliştirme setinde ayarlandı ve thresholds.json içinde gelir. kisisel_veri dışındaki dört etikette eşik hiçbir zaman 0.5’in üstüne çıkmaz; bu duyarlılığı (recall) öne alır.

Ölçülen hız: ortalama 207 karakterlik metinlerde, sekiz iş parçacıklı bir Intel i5-12400F üzerinde, bir metinlik partilerle metin başına 32 ms. 320 token’ı aşan kısım kesilir; uzun belgeleri bölün ve etiketlerin birleşimini alın.

Eğitim

  • Temel model. dbmdz/bert-base-turkish-cased (BERTurk, 110M).
  • Yöntem. Çok etiketli sınıflandırma, sigmoid ve ikili çapraz entropi, 5 epoch, öğrenme oranı 3e-5, bfloat16, en fazla 320 token. Kontrol noktasını geliştirme setindeki micro-F1’e göre seçtim. v1 ve v2’de ayarlar aynı.
  • Veri. 4.786 şablondan 40.000 sentetik örnek (v1: 4.523; v2 tüzel kişi müşteriler, banka dışı kurumlar, kamuya açık banka bilgisi ve iki sırrın birlikte geçtiği metinler için 263 şablon ekliyor): KVKK sınıflandırıcısının 3.276 şablonu (kişisel veri etiketleri deterministik olarak türetildi, 1.445’i ayrıca bankacılık bağlamı olarak işaretlendi) ve bu model için yazdığım 1.247 şablon: gerçek ve tüzel kişi müşteriler, iç yönetim ve risk, BT ve güvenlik, kimlik doğrulama verisi ve tuzaklar. Örneklerin %16’sında etiket yok.
  • Bölme. Eğitim, geliştirme ve test setleri şablon özetine (hash) göre ayrıldı.

Sınırlar

  • Eğitim verisi ve değerlendirme setleri sentetiktir ve bir dil modeliyle üretildi. Kritik bir sürece almadan önce modeli gerçek banka metinlerinde ölçün.
  • En zayıf etiket hâlâ hassas_veri (v2: F1 0.881). v2 bu etiketi hedeflemedi: token ve anahtar biçimleri için yeni şablon yazılamadı. v1’de ayrılmış sette kaçırdıklarının çoğu token ve anahtar biçimleri (JWT, özel anahtar bloğu, cihaz eşleştirme anahtarı, kişisel erişim token’ı) ve bir JSON gövdesindeki parolalar. Yanlış alarmlarının çoğu maskelenmiş kart numaraları ve “sonu 7712 ile biten kartınız” gibi bildirimler. Biçimi sabit değerler için (kart numarası, JWT, anahtar bloğu) modeli kural tabanlı bir kontrolle birlikte kullanın.
  • banka_sirri kesinliği held-out’ta 0.888’den 0.956’ya çıktı, zor sette 0.761. v1’de yanlış alarmlar üç yerde toplanıyordu: kurumsal bir müşteriye ait teknik metinler (SWIFT MT mesajı, finansal analiz özeti), açıkça banka olmayan kurumların iç bilgileri (bir fabrikanın üretim raporu, bir dökümhanenin servis hesabı) ve yayımlanmış ücret tarifeleri. Bir bilginin açıklanıp açıklanmadığı çoğu zaman metnin dışındaki bir olguya bağlıdır; model bunu yalnızca metindeki ipuçlarından çıkarabilir.
  • Hem musteri_sirri hem banka_sirri taşıyan metinlerde v2 ayrılmış sette 27’nin 25’ini, zor sette 35’in 27’sini tam doğru veriyor (v1: 20 ve 18).
  • Model her seferinde tek bir metin parçasına bakar. Müşteri sırrı çoğu zaman alanların birleşiminden doğar (Sır Yönetmeliği md. 4/4). Tablo ya da kayıt sınıflandırırken alanları birlikte verin.
  • Etiketler hukuki bir değerlendirme değil, bir sınıflandırma sinyalidir. BSEBY’ye ve sır saklama yükümlülüğüne uyum kullanıcının sorumluluğunda kalır.

Türkçe BSEBY veri sınıflandırma modeli

turkish-bseby-classifier, Türkçe bir metinde kişisel veri, hassas veri ya da sır kapsamındaki veri (müşteri sırrı, banka sırrı) bulunup bulunmadığını belirleyen çok etiketli bir sınıflandırıcıdır. Bankaların veri envanteri ve veri sızıntısı önleme (DLP) süreçleri için tasarlanmıştır.

Eğitim verisine bakılmadan yazılmış 747 metinlik bağımsız sette v2’de micro-F1 0.960, macro-F1 0.952’dir (v1: 0.944, 0.939); 202 metinlik zor sette 0.933. CPU’da metin başına yaklaşık 32 ms sürer. Etiketler yalnızca bir sınıflandırma tahminidir, hukuki nitelendirme değildir.