Instructions to use halilneed/turkish-kvkk-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use halilneed/turkish-kvkk-classifier with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="halilneed/turkish-kvkk-classifier")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("halilneed/turkish-kvkk-classifier") model = AutoModelForSequenceClassification.from_pretrained("halilneed/turkish-kvkk-classifier", device_map="auto") - Notebooks
- Google Colab
- Kaggle
turkish-kvkk-classifier
What is this model? turkish-kvkk-classifier is a multi-label Turkish text classifier that detects which of 14 VERBİS personal-data categories and 10 KVKK special categories (art. 6) a text contains.
EN: Turkish KVKK personal-data category classifier — multi-label classifier for 14 VERBİS personal-data categories + 10 special categories (KVKK art. 6); ~22 ms/text on CPU. TR: Türkçe KVKK kişisel veri kategori sınıflandırıcısı — 14 VERBİS kategorisi + 10 özel nitelikli kategori. Model page & setup help / Model sayfası ve kurulum desteği: halilneed.agency/models/turkish-kvkk-classifier
Türkçe metinde hangi kişisel veri kategorilerinin bulunduğunu söyleyen çok etiketli sınıflandırıcı: 14 VERBİS kategorisi + KVKK md. 6'daki 10 özel nitelikli kategori. Maskeleyicinin önüne konur: sınıflandır → politika seç → maskele. CPU'da metin başına ~22 ms.
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ı : (yok)
Maskeleme modeliyle birlikte: halilneed/turkish-pii-detection · değerlendirme seti: halilneed/turkish-kvkk-classification-benchmark (CC0) · eğitim verisi: halilneed/turkish-kvkk-classification-train (CC-BY-4.0)
Bankacılık veri sınıfı (hassas veri, müşteri sırrı, banka sırrı — BSEBY): halilneed/turkish-bseby-classifier
Tanıtım sayfası: halilneed.agency/models/turkish-kvkk-classifier · Ekipler için rehber: Kişisel veri ve yapay zekâ (metni bir modele göndermeden önce neyi maskelemeli, neyi içeride tutmalı)
Etiketler
| Genel (VERBİS) | Özel nitelikli (KVKK md. 6) |
|---|---|
kimlik iletisim lokasyon ozluk hukuki_islem musteri_islem fiziksel_mekan_guvenligi islem_guvenligi risk_yonetimi finans mesleki_deneyim pazarlama gorsel_isitsel arac |
saglik biyometrik genetik cinsel_hayat ceza_mahkumiyeti din_felsefi_inanc siyasi_dusunce irk_etnik dernek_vakif_sendika kilik_kiyafet |
Kural: kategori, metin belirli bir kişiye (adı geçmese bile) ait o türden bilgi içeriyorsa işaretlenir. Genel bilgi, kural, duyuru, istatistik → etiket yok. "Hastanın böbrek yetmezliği ilerlemiş" → saglik; "böbrek yetmezliği farkındalık haftası" → yok.
Sonuçlar
v1.1 (15 Eki 2026): ağırlıklar aynı, yalnızca özel nitelikli etiketlerin eşikleri değişti (aşağıda Sürümler). v1'in eşikleri revision="v1" ile duruyor.
Üç değerlendirme seti. İlk ikisi halilneed/turkish-kvkk-classification-benchmark'ta, üçüncüsü eğitim verisinin test bölmesi (halilneed/turkish-kvkk-classification-train):
- Bağımsız held-out (987,
default, asıl sonuç): eğitim verisini hiç görmemiş bir yazarın yazdığı 1.125 metin, ikinci bir etiketleyici tarafından kör olarak yeniden etiketlendi. İki etiketleyicinin birebir uzlaştığı 987 metin altın set (uzlaşma %87,7; etiket başına Cohen kappa 0,84–1,00). - Zor set (317,
hard, 15 Eki 2026): v1'in zayıf etiketlerine (özel nitelikli kategoriler, lokasyon, müşteri işlem, görsel-işitsel, mesleki deneyim) yönelik, eğitim şablonlarını görmeyen iki yazarın yazdığı 320 metin; kör ikinci etiketleme, birebir uzlaşılan 317 metin. %63'ü form, log, CRM notu gibi yapısal kayıt. Bu modelin eğitiminden sonra yazıldı, eğitimde kullanılmadı. - Şablon düzeyinde ayrık test (771): eğitimde hiç kullanılmamış 333 şablondan 771 örnek.
| Held-out v1 | Held-out v1.1 | Zor set v1 | Zor set v1.1 | Ayrık test v1 | Ayrık test v1.1 | |
|---|---|---|---|---|---|---|
| micro-F1 | 0.874 | 0.878 | 0.901 | 0.902 | 0.895 | 0.895 |
| macro-F1 | 0.856 | 0.863 | 0.851 | 0.853 | 0.875 | 0.876 |
| Özel nitelikli var mı — kesinlik | 0.960 | 0.959 | 0.945 | 0.926 | 0.955 | 0.956 |
| Özel nitelikli var mı — duyarlılık | 0.884 | 0.913 | 0.796 | 0.822 | 0.955 | 0.972 |
| Tam eşleşme (tüm etiketler doğru) | 0.717 | 0.721 | 0.656 | 0.656 | 0.733 | 0.733 |
Etiket bazlı F1 (held-out, v1.1): kimlik 0.97 · iletisim 0.97 · arac 0.95 · kilik_kiyafet 0.95 · saglik 0.93 · din_felsefi_inanc 0.93 · biyometrik 0.92 · siyasi_dusunce 0.91 · hukuki_islem 0.89 · dernek_vakif_sendika 0.89 · cinsel_hayat 0.86 · ceza_mahkumiyeti 0.86 · finans 0.85 · ozluk 0.84 · fiziksel_mekan_guvenligi 0.83 · pazarlama 0.83 · islem_guvenligi 0.82 · risk_yonetimi 0.82 · irk_etnik 0.82 · mesleki_deneyim 0.80 · gorsel_isitsel 0.79 · genetik 0.79 · musteri_islem 0.75 · lokasyon 0.74
Etiket bazlı F1 (zor set, v1.1): kimlik 0.99 · risk_yonetimi 0.95 · irk_etnik 0.95 · lokasyon 0.95 · genetik 0.92 · hukuki_islem 0.92 · ozluk 0.91 · finans 0.91 · fiziksel_mekan_guvenligi 0.91 · siyasi_dusunce 0.91 · iletisim 0.90 · saglik 0.90 · musteri_islem 0.89 · biyometrik 0.87 · dernek_vakif_sendika 0.86 · arac 0.84 · islem_guvenligi 0.80 · mesleki_deneyim 0.78 · gorsel_isitsel 0.78 · ceza_mahkumiyeti 0.77 · din_felsefi_inanc 0.76 · kilik_kiyafet 0.76 · pazarlama 0.71 · cinsel_hayat 0.54
Zor set hakkında: iki etiketleme de aynı dil modeliyle ve aynı kılavuzla yapıldı; %99,1 birebir uzlaşma kılavuzun tutarlı uygulanabildiğini gösterir, iki bağımsız insanın uzlaşmasını değil.
Kullanım
Etiket başına eşikler dev setinde ayarlandı (thresholds.json). Özel nitelikli etiketlerde eşik 0.5'i geçmez ve dev F1'i eşit olan eşiklerden en düşüğü seçilir (duyarlılık öncelikli).
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()
esik = json.load(open(hf_hub_download(MODEL, "thresholds.json")))
OZEL = {"saglik", "biyometrik", "genetik", "cinsel_hayat", "ceza_mahkumiyeti", "din_felsefi_inanc",
"siyasi_dusunce", "irk_etnik", "dernek_vakif_sendika", "kilik_kiyafet"}
def siniflandir(metin):
with torch.inference_mode():
p = torch.sigmoid(model(**tok(metin, return_tensors="pt", truncation=True, max_length=320)).logits)[0]
etiketler = [model.config.id2label[i] for i, v in enumerate(p.tolist()) if v >= esik[model.config.id2label[i]]]
return etiketler, bool(set(etiketler) & OZEL)
print(siniflandir("hastanın böbrek yetmezliği ilerlemiş, eşi 0532 111 22 33'ten ulaşılabilir"))
v1 eşikleriyle birebir aynı davranış için: hf_hub_download(MODEL, "thresholds.json", revision="v1").
CPU gecikmesi: Intel i5-12400F, 8 iş parçacığı, ortalama 126 karakterlik metin → batch 1: 22 ms/metin.
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ç |
| Veri | 36.000 sentetik örnek, 3.276 şablondan: maskeleme modelinin şablonları (PII yuvalarından deterministik kategori eşlemesi + şablon başına bağlamsal işaretleme) ve değer içermeyen bağlamsal cümleler; %21 tuzak (etiketsiz). Yayında: halilneed/turkish-kvkk-classification-train (CC-BY-4.0) |
| Bölme | şablon düzeyinde hash ile ayrık train / dev / test |
Sürümler
- v1.1 (15 Eki 2026, bu sürüm): ağırlıklar v1 ile aynı. Özel nitelikli etiketlerde eşik ayarı, dev F1'i eşit olan eşikler arasında 0,5'e en yakın olanı seçiyordu; bu, kartın "duyarlılık öncelikli" ilkesiyle çelişiyordu. Kural en düşük eşiği seçecek şekilde değiştirildi ve eşikler yine yalnızca dev setinde yeniden ayarlandı. Değişen eşikler: saglik 0,5 → 0,35 · biyometrik 0,5 → 0,2 · cinsel_hayat 0,5 → 0,45 · ceza_mahkumiyeti 0,5 → 0,3 · siyasi_dusunce 0,4 → 0,2 · irk_etnik 0,5 → 0,35 · dernek_vakif_sendika 0,25 → 0,15 · kilik_kiyafet 0,15 → 0,1. Genel etiketlerin eşikleri değişmedi. Sorun, aşağıdaki v2 denemesinin held-out sonuçları incelenirken fark edildi; bu yüzden held-out'taki kazancı (özel nitelikli duyarlılık 0,884 → 0,913) tamamen bağımsız bir ölçüm saymayın. Aynı tarifle eğitilmiş iki ayrı tohumda da kural held-out duyarlılığını yükseltti ama daha az (0,927 → 0,935 ve 0,927 → 0,944) ve kesinlikten yaklaşık 1 puan götürdü; bu modelde kesinlik kaybı 0,001.
- v1 (30 Eyl 2026,
revision="v1").
Yayınlanmayan v2 denemesi. v1'in zayıf etiketleri için 511 yeni şablon (çoğu yapısal kayıt) eklenerek aynı tarifle üç tohumda yeniden eğitildi. Zor sette micro-F1 0,90'dan 0,94'e çıktı, ama held-out'ta v1.1'le aynı kaldı (0,878): genetik, ceza, siyasi düşünce ve ırk/etnik kökende 3–6 puan kazanırken din, kılık kıyafet ve dernek/sendikada 3–5 puan kaybetti (üç tohum ortalaması, aynı eşik kuralıyla) ve etiketsiz metinlerde yanlış alarm %8,4'ten %10,6'ya çıktı. Zor set ile yeni şablonlar aynı dil modelinden çıktığı için zor setteki kazanç temkinle okunmalı. Net kazanç olmadığından yayınlanmadı.
Aynı tarifin farklı tohumları held-out'ta etiket düzeyinde birbirinden çok farklı sonuç verebiliyor (ör. lokasyon F1 0,74 / 0,85 / 0,77); tek tek etiket skorlarını bu oynaklıkla okuyun.
Sınırlar
- Eğitim verisi sentetiktir; gerçek kurum metninde ölçmeden kritik bir hatta koymayın.
- En zayıf etiketler
lokasyon,musteri_islem,gorsel_isitsel: bağlamdan çıkarılan, sınırı bulanık kategoriler. - Örtük anlatılan cinsel hayat bilgisini (yönelim açıkça söylenmeden, partner ya da ilişki üzerinden) çoğu zaman kaçırıyor: zor sette
cinsel_hayatduyarlılığı 0,37. Yapısal kayıtların içine gömülü ceza mahkûmiyeti bilgisinde de duyarlılık düşük (zor sette 0,68). - Sınıflandırıcı bir kategori sinyalidir, hukuki nitelendirme değildir. VERBİS envanteri ve KVKK uyumu kullananın sorumluluğundadır.
Related models / İlgili modeller
- halilneed/turkish-pii-detection — instruction-conditioned PII masking / talimatla kişisel veri maskeleme (270M)
- halilneed/turkish-pii-detection-GGUF — GGUF (BF16, Q8_0) for Ollama & llama.cpp, CPU / çevrimdışı GGUF sürümü
- halilneed/turkish-kvkk-classifier — KVKK / VERBİS personal-data category classifier / kişisel veri kategori sınıflandırıcı (this model / bu model)
- halilneed/turkish-bseby-classifier — BSEBY banking data & secrecy classifier / bankacılık veri ve sır sınıflandırıcı
- halilneed/turkish-prompt-injection-classifier — Turkish prompt injection detection / Türkçe prompt injection tespiti
All five in one collection / Hepsi tek koleksiyonda: Turkish Privacy & Safety Models
FAQ / Sık sorulan sorular
What does it output? / Ne çıktı verir?
A set of personal-data category labels (e.g. kimlik, iletisim, saglik) and whether any special category (KVKK md. 6) is present; generic text gets no label. It does not mask text — pair it with halilneed/turkish-pii-detection. / Maskeleme yapmaz; sınıflandır → politika seç → maskele.
How accurate is it? / Ne kadar doğru? v1.1: micro-F1 0.878 / macro-F1 0.863 on the 987-text held-out gold set, 0.902 / 0.853 on the 317-text hard set, 0.895 / 0.876 on the template-disjoint test. / Ayrıntılar Sonuçlar bölümünde.
Which labels are weakest? / En zayıf etiketler hangileri?
lokasyon, musteri_islem, gorsel_isitsel; implicit cinsel_hayat recall is 0.37 on the hard set. / Örtük cinsel hayat bilgisini çoğu zaman kaçırır.
Is it a legal determination? / Hukuki nitelendirme mi? No. It is a category signal; VERBİS inventory and KVKK compliance remain the user's responsibility. Training data is synthetic. / Hayır, bir kategori sinyalidir.
Resources / Kaynaklar
- halilneed agency: halilneed.agency/models/turkish-kvkk-classifier
- Downloads last month
- 87
Model tree for halilneed/turkish-kvkk-classifier
Base model
dbmdz/bert-base-turkish-casedDatasets used to train halilneed/turkish-kvkk-classifier
halilneed/turkish-kvkk-classification-train
Collection including halilneed/turkish-kvkk-classifier
Evaluation results
- micro-F1 on Turkish KVKK Classification Benchmark (held-out gold, 987 texts)test set self-reported0.878
- macro-F1 on Turkish KVKK Classification Benchmark (held-out gold, 987 texts)test set self-reported0.863
- micro-F1 on Turkish KVKK Classification Benchmark (hard set, 317 texts)test set self-reported0.902
- macro-F1 on Turkish KVKK Classification Benchmark (hard set, 317 texts)test set self-reported0.853
- micro-F1 on Turkish KVKK Classification Training Data (template-disjoint test, 771 texts)test set self-reported0.895
- macro-F1 on Turkish KVKK Classification Training Data (template-disjoint test, 771 texts)test set self-reported0.876