“Barış” bazen bir insandır.
Yabancı bir yazılım farkı bilmez.

Barış, Deniz, Umut, Güneş… Dilimizde isimler kelimelerle iç içe. Kişisel veriyi korumak, önce dili anlamaktan geçiyor.

Kısaca

Yazıdan akılda kalması gereken üç şey.

  1. 01

    Türkçede Barış, Deniz, Umut gibi isimler aynı zamanda gündelik kelime olduğu ve ek aldığı için İngilizce odaklı araçlar Türkçe metinlerde çok hata yapıyor.

  2. 02

    2.700 Türkçe belgelik testte curtaindata kişisel verilerin yüzde 89,5'ini 1 yanlış alarmla buldu; Microsoft Presidio yüzde 77,4'ünü 3.191 yanlış alarmla buldu.

  3. 03

    curtaindata TC kimlik, vergi no, IBAN ve kart numaralarını kontrol haneleriyle doğrular ve ücretsiz aracı tamamen tarayıcıda çalıştırır.

Bu yazıda · 6 dakikalık okuma
  1. İsimlerin kelime olduğu bir dil
  2. Kesme işaretinin sakladığı ipucu
  3. On bir hanenin içindeki matematik
  4. Ölçtük ve sonuçları yayımladık
  5. Kendi dilinde, kendi bilgisayarında

Şu iki cümleye bakın: “Barış Bey toplantıya geç kaldı.” ve “Barış görüşmeleri ertelendi.” Bir Türk okur, birincisinin bir insandan, ikincisinin bir kavramdan söz ettiğini düşünmeden anlar. İngilizce metinler için geliştirilmiş bir yazılım ise ya ikisini de görmez ya da ikisini de bir insan sanır. Kişisel veri korumasının pek konuşulmayan gerçeği şu: Bir dili anlamayan araç, o dili konuşan insanları koruyamaz.

01İsimlerin kelime olduğu bir dil

Türkçede isimlerin büyük bir kısmı aynı zamanda gündelik kelimedir: Deniz, Umut, Barış, Güneş, Kaya, Çiçek, Bahar, Yıldız. Metinde “deniz” geçtiğinde onun bir sahil mi yoksa bir insan mı olduğunu ancak bağlam söyler. İngilizce odaklı araçların bu dengeyi kurması zor; testlerimizde Microsoft Presidio, Türkçe belgelerde “Merhaba” gibi kelimeleri bile insan adı sandı.Presidio, açık kaynak dünyasının en bilinen ve en saygın kişisel veri araçlarından biri[2]. Sorun aracın kalitesinde değil, dilin kendisinde.

02Kesme işaretinin sakladığı ipucu

Türkçe eklemeli bir dil. Aynı soyadı bir metinde Kurguoğlu, Kurguoğlu’na, Kurguoğlu’ndan ya da Kurguoğlu’nun olarak karşınıza çıkabilir. Kelimeyi olduğu gibi arayan bir sistem bunların her birini ayrı bir şey sanar ya da hiçbirini bulamaz.

Dilimiz bir ipucu da bırakır (okulda belki de en sıkıcı bulduğumuz kurallardan biri): Özel isimlere gelen ekler kesme işaretiyle ayrılır. “Deniz’e” yazıldığında bir insandan, “denize” yazıldığında sudan söz ediyoruzdur. curtaindata bu ipuçlarını Türkçe ad ve soyadı sözlükleriyle, “Sayın”, “Bey”, “Hanım”, “Davacı:” gibi hitap ve rol kalıplarıyla birlikte okur. İsmi gizlerken eki yerinde bırakır; maskeli cümle de dil bilgisi açısından düzgün kalır.Önünde böyle bir ipucu olan isimlerde curtaindata’nın başarısı %99,5. İpucu olmadan geçen, sözlükte bulunmayan nadir isimler ise hâlâ en zor kısım; bunu açıkça yazıyor ve üzerinde çalışıyoruz.

Bir müşteri temsilcisinin mesajı
BarışAd-soyad · Kimlik Bey, barış görüşmelerinin ertelendiğini söyledi. Deniz KurguoğluAd-soyad · Kimlik'na yarın 0532 000 00 00Telefon · İletişim numarasından ulaşabilirsiniz. Sipariş numaranız 12345678901, TC kimlik numaranız ise 10000000146TC kimlik no · Kimlik.
4 kişisel veriDeğerin üzerine gelince türü görünür
Şekil 1Gerçek bir curtaindata çıktısı. “Barış Bey” gizlenir, “barış görüşmeleri” olduğu gibi kalır.

03On bir hanenin içindeki matematik

Peki örnekteki sipariş numarası neden gizlenmedi? O da on bir haneli bir sayı. Cevap, çoğumuzun hiç fark etmediği küçük bir matematikte saklı: TC kimlik numarasının son iki hanesi, önceki hanelerden hesaplanan kontrol haneleridir. Bir numaranın gerçekten kimlik numarası olup olmadığını, kimseye sormadan, yalnızca toplayıp çıkararak anlayabilirsiniz.

curtaindata TC kimlik, vergi kimlik, IBAN ve kart numaralarını bu algoritmalarla doğrular. Böylece sipariş, fatura ya da kargo takip numaralarını kimlik numarası sanıp metninizi gereksiz yere karartmaz; geçerli bir kimlik numarasını ise yanında “TC” yazmasa bile yakalar.

04Ölçtük ve sonuçları yayımladık

İddia etmek kolay; biz ölçmeyi seçtik. 2.700 Türkçe belgeye 12.300 sahte kişisel veri yerleştirdik ve curtaindata’yı Presidio ile aynı belgelerde denedik[1]. Presidio’nun ayarlarına dokunmadık, kuralları onun lehine tuttuk.

ÖlçütcurtaindataPresidio
Bulunan kişisel veri%89,5%77,4
Yanlış alarm13.191
Posta adresi%100%0
Araç plakası%100%2,2
Tarama hızı347 KB/sn14 KB/sn
Presidio 2.2.364, en_core_web_lg 3.8.0. Hız, ölçümün yapıldığı bilgisayara göre değişir; önemli olan iki araç arasındaki fark.

Eksiğimizi de saklamıyoruz: İsimlerin genelinde iki araç başa baş (curtaindata %67, Presidio %68), hiçbir ipucu olmadan geçen nadir isimlerde ise Presidio açıkça önde. Bu açığı kapatmak için yapay zekâ tabanlı bir isim tanıma katmanı üzerinde çalışıyoruz. Bütün sayıları ve yöntemi açıkça yayımlıyoruz.

Veri egemenliği, verinin hangi ülkede saklandığıyla başlar; hangi dilde anlaşıldığıyla tamamlanır.

05Kendi dilinde, kendi bilgisayarında

Türkiye’de yapay zekâ kullanımı hızla artarken, kişisel veriyi koruyan araçların neredeyse tamamı başka diller ve başka yasalar için tasarlanmış durumda. curtaindata’yı bu boşluğu doldurmak için yaptık: Türkçe için sıfırdan, KVKK’nın kategorileriyle, VERBİS’in diliyle[3]. Avrupa’ya hizmet verenler için GDPR desteği de yolda.

Bir de ilke meselesi var. Kişisel veriyi korumak için onu başka bir sunucuya göndermek, yangını benzinle söndürmeye benzer. Bu yüzden ücretsiz maskeleme aracımız tamamen tarayıcınızda çalışır: Metniniz bilgisayarınızdan çıkmaz, hiçbir yerde saklanmaz (tarayıcınızın ağ sekmesini açıp kendiniz de izleyebilirsiniz). Kendi yazılımına bağlamak isteyenler için entegrasyon da sunuyoruz.

Türkçe, kendi perdesini hak ediyor. Biz onu örmeye başladık; siz de bir cümleyle deneyin.

curtaindata ekibi tarafından hazırlandı

Türkçe metinlerdeki kişisel verileri bulan ve gizleyen curtaindata’yı geliştiren ekip. Bu yazıdaki bütün sayılar kaynaklarıyla birlikte verilmiştir; örnek çıktılar curtaindata’nın gerçek sonuçlarıdır.

5 Ekim 2026 · 6 dk okuma

Akla takılanlar

Türkçe metinlerde kişisel veri tespiti neden zor?

Türkçede Barış, Deniz, Umut gibi pek çok isim aynı zamanda gündelik bir kelimedir ve isimler ek alarak (Kurguoğlu'na, Deniz'den) biçim değiştirir. İngilizce için geliştirilen araçlar bu yüzden ya isimleri kaçırır ya da sıradan kelimeleri isim sanar.

TC kimlik numarası nasıl doğrulanır?

TC kimlik numarasının son iki hanesi ilk hanelerden hesaplanan kontrol haneleridir. Rastgele on bir haneli bir sayının bu kontrollerden geçme ihtimali yaklaşık yüzde birdir. curtaindata TC kimlik, vergi kimlik, IBAN ve kart numaralarını bu algoritmalarla doğrular.

curtaindata ile Microsoft Presidio arasındaki fark nedir?

Presidio çok dilli ve İngilizce ağırlıklı bir araçtır. 2.700 Türkçe belgelik testimizde curtaindata kişisel verilerin yüzde 89,5'ini bulurken 1 yanlış alarm verdi; Presidio yüzde 77,4'ünü bulup 3.191 yanlış alarm verdi. İpucu olmadan geçen nadir isimlerde ise Presidio daha başarılı.

Kaynaklar

Diğer yazılar

Tümü →

Kendi metninizle
perdeyi çekin.

Ücretsiz maskeleme aracı doğrudan tarayıcınızda çalışır. Yazdığınız hiçbir şey bir yere gitmez.