turkish-bseby-classifier

Türkçe metinde bankanın veri envanterinde ve DLP hattında sorduğu üç soruyu cevaplayan çok etiketli sınıflandırıcı: bu metinde kişisel veri, hassas veri ya da sır kapsamında veri var mı? BSEBY md. 6/6 verilerin güvenlik sınıfının bu üç ölçüte bakılarak belirlenmesini, md. 14/9 ise dış ağa akan trafikte hassas veri ve sır kapsamındaki verinin sızdırılmasının engellenmesini ister. CPU'da metin başına ~32 ms.

Girdi : Demirtepe Yapı A.Ş.'nin nakdi kredi limiti 40 milyon TL'ye çıkarıldı
Çıktı : musteri_sirri                              (tüzel kişi: kişisel veri yok)

Girdi : müşteri kemoterapi gördüğü için kredi taksitlerinin ertelenmesini istedi
Çıktı : kisisel_veri, ozel_nitelikli, musteri_sirri

Girdi : internet şubesi parolanız: Kp!7731x, kimseyle paylaşmayın
Çıktı : kisisel_veri, hassas_veri

Girdi : core banking prod DB servis hesabı: svc_cb / Xr9!mQ2
Çıktı : banka_sirri

Girdi : abonenin son üç faturası ödenmemiş, hattı kısıtlanacak
Çıktı : kisisel_veri                               (banka dışı müşteri: sır değil)

Girdi : ihtiyaç kredisi faiz oranımız 1 Ekim itibarıyla %3,49'dur
Çıktı : (yok)

Kategori düzeyinde ayrım için: halilneed/turkish-kvkk-classifier · maskeleme için: halilneed/turkish-pii-detection · değerlendirme seti: halilneed/turkish-bseby-classification-benchmark (CC0)

Etiketler

Etiket Kapsam Dayanak
kisisel_veri belirli bir gerçek kişiye ait herhangi bir bilgi KVKK md. 3; BSEBY md. 6/3
ozel_nitelikli sağlık, biyometrik, din, ceza mahkûmiyeti, sendika... KVKK md. 6
hassas_veri değeri metinde bulunan kimlik/işlem doğrulama verisi: parola, PIN, OTP, CVV, tam kart numarası, güvenlik sorusu cevabı, oturum belirteci 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 bilgi Sır Yönetmeliği md. 4/3-4
banka_sirri bankanın kendisine ait, kamuya açıklanmamış iç bilgi: denetim bulgusu, iç limit ve politika, açıklanmamış sonuç, sistem bilgisi ve kimlik bilgileri Sır Yönetmeliği md. 5/5

Etiketsiz çıktı = kamuya açık bilgi, genel kural, duyuru, ürün anlatımı.

BSEBY: Bankaların Bilgi Sistemleri ve Elektronik Bankacılık Hizmetleri Hakkında Yönetmelik (RG 15/3/2020-31069). Sır Yönetmeliği: Sır Niteliğindeki Bilgilerin Paylaşılması Hakkında Yönetmelik (RG 4/6/2021-31501).

Yorum kararları

Yönetmelikler bu sınıfları işlevsel tanımlar; sınıflandırıcı için bir çizgi çekmek gerekti. Bankanızın varlık sınıflandırma kılavuzu (BSEBY md. 6/5) farklı çiziyorsa modeli o çizgiyle değerlendirin.

  • Hassas veride sahiplik: yönetmelik "müşteriye ait" der. Metinden parolanın müşteriye mi çalışana mı ait olduğu çoğu zaman anlaşılmadığı için, bir kişinin doğrulama verisi sahibine bakılmadan hassas_veridir. Sistem/servis hesabı parolası ve 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; maskeli değer (****) de değildir.
  • Anne kızlık soyadı kendi başına hassas_veri değildir (BSEBY md. 34/10 onun kimlik doğrulamada kullanılmasını yasaklar); metin onu açıkça doğrulama cevabı olarak kullanıyorsa işaretlenir.
  • Hesap tanımlayıcısı: IBAN, hesap no ve tam kart numarası, banka bağlamı açık olmasa da musteri_sirridir.
  • Banka dışı müşteri ilişkisi (e-ticaret, telekom, sigorta) kişisel veridir, müşteri sırrı değildir. Borç, taksit, icra tek başına bankacılık içeriği sayılmaz.
  • Banka sırrı: yönetmelik tanım vermez (md. 5/5: "yalnızca bankaya ait bilgiler"). Kurum açıkça banka dışıysa işaretlenmez; belirsizse banka varsayılır.
  • Tüzel kişi müşterinin bilgisi musteri_sirridir, kisisel_veri değildir.

Sonuçlar

v2 (14 Eki 2026). v1'in kartında yazdığım zayıf dilimler (tüzel kişi müşteriler, banka dışı kurumların iç bilgisi, kamuya açık bilgi, iki sırrın birlikte geçtiği metinler) için 263 yeni eğitim şablonu eklendi ve aynı ayarlarla yeniden eğitildi. v1 hâlâ revision="v1" ile duruyor.

İki bağımsız değerlendirme seti var, ikisi de halilneed/turkish-bseby-classification-benchmark'ta:

  1. Held-out (747, default, asıl sonuç): eğitim verisini görmeyen iki yazarın yalnızca etiket kılavuzundan yazdığı 750 metin, kör ikinci etiketleme, birebir uzlaşılan 747 metin. 2 Ekim'de, v2 şablonlarından önce ve onlardan bağımsız yazıldı.
  2. Zor set (202, hard): v1'in zayıf dilimlerini hedefleyen, eğitim şablonlarını görmeyen bir yazarın yazdığı 202 metin, kör ikinci etiketleme, 202'sinde de birebir uzlaşma. Dikkat: v2 şablonları aynı dilimleri hedefliyor; yazarlar farklı ama aynı dil modeli ve aynı kılavuz. Bu setteki v2 kazancını held-out'takinden daha temkinli okuyun.
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
Korunacak veri var mı — kesinlik / duyarlılık 0.985 / 0.990 0.981 / 0.995 0.864 / 0.993 0.933 / 0.986
Tüzel kişi dilimi tam doğru 0.859 (n=128) 0.953 0.771 (n=83) 0.964
İki sır birlikte, ikisi de doğru 20 / 27 25 / 27 18 / 35 27 / 35

Etiket bazında F1 (kesinlik / duyarlılık):

Held-out v1 Held-out v2 Zor set v1 Zor set v2
kisisel_veri 0.960 (0.96 / 0.96) 0.967 (0.95 / 0.98) 0.961 (0.96 / 0.96) 0.990 (1.00 / 0.98)
ozel_nitelikli 0.991 (0.98 / 1.00) 0.983 (0.97 / 1.00) 1.000 (n=7) 0.933 (n=7)
hassas_veri 0.873 (0.88 / 0.87) 0.881 (0.92 / 0.84) 0.857 (n=4) 0.857 (n=4)
musteri_sirri 0.950 (0.97 / 0.93) 0.964 (0.95 / 0.97) 0.893 (0.97 / 0.83) 0.964 (0.96 / 0.96)
banka_sirri 0.920 (0.89 / 0.95) 0.965 (0.96 / 0.97) 0.685 (0.56 / 0.88) 0.795 (0.76 / 0.83)

Şablon düzeyinde ayrık test (v2'nin kendi bölmesi, 478 şablondan 1.102 örnek; v1'in bölmesiyle aynı değil, doğrudan kıyaslanmaz): micro-F1 0.950, macro-F1 0.917, tam eşleşme 0.905, tüzel dilim 0.939 (n=82).

"Sır var mı" = musteri_sirri ya da banka_sirri. "Tüzel kişi dilimi" = altın etikette müşteri sırrı olup kişisel veri olmayan metinler; model ikisini de doğru vermişse doğru sayılır.

Uzlaşma oranı hakkında: iki etiketleme de aynı dil modeliyle (Claude) ve aynı kılavuzla yapıldı; held-out'ta %99,6, zor sette %100 birebir uzlaşma kılavuzun tutarlı uygulanabildiğini gösterir, iki bağımsız insanın uzlaşmasını değil. İnsan etiketleyiciyle ölçülmedi.

Kullanım

Etiket başına eşikler dev setinde ayarlandı (thresholds.json); kisisel_veri dışındaki dört etikette 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-bseby-classifier"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForSequenceClassification.from_pretrained(MODEL).eval()
esik = json.load(open(hf_hub_download(MODEL, "thresholds.json")))

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

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

CPU gecikmesi: Intel i5-12400F, 8 iş parçacığı, ortalama 207 karakterlik metin → batch 1: 32 ms/metin. 320 belirteçten uzun metin kesilir; uzun belgeleri parçalayıp parça etiketlerinin birleşimini alın.

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ç; checkpoint dev micro-F1'e göre seçildi. v1 ile aynı ayarlar
Veri 40.000 sentetik örnek, 4.786 şablondan: KVKK sınıflandırıcısının 3.276 şablonu (kişisel veri etiketleri deterministik türetildi, bankacılık bağlamı taşıyan 1.445'i ayrıca işaretlendi) + v1 için yazılmış 1.247 şablon + v2 için 263 şablon (141'i tüzel kişi müşteri; banka dışı kurum iç bilgisi, kamuya açık banka bilgisi, iki sır birlikte, çok alanlı kayıtlar); %15 etiketsiz
Bölme şablon düzeyinde hash ile ayrık train / dev / test

Sınırlar

  • Eğitim verisi ve değerlendirme setleri sentetiktir ve bir dil modeliyle üretilmiştir; gerçek banka metninde ölçmeden kritik bir hatta koymayın.
  • En zayıf etiket hâlâ hassas_veri (v2'de F1 0.88). v2 bu dilimi hedeflemedi: belirteç ve anahtar biçimlerinde yeni şablon yazılamadı. v1'in held-out'unda kaçanların çoğu belirteç ve anahtar biçimleri (JWT, özel anahtar bloğu, cihaz eşleştirme anahtarı, kişisel erişim belirteci) ile JSON gövdesindeki parola; yanlış alarmların çoğu maskeli kart numarası ve "sonu 7712 ile biten kartınız" türü bildirimler. Biçimi belli değerler (kart numarası, JWT, anahtar bloğu) için kural tabanlı bir denetimle birlikte kullanın.
  • banka_sirri kesinliği held-out'ta 0.89'dan 0.96'ya çıktı, ama zor sette hâlâ 0.76. v1'de yanlış alarmlar üç yerde toplanıyordu: tüzel müşteriye ait teknik metinler (SWIFT MT mesajı, mali tahlil özeti), açıkça banka dışı kurumların iç bilgisi (fabrika üretim raporu, dökümhane servis hesabı) ve ilan edilmiş ücret tarifesi. Açıklanmış ile açıklanmamış bilgi arasındaki ayrım çoğu zaman metnin dışındaki bir olguya bağlıdır; model bunu yalnızca metindeki ipuçlarından çıkarabilir.
  • musteri_sirri ile banka_sirrinin birlikte bulunduğu metinlerde v2 held-out'ta 27'nin 25'ini, zor sette 35'in 27'sini tam doğru veriyor (v1: 20/27, 18/35).
  • Model tek bir metin parçasına bakar; müşteri sırrı çoğu zaman alanların birleşiminden doğar (md. 4/4). Tablo ve kayıt düzeyinde sınıflandırmada alanları birlikte verin.
  • Etiketler bir sınıflandırma sinyalidir, hukuki nitelendirme değildir. BSEBY ve sır saklama yükümlülüğüne uyum kullananın sorumluluğundadır.

Tanıtım sayfası: halilneed.agency/models/turkish-bseby-classifier · Diğer Türkçe gizlilik modelleri: halilneed.agency/models

Downloads last month
20
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-bseby-classifier

Finetuned
(211)
this model

Dataset used to train halilneed/turkish-bseby-classifier

Collection including halilneed/turkish-bseby-classifier