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
| 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
| 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_verisayı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_verideğildir. Maskelenmiş bir değer (****) de değildir. - Anne kızlık soyadı. Tek başına
hassas_verideğ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_sirrisayı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_verideğil,musteri_sirrisayı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).
| Ölçüt | Held-out v1 | Held-out v2 | Zor set v1 | Zor set v2 |
|---|---|---|---|---|
| micro-F1 | 0.944 | 0.960 | 0.860 | 0.933 |
| macro-F1 | 0.939 | 0.952 | 0.879 | 0.908 |
| Tam eşleşme (tüm etiketler doğru) | 0.892 | 0.913 | 0.738 | 0.871 |
| Sır var mı: kesinlik / duyarlılık | 0.970 / 0.963 | 0.966 / 0.979 | 0.829 / 0.983 | 0.899 / 0.983 |
| Tüzel kişi dilimi tam doğru | 0.859 | 0.953 | 0.771 | 0.964 |
| İki sır birlikte, ikisi de doğru | 20 / 27 | 25 / 27 | 18 / 35 | 27 / 35 |
banka_sirri F1 (kesinlik) | 0.920 (0.888) | 0.965 (0.956) | 0.685 (0.561) | 0.795 (0.761) |
hassas_veri F1 | 0.873 | 0.881 | 0.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_sirrikesinliğ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_sirrihembanka_sirritaşı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.
Bağlantılar
- Model kartı ve ağırlıklar
- Değerlendirme seti
- Türkçe kişisel veri tespiti ve maskeleme
- Türkçe KVKK 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