mehmetefeaytas/katilim-bankaciligi-kampanya-gold
Anatolia AI — Katılım Bankacılığı Kampanya Metinleri Altın Seti Paket tarihi: 2026-08-15 · Lisans: Apache-2.0 (anotasyon katmanı) — bkz. LISANS.md Dil: Türkçe · Alan: katılım bankacılığı (faizsiz finans) kampanya metinleri Görev: belgeden yapılandırılmış finansal bilgi çıkarımı + kampanya türü sınıflandırması ⚠️ Bu setler MAKİNE anotasyonludur ve insan hakemliğinden GEÇMEMİŞTİR. Ayrıntı aşağıda "Kim etiketledi" bölümünde. Bunu manşetten önce yazıyoruz çünkü sonradan öğrenilmesi… See the full description on the dataset page: https://huggingface.co/datasets/mehmetefeaytas/katilim-bankaciligi-kampanya-gold.
Anatolia AI — Katılım Bankacılığı Kampanya Metinleri Altın Seti
Paket tarihi: 2026-08-15 · Lisans: Apache-2.0 (anotasyon katmanı) — bkz. LISANS.md Dil: Türkçe · Alan: katılım bankacılığı (faizsiz finans) kampanya metinleri Görev: belgeden yapılandırılmış finansal bilgi çıkarımı + kampanya türü sınıflandırması
⚠️ Bu setler MAKİNE anotasyonludur ve insan hakemliğinden GEÇMEMİŞTİR. Ayrıntı aşağıda "Kim etiketledi" bölümünde. Bunu manşetten önce yazıyoruz çünkü sonradan öğrenilmesi, veri setinin bütün iddiasını çürütür.
İçerik
Biçim JSONL: her satır bir JSON nesnesi, bir kayıt. Ham HTML yoktur; pakette çıkarılmış metin (text) ve provenance alanları (source_url, content_hash) bulunur.
Alan şeması — 12 alan + campaign_type
hedef_kitle kapalı etiket kümesi: yeni_musteri · mevcut_musteri · maas_musterisi · belirli_segment.
`campaign_type` — 13. alan, 8 sınıflı kapalı küme: Finansman · İhtiyaç Finansmanı · Konut Finansmanı · Taşıt Finansmanı · Kart · Alışveriş Puanı · Yeni Müşteri · Yatırım Ürünü. Etiketli kayıt: gold.round1 114/134 · gold.v2 39/48. Etiketsiz kayıtta alan null'dur — "tür yok" demek değil, karara bağlanmadı demektir.
Kayıt yapısı
Protokol v2 — boş verdict ne demek
Her iki set de protokol v2 ile etiketlendi. Tek cümlelik farkı şudur:
Boş `verdict` = KARAR VERİLMEDİ, metrik dışıdır.
Öncülü olan protokol v1'de boş hücre ok (onay) sayılıyordu — yani anotatör bir hücreye hiç dokunmadığında modelin çıktısı onaylanmış kabul ediliyordu. Bu, etiketi modele çapalar ve ölçümü sistematik olarak iyimser yapar. v2 bunu tersine çevirdi: dokunulmayan hücre ölçüme hiç girmez.
Bunun veri setindeki karşılığı üç durumlu bir ayrımdır ve karıştırılmamalıdır:
absent ile "karar yok" aynı şey değildir. Halüsinasyon oranının paydası `absent` kümesidir: model, anotatörün "yok" dediği bir alana değer üretmişse uydurmuştur. absent taşınmazsa bu oran dışarıdan yeniden üretilemez — bu yüzden alan pakette birinci sınıf vatandaştır.
absent kararı: gold.round1 60 hücre · gold.v2 444 hücre.
Anotatörler arası uyum (κ) — iki tur, AYRI AYRI
⛔ Aşağıdaki iki sayı simetrik değildir ve toplanamaz, kıyaslanamaz.
Asimetri üç eksende birden:
- Hakemlik konumu. round0'ın 0,302'si hakemlik sonrası bir durumdur (0,051 → 0,268 → 0,302 ilerlemesi kayıtlıdır); round1'in 0,274'ü hakemlik öncesidir. Round1'in hakemlik sonrası tutarlılığı 0,844'tür — ama bu bağımsız uyum değildir ve manşet olarak kullanılmaz.
- Ölçüt. Fleiss κ çok-anotatörlü, Cohen κ iki-anotatörlüdür. Farklı tahmin ediciler; aynı ölçekte okunamazlar.
- Protokol. round0 v1 (boş = onay, modele çapalı), round1 v2 (boş = karar yok). Payda bile aynı değil.
Bu yüzden "v1'de 0,302 → v2'de 0,274, uyum düştü" yanlış bir cümledir; aynı şekilde "uyum düzeliyor" da yanlıştır. İki bağımsız ölçümdür.
Eşik anotasyon BAŞLAMADAN ilan edilmişti (ANNOTATION_GUIDE.md §7): κ ≥ 0,80 kabul · 0,67 ≤ κ < 0,80 notla kabul · κ < 0,67 zorunlu hakemlik + kılavuz revizyonu. Her iki tur da eşiğin altında kaldı ve ilan edilen sonuç uygulandı (kılavuz v1→v2 revize edildi, hakemlik koşuldu). Sayıya bakıp eşik değiştirilmedi.
Kim etiketledi — makine anotatör, makine hakem
⛔ İNSAN HAKEMLİĞİ YAPILMADI. Bu, setin en büyük kısıtıdır ve gizlenmez.
gold.round1'deki 38 kayıtlık hakemlik MAKİNE hakemliğidir. Uyuşmazlıklar, yalnız kendi alanının kılavuz paragrafını gören ve birbirinden habersiz çalışan kör hakemlerce karara bağlandı. Protokol, hakemin taraflardan biriyle hem karar hem değer olarak örtüşmesini şart koşar; üçüncü bir cevap çıkarsa hiçbir tarafa dokunulmaz.
adjudicated: true bayrağı "hakemlikten geçti" der — "insan onayladı" demez. Anotasyon kanıt kapılıydı (her değer belgede birebir geçen bir alıntıya bağlı, programatik doğrulandı), ama kanıt kapısı insan hakemliğinin yerine geçmez.
İki set KIYASLANAMAZ — ve birleştirilerek sunulmaz
gold.v2'nin 40/48 kaydı kasten zor seçilmiştir (koşullu aralık, format varyantı, çelişki, terminoloji tuzağı). gold.round1 ise inceleme kuyruğundan gelen geniş bir örneklemdir. İkisi aynı sistemi ölçer ama aynı soruyu sormaz.
round1'in 0,433'lük halüsinasyonu bir gerileme değil, SEÇİM ETKİSİDİR. round1'de bir hücre inceleme kuyruğuna zaten model bir şey ürettiği için girer; yani o setin absent kümesi rastgele değil, düşmanca seçilmiş bir alt kümedir. Payda 60'a düşünce oran şişer. Aynı sebeple bu iki setin F1'lerini yan yana koyup "hangi set daha kolay" demek de yanıltıcıdır.
Bölme — sızıntısız, belge düzeyinde, seed=42
İki setin birleşimi (182 kayıt) bölünür. Bölme birimi kayıt değil belgedir: source_url ya da content_hash paylaşan kayıtlar tek gruba çekilir ve grup bölünmez. Toplam 177 grup.
Bu gerekli, çünkü iki set 5 `source_url`'ü paylaşıyor (aynı sayfa, iki farklı hasat → farklı content_hash). Kayıt düzeyinde bölseydik o belgenin bir kopyası eğitime, diğeri teste düşerdi.
Hedef oran 70/15/15; gerçekleşen oran grup boyutları yüzünden birkaç kayıt sapabilir — grup bölünmesindense sapma tercih edilir.
Her kayıtta iki alan bulunur: bolme (train/val/test) ve `kaynak_set` (gold.round1 / gold.v2). Kaynak seti açıkça taşıyoruz çünkü iki set kıyaslanamaz ve karıştırmayı önleyen bilgi örtük kalmamalı; iki set kıyaslanamaz olduğu için bölmeleri tek bir homojen küme gibi raporlamayın.
Sızıntı denetimi
0 ihlal — hiçbir source_url ve hiçbir content_hash iki bölmede birden yok.
Denetim scripts/veri_seti_paketle.sizinti_denetimi ile yapılır ve tests/test_veri_seti_paketle.py içinde çitlenmiştir — hem sentetik bir sızıntı vakasıyla (denetim yakalıyor mu) hem de gerçek paketle (sıfır ihlal).
Kullanım sınırı — ne söylenebilir, ne söylenemez
Bu set bir REFERANS setidir, eğitim seti olarak tasarlanmamıştır. Üzerinde eğitim yapılırsa, ölçüm o modelin insanla değil başka bir makineyle ne kadar örtüştüğünü ölçer. Bu ayrım raporda korunmalıdır.
Bilinen sınırlar — biz söylüyoruz
- İnsan hakemliği yok (yukarıda). Kapatılması gereken en öncelikli açık budur.
- `tahsis_ucreti` ölçülemiyor. Her iki sette de 0 pozitif örnek var; bu alanda precision/recall/F1 tanımsızdır. Alan şemada duruyor çünkü
absentkararları (birleşimde 47 hücre) halüsinasyon paydasına giriyor. - `kampanya_kosullari` span/jeton F1'i metodolojik olarak yanıltıcıdır. Serbest cümle listesi döndüren bir alanda aynı koşulu farklı sözcüklerle yazan iki anotatör bile birbirini "yanlış" bulurdu. Kalem düzeyi ölçüt (jeton-Jaccard) kullanın.
- `campaign_type` eksik.
gold.round1'de 20,gold.v2'de 9 kayıtta tür karara bağlanmadı. - Kaynak sayfalar değişir.
content_hashanotasyon anındaki metni çapalar; bugün aynısource_url'e gidildiğinde farklı içerik gelebilir. Nitekim iki setin paylaştığı 5 belgede tam olarak bu olmuştur. - Küme temsil edici değildir.
gold.v2kasten zor kürlenmiştir,gold.round1model çıktısı olan hücrelere göre süzülmüştür. Hiçbiri Türkçe bankacılık metinlerinin ortalama zorluğunu temsil etmez.
Köken ve toplama
Metinler Türkiye'de faaliyet gösteren 10 katılım bankasının kamuya açık kampanya ve ürün sayfalarından toplandı. Toplama robots.txt kurallarına uyularak, kimliğini beyan eden bir tarayıcıyla (AnatoliaAI-Research/1.0) ve alan adı başına 3 saniye aralıkla yapıldı. Giriş gerektiren hiçbir alan, hiçbir kişisel veri toplanmadı.
Her kayıtta source_url ve content_hash (sha256) bulunur: "bu bilgiyi nereden aldınız" sorusunun cevabı kayıtlıdır. Ayrıntı: docs/legal_notes.md.
Yeniden üretim
cd app
.venv/bin/python -m scripts.veri_seti_paketlePaket data/gold/gold.round1.json ve data/gold/gold.v2.json'dan türetilir; bölme seed=42 ile deterministiktir — aynı girdi aynı bölmeyi verir.
