Download benchmark/build_benchmark.py from SevdanurGenc/Text-to-SQL: direct link, hf CLI and curl.
- Browser
- Download file 24.7 kB
-
https://huggingface.co/SevdanurGenc/Text-to-SQL/resolve/main/benchmark/build_benchmark.py
- Command line
-
hf download hf://SevdanurGenc/Text-to-SQL/benchmark/build_benchmark.py
-
curl -L -o build_benchmark.py https://huggingface.co/SevdanurGenc/Text-to-SQL/resolve/main/benchmark/build_benchmark.py
24.7 kB
| """Türkçe tablo-soru test kümesini (TR-TabloSQL) üretir ve altın SQL'leri doğrular. | |
| Soru tipleri Spider (seçim, filtre, toplama, gruplama, sıralama, iç içe sorgu, çoklu tablo) | |
| ve BIRD (dış bilgi/kanıt gerektiren sorular, değer eşleme, birim dönüştürme) kümelerinden | |
| uyarlanmış; Türkiye'ye özgü zorluklar eklenmiştir: | |
| tr_sayi : '1.234,56' biçimli sayılar (belgede veya soruda) | |
| birim : 'bin TL', 'bin MWh' gibi ölçekli birimler ve dönüşüm | |
| tarih : 'Ocak 2024', '15.03.2025' gibi Türkçe tarih yazımları | |
| deger_esleme : İ/ı, büyük/küçük harf, ek almış özel adlar (İzmir'in, ISPARTA) | |
| toplam_satiri: belgede hazır 'Toplam' satırı olan tablolarda çift sayım tuzağı | |
| cevapsiz : tablolarda cevabı olmayan sorular (sistem bunu açıkça söylemeli) | |
| altin_sql = None olan sorular cevapsızdır. | |
| Çalıştırma: python benchmark/build_benchmark.py | |
| """ | |
| from __future__ import annotations | |
| import json | |
| import sys | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parent.parent | |
| sys.path.insert(0, str(ROOT)) | |
| A = "gider_turlerine_butce_gerceklesme" | |
| B = "yillara_personel_sayisi" | |
| C = "tuketici_fiyat_endeksi_degisim" | |
| D = "illere_elektrik_tuketimi" | |
| E = "ozet_gelir_tablosu" | |
| F = "belediye_hizmet_ucret_tarifesi" | |
| G = "mahallelere_su_abone_sayisi" | |
| # (soru, altın_sql | None, zorluk, kategoriler, kanıt(BIRD tarzı) | None, uyarlama) | |
| Q = [ | |
| # ---------------------------------------------------------------- A: bütçe gerçekleşme | |
| ("2024 yılında personel giderleri için ne kadar harcama gerçekleşti?", | |
| f"SELECT gerceklesme_2024 FROM {A} WHERE TR_NORM(gider_turu)=TR_NORM('Personel Giderleri')", | |
| "kolay", ["secim", "tr_sayi", "deger_esleme"], None, "Spider: tek tablo seçim"), | |
| ("Sermaye giderlerinin 2023 bütçesi kaç TL'dir?", | |
| f"SELECT butce_2023 FROM {A} WHERE gider_turu='Sermaye Giderleri'", | |
| "kolay", ["secim", "deger_esleme", "tr_sayi"], None, "Spider: tek tablo seçim"), | |
| ("2024 bütçesinde en fazla ödenek ayrılan gider türü hangisidir?", | |
| f"SELECT gider_turu FROM {A} WHERE toplam_satiri=0 ORDER BY butce_2024 DESC LIMIT 1", | |
| "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY ... LIMIT"), | |
| ("2024 yılında tüm gider türlerinin toplam gerçekleşmesi ne kadardır?", | |
| f"SELECT SUM(gerceklesme_2024) FROM {A} WHERE toplam_satiri=0", | |
| "orta", ["toplama", "toplam_satiri", "tr_sayi"], None, "Spider: SUM"), | |
| ("Gerçekleşme oranı yüzde 90'ın altında kalan gider türleri hangileridir?", | |
| f"SELECT gider_turu FROM {A} WHERE gerceklesme_orani_2024 < 90 AND toplam_satiri=0", | |
| "orta", ["filtre", "yuzde"], None, "Spider: WHERE karşılaştırma"), | |
| ("Faiz giderlerinin bütçesi 2023'ten 2024'e yüzde kaç arttı?", | |
| f"SELECT (butce_2024-butce_2023)*100.0/butce_2023 FROM {A} WHERE gider_turu='Faiz Giderleri'", | |
| "orta", ["artis_yuzdesi", "sayisal"], "Artış yüzdesi = (yeni - eski) / eski × 100", | |
| "BIRD: formül kanıtı"), | |
| ("2023 yılında gider türü başına ortalama bütçe nedir?", | |
| f"SELECT AVG(butce_2023) FROM {A} WHERE toplam_satiri=0", | |
| "orta", ["toplama", "toplam_satiri"], None, "Spider: AVG"), | |
| ("Kaç gider türünün 2024 gerçekleşmesi bütçesini aştı?", | |
| f"SELECT COUNT(*) FROM {A} WHERE gerceklesme_2024 > butce_2024 AND toplam_satiri=0", | |
| "orta", ["sayim", "karsilastirma", "toplam_satiri"], None, "Spider: COUNT + sütunlar arası koşul"), | |
| ("Mal ve hizmet alımlarında 2024 bütçesi ile gerçekleşme arasındaki fark kaç TL?", | |
| f"SELECT butce_2024-gerceklesme_2024 FROM {A} WHERE gider_turu='Mal ve Hizmet Alım Giderleri'", | |
| "orta", ["sayisal", "deger_esleme"], None, "BIRD: aritmetik"), | |
| ("2024 yılında 100 milyon TL'den fazla harcama yapılan gider türleri hangileri?", | |
| f"SELECT gider_turu FROM {A} WHERE gerceklesme_2024 > 100000000 AND toplam_satiri=0", | |
| "orta", ["filtre", "birim", "toplam_satiri"], "100 milyon TL = 100.000.000 TL", | |
| "BIRD: birim kanıtı"), | |
| ("2022 yılı personel gideri bütçesi ne kadardı?", None, | |
| "orta", ["cevapsiz"], None, "Cevapsız: tabloda 2022 yok"), | |
| ("2024 yılı genel bütçe gerçekleşme oranı yüzde kaçtır?", | |
| f"SELECT gerceklesme_orani_2024 FROM {A} WHERE toplam_satiri=1", | |
| "orta", ["secim", "yuzde", "toplam_satiri"], None, "Spider: seçim"), | |
| # ---------------------------------------------------------------- B: personel | |
| ("2022 yılında kaç memur çalışıyordu?", | |
| f"SELECT memur FROM {B} WHERE yil=2022", | |
| "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), | |
| ("Toplam personel sayısının en yüksek olduğu yıl hangisi?", | |
| f"SELECT yil FROM {B} ORDER BY toplam DESC LIMIT 1", | |
| "kolay", ["siralama"], None, "Spider: ORDER BY"), | |
| ("2020-2024 döneminde ortalama işçi sayısı kaçtır?", | |
| f"SELECT AVG(isci) FROM {B} WHERE yil BETWEEN 2020 AND 2024", | |
| "kolay", ["toplama", "tr_sayi"], None, "Spider: AVG"), | |
| ("Sözleşmeli personel sayısı 2020'den 2024'e kaç kişi arttı?", | |
| f"SELECT (SELECT sozlesmeli_personel FROM {B} WHERE yil=2024)-(SELECT sozlesmeli_personel FROM {B} WHERE yil=2020)", | |
| "orta", ["sayisal", "ic_ice"], None, "Spider: iç içe sorgu"), | |
| ("İşçi sayısı 2.400'ün üzerinde olan yıllar hangileri?", | |
| f"SELECT yil FROM {B} WHERE isci > 2400", | |
| "kolay", ["filtre", "tr_sayi"], None, "Spider: WHERE"), | |
| ("2024'te memurların toplam personel içindeki payı yüzde kaçtır?", | |
| f"SELECT memur*100.0/toplam FROM {B} WHERE yil=2024", | |
| "orta", ["sayisal", "yuzde"], "Pay (%) = memur / toplam × 100", "BIRD: formül kanıtı"), | |
| ("2025 yılında kaç işçi istihdam edilmesi planlanıyor?", None, | |
| "orta", ["cevapsiz"], None, "Cevapsız: plan/2025 verisi yok"), | |
| # ---------------------------------------------------------------- C: fiyat endeksi | |
| ("Mart 2025'te endeks değeri kaçtı?", | |
| f"SELECT endeks FROM {C} WHERE donem='2025-03'", | |
| "kolay", ["secim", "tarih", "tr_sayi"], None, "Spider: seçim"), | |
| ("2024 yılında aylık değişimin en yüksek olduğu ay hangisi?", | |
| f"SELECT donem FROM {C} WHERE donem LIKE '2024-%' ORDER BY degisim_aylik DESC LIMIT 1", | |
| "orta", ["siralama", "tarih"], None, "Spider: ORDER BY + filtre"), | |
| ("2024 yılı aylık değişim oranlarının ortalaması nedir?", | |
| f"SELECT AVG(degisim_aylik) FROM {C} WHERE donem LIKE '2024-%'", | |
| "orta", ["toplama", "tarih", "yuzde"], None, "Spider: AVG"), | |
| ("Haziran 2025'te yıllık değişim yüzde kaç olarak gerçekleşti?", | |
| f"SELECT degisim_yillik FROM {C} WHERE donem='2025-06'", | |
| "kolay", ["secim", "tarih", "yuzde"], None, "Spider: seçim"), | |
| ("Aylık değişimin %4'ü aştığı kaç ay var?", | |
| f"SELECT COUNT(*) FROM {C} WHERE degisim_aylik > 4", | |
| "orta", ["sayim", "filtre", "yuzde"], None, "Spider: COUNT"), | |
| ("Endeks Ocak 2024'ten Aralık 2024'e yüzde kaç arttı?", | |
| f"SELECT ((SELECT endeks FROM {C} WHERE donem='2024-12')-(SELECT endeks FROM {C} WHERE donem='2024-01'))*100.0/(SELECT endeks FROM {C} WHERE donem='2024-01')", | |
| "zor", ["artis_yuzdesi", "tarih", "ic_ice"], "Artış yüzdesi = (yeni - eski) / eski × 100", | |
| "BIRD: formül kanıtı + iç içe"), | |
| ("Yıllık değişimin yüzde 50'nin altına ilk düştüğü dönem hangisidir?", | |
| f"SELECT MIN(donem) FROM {C} WHERE degisim_yillik < 50", | |
| "zor", ["tarih", "filtre"], None, "Spider: MIN + filtre"), | |
| ("Temmuz 2025 endeks değeri nedir?", None, | |
| "orta", ["cevapsiz", "tarih"], None, "Cevapsız: veri Haziran 2025'te bitiyor"), | |
| # ---------------------------------------------------------------- D: elektrik | |
| ("İzmir'in 2024 elektrik tüketimi ne kadar?", | |
| f"SELECT yil_2024 FROM {D} WHERE TR_NORM(il)=TR_NORM('İzmir')", | |
| "kolay", ["secim", "deger_esleme", "tr_sayi"], None, "Spider: seçim"), | |
| ("Isparta'nın 2023 yılındaki elektrik tüketimi kaç bin MWh'tir?", | |
| f"SELECT yil_2023 FROM {D} WHERE il='Isparta'", | |
| "kolay", ["secim", "deger_esleme"], None, "Spider: seçim"), | |
| ("ISPARTA ilinin 2022 tüketimi nedir?", | |
| f"SELECT yil_2022 FROM {D} WHERE il='Isparta'", | |
| "kolay", ["secim", "deger_esleme"], None, "Türkçe büyük harf: I/ı"), | |
| ("Marmara bölgesindeki illerin 2024 toplam tüketimi ne kadar?", | |
| f"SELECT SUM(yil_2024) FROM {D} WHERE bolge='Marmara'", | |
| "orta", ["toplama", "filtre"], None, "Spider: SUM + WHERE"), | |
| ("2024'te en çok elektrik tüketen il hangisi?", | |
| f"SELECT il FROM {D} WHERE toplam_satiri=0 ORDER BY yil_2024 DESC LIMIT 1", | |
| "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), | |
| ("Tüketimi 2023'ten 2024'e azalan kaç il var?", | |
| f"SELECT COUNT(*) FROM {D} WHERE yil_2024 < yil_2023 AND toplam_satiri=0", | |
| "orta", ["sayim", "karsilastirma", "toplam_satiri"], None, "Spider: COUNT"), | |
| ("Bölgelere göre 2024 toplam tüketimini listeler misin?", | |
| f"SELECT bolge, SUM(yil_2024) FROM {D} WHERE toplam_satiri=0 GROUP BY bolge", | |
| "orta", ["gruplama", "toplam_satiri"], None, "Spider: GROUP BY"), | |
| ("Ankara'nın 2024 elektrik tüketimi kaç MWh?", | |
| f"SELECT yil_2024*1000 FROM {D} WHERE il='Ankara'", | |
| "orta", ["birim", "secim"], "Tablo bin MWh cinsindendir; 1 bin MWh = 1.000 MWh", "BIRD: birim kanıtı"), | |
| ("İstanbul'un tüketimi 2022'den 2024'e yüzde kaç değişti?", | |
| f"SELECT (yil_2024-yil_2022)*100.0/yil_2022 FROM {D} WHERE il='İstanbul'", | |
| "orta", ["artis_yuzdesi", "deger_esleme"], "Değişim yüzdesi = (yeni - eski) / eski × 100", | |
| "BIRD: formül kanıtı"), | |
| ("Değişim oranı en düşük olan il hangisidir?", | |
| f"SELECT il FROM {D} WHERE toplam_satiri=0 ORDER BY degisim_2023_2024 ASC LIMIT 1", | |
| "orta", ["siralama", "toplam_satiri", "yuzde"], None, "Spider: ORDER BY"), | |
| ("İç Anadolu'daki illerin 2023 ortalama tüketimi nedir?", | |
| f"SELECT AVG(yil_2023) FROM {D} WHERE bolge='İç Anadolu'", | |
| "orta", ["toplama", "filtre", "deger_esleme"], None, "Spider: AVG + WHERE"), | |
| ("Mersin'in 2024 elektrik tüketimi ne kadar?", None, | |
| "orta", ["cevapsiz", "deger_esleme"], None, "Cevapsız: il tabloda yok"), | |
| ("17 ilin 2022 yılındaki toplam tüketimi kaç bin MWh?", | |
| f"SELECT SUM(yil_2022) FROM {D} WHERE toplam_satiri=0", | |
| "orta", ["toplama", "toplam_satiri", "tr_sayi"], None, "Spider: SUM"), | |
| ("Karadeniz bölgesinde kaç il var?", | |
| f"SELECT COUNT(*) FROM {D} WHERE bolge='Karadeniz'", | |
| "kolay", ["sayim", "filtre"], None, "Spider: COUNT"), | |
| # ---------------------------------------------------------------- E: gelir tablosu | |
| ("2024 yılında hasılat ne kadardı?", | |
| f"SELECT cari_donem_2024 FROM {E} WHERE kalem='Hasılat'", | |
| "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), | |
| ("Şirketin 2023 dönem net kârı kaç TL'dir?", | |
| f"SELECT onceki_donem_2023*1000 FROM {E} WHERE kalem='Dönem Net Kârı'", | |
| "orta", ["birim", "secim"], "Tablo bin TL cinsindendir", "BIRD: birim kanıtı"), | |
| ("Net kâr bir önceki yıla göre yüzde kaç arttı?", | |
| f"SELECT (cari_donem_2024-onceki_donem_2023)*100.0/onceki_donem_2023 FROM {E} WHERE kalem='Dönem Net Kârı'", | |
| "orta", ["artis_yuzdesi"], "Artış yüzdesi = (cari - önceki) / önceki × 100", "BIRD: formül kanıtı"), | |
| ("2024'te satışların maliyeti ne kadar?", | |
| f"SELECT cari_donem_2024 FROM {E} WHERE kalem='Satışların Maliyeti (-)'", | |
| "kolay", ["secim", "tr_sayi", "negatif"], None, "Parantezli negatif sayı"), | |
| ("2024 brüt kâr marjı yüzde kaçtır?", | |
| f"SELECT (SELECT cari_donem_2024 FROM {E} WHERE kalem='Brüt Kâr')*100.0/(SELECT cari_donem_2024 FROM {E} WHERE kalem='Hasılat')", | |
| "zor", ["sayisal", "ic_ice", "yuzde"], "Brüt kâr marjı = Brüt Kâr / Hasılat × 100", "BIRD: alan bilgisi kanıtı"), | |
| ("Finansman giderleri 2023'e göre ne kadar arttı?", | |
| f"SELECT ABS(cari_donem_2024)-ABS(onceki_donem_2023) FROM {E} WHERE kalem='Finansman Giderleri (-)'", | |
| "zor", ["sayisal", "negatif"], "Giderler tabloda negatif (parantezli) gösterilir", "BIRD: işaret kanıtı"), | |
| ("Şirketin 2024 yılındaki çalışan sayısı kaçtır?", None, | |
| "orta", ["cevapsiz"], None, "Cevapsız: gelir tablosunda yok"), | |
| # ---------------------------------------------------------------- F: ücret tarifesi | |
| ("İşyeri açma ruhsatı ücreti ne kadar?", | |
| f"SELECT ucret FROM {F} WHERE hizmet='İşyeri Açma Ruhsatı'", | |
| "kolay", ["secim", "deger_esleme", "tr_sayi"], None, "Spider: seçim"), | |
| ("Zabıta hizmetleri grubunda kaç farklı hizmet var?", | |
| f"SELECT COUNT(DISTINCT hizmet) FROM {F} WHERE hizmet_grubu='Zabıta Hizmetleri'", | |
| "kolay", ["sayim", "birlesik_hucre"], None, "Spider: COUNT DISTINCT (birleşik hücre)"), | |
| ("1 Temmuz 2025'te yürürlüğe giren hizmetler hangileri?", | |
| f"SELECT hizmet FROM {F} WHERE yururluk_tarihi='2025-07-01'", | |
| "orta", ["filtre", "tarih"], None, "Spider: WHERE (tarih)"), | |
| ("Yürürlük tarihi 15.03.2025 olan hizmetlerin ortalama ücreti nedir?", | |
| f"SELECT AVG(ucret) FROM {F} WHERE yururluk_tarihi='2025-03-15'", | |
| "orta", ["toplama", "tarih"], None, "Türkçe tarih biçimi"), | |
| ("Sosyal tesisler grubundaki en pahalı hizmet hangisi?", | |
| f"SELECT hizmet FROM {F} WHERE hizmet_grubu='Sosyal Tesisler' ORDER BY ucret DESC LIMIT 1", | |
| "orta", ["siralama", "filtre", "birlesik_hucre"], None, "Spider: ORDER BY + WHERE"), | |
| ("Ücreti 2.000 TL'nin üzerinde olan kaç hizmet var?", | |
| f"SELECT COUNT(*) FROM {F} WHERE ucret > 2000", | |
| "kolay", ["sayim", "filtre", "tr_sayi"], None, "Spider: COUNT + WHERE"), | |
| ("Hizmet gruplarına göre ortalama ücretleri listeler misin?", | |
| f"SELECT hizmet_grubu, AVG(ucret) FROM {F} GROUP BY hizmet_grubu", | |
| "orta", ["gruplama", "birlesik_hucre"], None, "Spider: GROUP BY"), | |
| ("Mart 2025'ten önce yürürlüğe giren hizmetlerin sayısı nedir?", | |
| f"SELECT COUNT(*) FROM {F} WHERE yururluk_tarihi < '2025-03-01'", | |
| "orta", ["sayim", "tarih"], None, "Spider: COUNT + tarih karşılaştırma"), | |
| ("Otopark ücreti ne kadar?", None, | |
| "kolay", ["cevapsiz"], None, "Cevapsız: tarifede yok"), | |
| # ---------------------------------------------------------------- G: su (çizgisiz tablo) | |
| ("Fatih mahallesindeki abone sayısı kaç?", | |
| f"SELECT abone_sayisi FROM {G} WHERE mahalle='Fatih'", | |
| "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), | |
| ("En fazla su tüketen mahalle hangisi?", | |
| f"SELECT mahalle FROM {G} WHERE toplam_satiri=0 ORDER BY yillik_tuketim DESC LIMIT 1", | |
| "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), | |
| ("Tüm mahallelerin toplam abone sayısı nedir?", | |
| f"SELECT SUM(abone_sayisi) FROM {G} WHERE toplam_satiri=0", | |
| "orta", ["toplama", "toplam_satiri", "tr_sayi"], None, "Spider: SUM"), | |
| ("Abone başına tüketimi 150 m³'ün üzerinde olan mahalleler hangileri?", | |
| f"SELECT mahalle FROM {G} WHERE abone_basina_tuketim > 150 AND toplam_satiri=0", | |
| "orta", ["filtre", "birim"], None, "Spider: WHERE"), | |
| ("Yıldırım Beyazıt mahallesinin yıllık tüketimi kaç litre?", | |
| f"SELECT yillik_tuketim*1000 FROM {G} WHERE mahalle='Yıldırım Beyazıt'", | |
| "orta", ["birim", "secim", "deger_esleme"], "1 m³ = 1.000 litre", "BIRD: birim kanıtı"), | |
| ("Kurtuluş mahallesinde 2023 yılındaki abone sayısı kaçtı?", None, | |
| "orta", ["cevapsiz"], None, "Cevapsız: yalnızca 2024 verisi var"), | |
| # ---------------------------------------------------------------- çoklu tablo | |
| ("2024'te personel giderleri gerçekleşmesinin toplam personel sayısına bölümü (kişi başı personel gideri) ne kadardır?", | |
| f"SELECT (SELECT gerceklesme_2024 FROM {A} WHERE gider_turu='Personel Giderleri')*1.0/(SELECT toplam FROM {B} WHERE yil=2024)", | |
| "zor", ["coklu_tablo", "sayisal", "ic_ice"], "Kişi başı gider = gider / personel sayısı", | |
| "Spider: çoklu tablo (skaler alt sorgular)"), | |
| ] | |
| # ============================================================================ | |
| # AYRILMIŞ TEST BÖLÜMÜ: kural tabanlı sistem geliştirilirken HİÇ kullanılmadı. | |
| # Yeni ifade kalıpları, farklı varlıklar ve yeni soru biçimleri içerir. | |
| QT = [ | |
| ("Borç verme kaleminde 2024 yılında gerçekleşen tutar nedir?", | |
| f"SELECT gerceklesme_2024 FROM {A} WHERE gider_turu='Borç Verme'", | |
| "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), | |
| ("2023'te bütçesi en düşük olan gider türü hangisi?", | |
| f"SELECT gider_turu FROM {A} WHERE toplam_satiri=0 ORDER BY butce_2023 ASC LIMIT 1", | |
| "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), | |
| ("Cari transferlerin 2024 gerçekleşme oranı kaçtır?", | |
| f"SELECT gerceklesme_orani_2024 FROM {A} WHERE gider_turu='Cari Transferler'", | |
| "kolay", ["secim", "yuzde"], None, "Spider: seçim"), | |
| ("2023 yılında gerçekleşen toplam harcama ne kadar?", | |
| f"SELECT SUM(gerceklesme_2023) FROM {A} WHERE toplam_satiri=0", | |
| "orta", ["toplama", "toplam_satiri"], None, "Spider: SUM"), | |
| ("Sermaye transferleri için 2024'te ayrılan bütçe kaç milyon TL?", | |
| f"SELECT butce_2024/1000000.0 FROM {A} WHERE gider_turu='Sermaye Transferleri'", | |
| "orta", ["birim", "secim"], "1 milyon TL = 1.000.000 TL", "BIRD: birim kanıtı"), | |
| ("2021 yılında faiz giderleri ne kadar gerçekleşti?", None, | |
| "orta", ["cevapsiz"], None, "Cevapsız: 2021 yok"), | |
| ("2023 yılındaki sözleşmeli personel sayısı nedir?", | |
| f"SELECT sozlesmeli_personel FROM {B} WHERE yil=2023", | |
| "kolay", ["secim"], None, "Spider: seçim"), | |
| ("Memur sayısının en az olduğu yıl hangisidir?", | |
| f"SELECT yil FROM {B} ORDER BY memur ASC LIMIT 1", | |
| "kolay", ["siralama"], None, "Spider: ORDER BY"), | |
| ("Beş yıllık dönemde toplam personel sayısının ortalaması kaç?", | |
| f"SELECT AVG(toplam) FROM {B}", | |
| "orta", ["toplama"], None, "Spider: AVG"), | |
| ("Toplam personel 2021'den 2023'e yüzde kaç değişti?", | |
| f"SELECT ((SELECT toplam FROM {B} WHERE yil=2023)-(SELECT toplam FROM {B} WHERE yil=2021))*100.0/(SELECT toplam FROM {B} WHERE yil=2021)", | |
| "zor", ["artis_yuzdesi", "ic_ice"], "Değişim yüzdesi = (yeni - eski) / eski × 100", "BIRD: formül kanıtı"), | |
| ("Ekim 2024 aylık değişim oranı nedir?", | |
| f"SELECT degisim_aylik FROM {C} WHERE donem='2024-10'", | |
| "kolay", ["secim", "tarih", "yuzde"], None, "Spider: seçim"), | |
| ("2025'in ilk yarısında endeksin en yüksek değeri nedir?", | |
| f"SELECT MAX(endeks) FROM {C} WHERE donem BETWEEN '2025-01' AND '2025-06'", | |
| "orta", ["toplama", "tarih"], None, "Spider: MAX + tarih aralığı"), | |
| ("Aylık değişimin yüzde 2'nin altında kaldığı dönemler hangileri?", | |
| f"SELECT donem FROM {C} WHERE degisim_aylik < 2", | |
| "orta", ["filtre", "tarih", "yuzde"], None, "Spider: WHERE"), | |
| ("2024 Ağustos ayında yıllık değişim yüzde kaçtı?", | |
| f"SELECT degisim_yillik FROM {C} WHERE donem='2024-08'", | |
| "orta", ["secim", "tarih"], None, "Tarih yazım sırası farklı"), | |
| ("Eylül 2025 aylık değişimi ne olmuştur?", None, | |
| "orta", ["cevapsiz", "tarih"], None, "Cevapsız: kapsam dışı dönem"), | |
| ("Gaziantep'in 2022 yılı elektrik tüketimi nedir?", | |
| f"SELECT yil_2022 FROM {D} WHERE il='Gaziantep'", | |
| "kolay", ["secim", "deger_esleme"], None, "Spider: seçim"), | |
| ("IĞDIR ilinde 2024 tüketimi ne kadardı?", | |
| f"SELECT yil_2024 FROM {D} WHERE il='Iğdır'", | |
| "kolay", ["secim", "deger_esleme"], None, "Türkçe büyük harf: I/Ğ"), | |
| ("Akdeniz bölgesindeki illerin 2022 toplam elektrik tüketimi kaç bin MWh?", | |
| f"SELECT SUM(yil_2022) FROM {D} WHERE bolge='Akdeniz'", | |
| "orta", ["toplama", "filtre"], None, "Spider: SUM + WHERE"), | |
| ("2023 yılında en az elektrik tüketen il hangisidir?", | |
| f"SELECT il FROM {D} WHERE toplam_satiri=0 ORDER BY yil_2023 ASC LIMIT 1", | |
| "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), | |
| ("Tüketimi 2023'ten 2024'e artan illeri listeler misin?", | |
| f"SELECT il FROM {D} WHERE yil_2024 > yil_2023 AND toplam_satiri=0", | |
| "orta", ["filtre", "karsilastirma", "toplam_satiri"], None, "Spider: sütunlar arası koşul"), | |
| ("Doğu Anadolu bölgesinde kaç il bulunuyor?", | |
| f"SELECT COUNT(*) FROM {D} WHERE bolge='Doğu Anadolu'", | |
| "kolay", ["sayim", "filtre"], None, "Spider: COUNT"), | |
| ("Kocaeli'nin 2023 tüketimi kaç MWh'tir?", | |
| f"SELECT yil_2023*1000 FROM {D} WHERE il='Kocaeli'", | |
| "orta", ["birim", "secim"], "1 bin MWh = 1.000 MWh", "BIRD: birim kanıtı"), | |
| ("Antalya'nın 2025 elektrik tüketimi nedir?", None, | |
| "orta", ["cevapsiz"], None, "Cevapsız: 2025 yok"), | |
| ("2024 yılı vergi öncesi kârı ne kadardır?", | |
| f"SELECT cari_donem_2024 FROM {E} WHERE kalem='Vergi Öncesi Kâr'", | |
| "kolay", ["secim", "deger_esleme"], None, "Spider: seçim"), | |
| ("Hasılat 2023'ten 2024'e yüzde kaç arttı?", | |
| f"SELECT (cari_donem_2024-onceki_donem_2023)*100.0/onceki_donem_2023 FROM {E} WHERE kalem='Hasılat'", | |
| "orta", ["artis_yuzdesi"], "Artış yüzdesi = (yeni - eski) / eski × 100", "BIRD: formül kanıtı"), | |
| ("2023 yılında pazarlama giderleri kaç TL idi?", | |
| f"SELECT onceki_donem_2023*1000 FROM {E} WHERE kalem='Pazarlama Giderleri (-)'", | |
| "orta", ["birim", "negatif"], "Tablo bin TL cinsindendir", "BIRD: birim kanıtı"), | |
| ("Düğün salonu kiralama ücreti ne kadardır?", | |
| f"SELECT ucret FROM {F} WHERE hizmet='Düğün Salonu Kiralama'", | |
| "kolay", ["secim"], None, "Spider: seçim"), | |
| ("Çevre hizmetleri grubundaki hizmetlerin ortalama ücreti nedir?", | |
| f"SELECT AVG(ucret) FROM {F} WHERE hizmet_grubu='Çevre Hizmetleri'", | |
| "orta", ["toplama", "filtre", "birlesik_hucre"], None, "Spider: AVG + WHERE"), | |
| ("En ucuz hizmet hangisidir?", | |
| f"SELECT hizmet FROM {F} ORDER BY ucret ASC LIMIT 1", | |
| "kolay", ["siralama"], None, "Spider: ORDER BY"), | |
| ("01.01.2025 tarihinde yürürlüğe giren kaç hizmet var?", | |
| f"SELECT COUNT(*) FROM {F} WHERE yururluk_tarihi='2025-01-01'", | |
| "orta", ["sayim", "tarih"], None, "Türkçe tarih biçimi"), | |
| ("Nikah salonu ücreti nedir?", None, | |
| "kolay", ["cevapsiz"], None, "Cevapsız: tarifede yok"), | |
| ("Bahçelievler mahallesinin abone başına tüketimi kaç m³?", | |
| f"SELECT abone_basina_tuketim FROM {G} WHERE mahalle='Bahçelievler'", | |
| "kolay", ["secim"], None, "Spider: seçim"), | |
| ("Abone sayısı en az olan mahalle hangisidir?", | |
| f"SELECT mahalle FROM {G} WHERE toplam_satiri=0 ORDER BY abone_sayisi ASC LIMIT 1", | |
| "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), | |
| ("Abone sayısı 5.000'in üzerinde olan kaç mahalle var?", | |
| f"SELECT COUNT(*) FROM {G} WHERE abone_sayisi > 5000 AND toplam_satiri=0", | |
| "orta", ["sayim", "filtre", "tr_sayi", "toplam_satiri"], None, "Spider: COUNT + WHERE"), | |
| ("Mahallelerin ortalama yıllık su tüketimi nedir?", | |
| f"SELECT AVG(yillik_tuketim) FROM {G} WHERE toplam_satiri=0", | |
| "orta", ["toplama", "toplam_satiri"], None, "Spider: AVG"), | |
| ] | |
| def main(): | |
| from t2s.pipeline import build_reference_db | |
| from t2s.schema import connect | |
| ref = ROOT / "outputs" / "db" / "referans.db" | |
| build_reference_db(ref) | |
| con = connect(ref, readonly=True) | |
| items = [] | |
| allq = [("gelistirme", f"TR{i:03d}", x) for i, x in enumerate(Q, 1)] + \ | |
| [("test", f"TRT{i:02d}", x) for i, x in enumerate(QT, 1)] | |
| for bolum, qid, (soru, sql, zor, kat, kanit, uyar) in allq: | |
| if sql: | |
| res = con.execute(sql).fetchall() | |
| assert res and any(v is not None for row in res for v in row), (qid, soru, res) | |
| items.append({"id": qid, "bolum": bolum, "soru": soru, "altin_sql": sql, "cevaplanabilir": sql is not None, | |
| "zorluk": zor, "kategoriler": kat, "kanit": kanit, "uyarlama": uyar, | |
| "tablolar": sorted({t for t in (A, B, C, D, E, F, G) if sql and t in sql})}) | |
| out = ROOT / "benchmark" / "tr_tablosoru.json" | |
| out.write_text(json.dumps({"ad": "TR-TabloSQL v1", "aciklama": __doc__.strip().splitlines()[0], | |
| "soru_sayisi": len(items), "sorular": items}, ensure_ascii=False, indent=1), | |
| encoding="utf-8") | |
| print(f"{len(items)} soru yazıldı -> {out}") | |
| print("cevapsız:", sum(not x["cevaplanabilir"] for x in items), | |
| "| geliştirme:", sum(x["bolum"] == "gelistirme" for x in items), | |
| "| ayrılmış test:", sum(x["bolum"] == "test" for x in items)) | |
| if __name__ == "__main__": | |
| main() | |