Projeler
    Açık veri · CC BY 4.0

    TurkishMMLU Kirlilik Listesi

    Türkçe web'de aynen bulunan test soruları

    TurkishMMLU test kümesindeki 900 sorunun 113'ü (%12,6), 527 milyon kelimelik bir Türkçe web külliyatında birebir geçmektedir. Bu depo o soruların listesini, bulunma yöntemini ve yeniden üretim betiğini içerir; amaç, Türkçe web metniyle eğitilen modellerin TurkishMMLU puanlarını kirlilik dışı bırakılmış bir alt kümede de raporlayabilmesidir.

    0 / 900

    Kirli soru · katı eşik (n = 13)

    Test kümesinin %12,6'sı · taranan külliyat 526.593.877 kelime

    900
    Taranan soru
    787
    Temiz soru (n = 13)
    %28,0
    Gevşek eşik (n = 8)
    527M
    Külliyat (kelime)
    13 / 8
    Pencere (kelime)
    CC BY 4.0
    Lisans
    Neden önemli

    Ezber, yetenek değildir

    Bir kıyas sorusu eğitim külliyatında aynen geçiyorsa, modelin o soruyu bilmesi yetenek değil ezberdir. Türkçe web'den toplanan her külliyat için bu risk vardır; soruların büyük kısmı ders kitabı ve deneme sınavı sitelerinden geldiği için web'de kopyaları bulunur.

    Kendi ölçümümüzde etkisi

    Raporlanan farkın üçte biri kirlilikten geliyordu

    Tüm 900 soru
    +6,27
    Kirli sorular çıkarılınca
    +4,14

    Bir devam-eğitimi modelinin tabanına göre farkı tüm 900 soruda +6,27 puan, kirli sorular çıkarılınca +4,14 puan ölçüldü.

    Yöntem

    n kelimelik pencere birebir eşleşmesi

    GPT-3 ve Llama teknik raporlarındaki ölçütün aynısı.

    01

    Normalizasyon

    Soru metni normalize edilir: NFC, Türkçe küçük harf (İ→i, I→ı), noktalama ve sayı dışı karakterler boşluğa çevrilir, kelimelere ayrılır.

    02

    Pencereler

    Her sorudan ardışık n kelimelik tüm pencereler çıkarılır; pencereler soru metni ve şıklardan (en çok 5 şık) alınır.

    03

    Tarama

    Külliyat aynı normalizasyonla akıtılır; herhangi bir pencere külliyatta birebir geçiyorsa soru kirli sayılır. Bellek kullanımı külliyat boyutundan bağımsızdır.

    EşikAnlamıKirli soruOran
    n = 13katıTesadüfi eşleşme pratikte imkânsız; standart ölçüt.113%12,6
    n = 8gevşekKısmi / yeniden ifade edilmiş sızıntıya duyarlı; yanlış pozitif olası (kalıp cümleler).252%28,0

    Taranan külliyat: 526.593.877 kelimelik Türkçe web metni (akış sırasıyla ilk 4,3 GB). Cevap anahtarı metin olmadığı için taranmaz. Liste bir alt sınırdır: yeniden ifade edilmiş ya da 13 kelimeden kısa parçalar hâlinde sızan sorular katı eşikte yakalanmaz.

    Konu dağılımı

    Kirli soruların konulara dağılımı

    n = 13 · 113 soru

    Din Kültürü ve Ahlak
    26
    Fizik
    22
    Biyoloji
    19
    Kimya
    15
    Tarih
    15
    Türk Dili ve Edebiyatı
    10
    Felsefe
    3
    Coğrafya
    3
    Listenin biçimi

    Yalnızca dizin ve özet

    Her kayıt, kaynak kümedeki sırayı, soru metninin SHA-256 özetini ve konu etiketini taşır. Kümenin sıralaması değişse bile soru özetle eşleştirilebilir.

    index

    Hugging Face AYueksel/TurkishMMLU, config All, split test içindeki sıra.

    sha256_soru

    question alanının (strip sonrası, UTF-8) SHA-256 özeti.

    konu

    Kaynak kümedeki konu etiketi.

    Soru metni bu depoda yoktur. TurkishMMLU kontrollü erişimli bir kümedir; bu liste yalnızca dizin ve özet taşır, kümeye erişimi olan herkes özetle eşleştirip kendi kopyasında soruyu bulur.
    turkishmmlu_kirlilik.json
    {
      "kaynak_kume": "AYueksel/TurkishMMLU (config All, split test)",
      "taranan_soru": 900,
      "kulliyat_kelime": 526593877,
      "kirli_13": [
        {"index": 0, "sha256_soru": "e84db08c…", "konu": "Biology"},
        …
      ],
      "kirli_8": [ … ]
    }
    Kullanım

    Temiz alt kümeyi üç adımda türetin

    Listeyi yükleyin, özetleri kümeyle eşleştirin, kirli soruları süzün: 900 → 787.

    python · datasets
    import json, hashlib
    from datasets import load_dataset
    
    ds = load_dataset("AYueksel/TurkishMMLU", "All", split="test")
    k = json.load(open("turkishmmlu_kirlilik.json", encoding="utf-8"))
    kirli = {r["sha256_soru"] for r in k["kirli_13"]}
    
    def ozet(q): return hashlib.sha256(q.strip().encode("utf-8")).hexdigest()
    temiz = ds.filter(lambda ex: ozet(ex["question"]) not in kirli)
    print(len(ds), "->", len(temiz))   # 900 -> 787
    Önerilen raporlama

    Tam kümedeki puanın yanında temiz-787 puanı ve iki puan arasındaki fark. Fark büyükse modelin külliyatı bu soruları görmüştür.

    Yeniden üretim
    $ python kirlilik_denetimi.py <kulliyat.txt> <etiket>
    Kendi külliyatınızı taratın

    Betik külliyatı satır satır akıtır. Kendi külliyatınızı taratırsanız listeniz bizimkinden farklı çıkar: bu listede olan bir soru sizin külliyatınızda olmayabilir, olmayan bir soru olabilir.

    Sınırlar

    Bilinen sınırlar

    01

    Liste bizim külliyatımıza göredir. Türkçe web'in başka bir kesitiyle eğitilen bir modelin kirliliği farklıdır; ama aynı kaynaklar her kesitte bulunduğu için örtüşme yüksek olacaktır.

    02

    Soru ve şık metinleri tarandı; cevap anahtarı metin olmadığından taranamaz. Yeniden ifade edilmiş kopyalar katı eşikte kaçar; liste bir alt sınırdır.

    03

    n = 13 katı eşiği yeniden ifade edilmiş kopyaları kaçırır; n = 8 listesi bu yüzden verilmiştir, ama yanlış pozitif içerir.

    04

    Kaynak kümenin sıralaması değişirse index geçersizleşir; sha256_soru kullanın.

    Atıf

    Bu listeyi kullanırsanız

    citation
    eCloud Tech. (2026). TurkishMMLU Kirlilik Listesi: Türkçe web külliyatında
    birebir geçen test soruları. https://github.com/ecloudtechnology/turkishmmlu-kirlilik

    Lisans: liste ve betik CC BY 4.0. TurkishMMLU'nun kendisi için: Yüksel, A. vd. (2024), TurkishMMLU. İletişim: [email protected]

    TurkishMMLU puanınızı temiz alt kümede de raporlayın

    Liste ve tarama betiği CC BY 4.0 ile açıktır. Türkçe kıyas ve değerlendirme çalışmalarında iş birliği için bizimle iletişime geçebilirsiniz.