Instructions to use halilneed/turkish-bseby-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use halilneed/turkish-bseby-classifier with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="halilneed/turkish-bseby-classifier")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("halilneed/turkish-bseby-classifier") model = AutoModelForSequenceClassification.from_pretrained("halilneed/turkish-bseby-classifier", device_map="auto") - Notebooks
- Google Colab
- Kaggle
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_verideğildir; maskeli değer (****) de değildir. - Anne kızlık soyadı kendi başına
hassas_verideğ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_verideğ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:
- 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ı. - 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_sirrikesinliğ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_sirriilebanka_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.
- Downloads last month
- 20
Model tree for halilneed/turkish-bseby-classifier
Base model
dbmdz/bert-base-turkish-cased