Download scripts/run_all.py from SevdanurGenc/Text-to-SQL: direct link, hf CLI and curl.
- Browser
- Download file 5.11 kB
-
https://huggingface.co/SevdanurGenc/Text-to-SQL/resolve/main/scripts/run_all.py
- Command line
-
hf download hf://SevdanurGenc/Text-to-SQL/scripts/run_all.py
-
curl -L -o run_all.py https://huggingface.co/SevdanurGenc/Text-to-SQL/resolve/main/scripts/run_all.py
5.11 kB
| """Uçtan uca: örnek belgeler -> veritabanları -> test kümesi -> değerlendirme -> rapor. | |
| Kullanım: | |
| python scripts/run_all.py # kural tabanlı sistemler (anahtar gerekmez) | |
| python scripts/run_all.py --claude # + Claude (ANTHROPIC_API_KEY gerekli) | |
| python scripts/run_all.py --openai gpt-4o-mini | |
| python scripts/run_all.py --ollama qwen2.5-coder:7b | |
| python scripts/run_all.py --hizli # yalnızca TR kipi, kural tabanlı | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| import subprocess | |
| import sys | |
| import warnings | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parent.parent | |
| sys.path.insert(0, str(ROOT)) | |
| warnings.filterwarnings("ignore") | |
| from t2s.errors import ErrorLog # noqa: E402 | |
| from t2s.evaluate import SystemSpec, evaluate_system, gold_on_naive_db, load_benchmark # noqa: E402 | |
| from t2s.pipeline import (DOCS_DIR, build_database, build_reference_db, extraction_accuracy, # noqa: E402 | |
| number_format_stats) | |
| from t2s.report import write_report # noqa: E402 | |
| OUT = ROOT / "outputs" | |
| DB = OUT / "db" | |
| def main(): | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("--claude", nargs="?", const="auto", default=None, | |
| help="Claude model adı (boş/auto: API'deki en yeni model)") | |
| ap.add_argument("--openai", nargs="?", const="auto", default=None, help="OpenAI uyumlu model adı (auto: ilk model)") | |
| ap.add_argument("--ollama", nargs="?", const="auto", default=None, help="Ollama model adı (auto: kurulu ilk model)") | |
| ap.add_argument("--hizli", action="store_true") | |
| args = ap.parse_args() | |
| print("1) Örnek belgeler") | |
| if not any(DOCS_DIR.glob("*.pdf")): | |
| subprocess.run([sys.executable, str(ROOT / "data" / "generate_samples.py")], check=True) | |
| print(" ", ", ".join(sorted(p.name for p in DOCS_DIR.iterdir()))) | |
| print("2) Veritabanları (referans + 3 sayı kipi)") | |
| build_reference_db(DB / "referans.db") | |
| modes = ["tr"] if args.hizli else ["tr", "en", "text"] | |
| db_paths = {} | |
| for m in modes: | |
| db_paths[m] = DB / f"sistem_{m}.db" | |
| build_database(db_paths[m], mode=m, verbose=(m == "tr")) | |
| print("3) Tablo çıkarma doğruluğu") | |
| extraction = {} | |
| for meth in ["pdfplumber", "camelot-lattice", "camelot-stream", "auto"]: | |
| extraction[meth] = extraction_accuracy(meth) | |
| acc = sum(r["hucre_dogrulugu"] for r in extraction[meth]) / len(extraction[meth]) | |
| print(f" {meth:16} ort. hücre doğruluğu: %{100 * acc:.1f}") | |
| print("4) Test kümesi") | |
| subprocess.run([sys.executable, str(ROOT / "benchmark" / "build_benchmark.py")], check=True) | |
| items = load_benchmark() | |
| print("5) Sistemler") | |
| specs = [SystemSpec("kural_tr", "kural", "tr", True), | |
| SystemSpec("kural_tr_duzeltmesiz", "kural", "tr", False)] | |
| if not args.hizli: | |
| specs += [SystemSpec("kural_en_naif", "kural", "en", True), | |
| SystemSpec("kural_metin_naif", "kural", "text", True)] | |
| llms = [] | |
| from t2s.llm import list_models, make_backend | |
| for key, model in (("claude", args.claude), ("openai", args.openai), ("ollama", args.ollama)): | |
| if not model: | |
| continue | |
| if model == "auto": # model senkronizasyonu: sağlayıcının listesinden seç | |
| found = list_models(key) | |
| if not found: | |
| raise SystemExit(f"{key}: kullanılabilir model bulunamadı") | |
| model = found[0].id | |
| print(f" {key}: model otomatik seçildi -> {model}") | |
| llms.append((key, make_backend(key, model))) | |
| for key, be in llms: | |
| specs += [SystemSpec(f"{key}_tr", be, "tr", True), SystemSpec(f"{key}_tr_duzeltmesiz", be, "tr", False)] | |
| if not args.hizli: | |
| specs += [SystemSpec(f"{key}_en_naif", be, "en", True), SystemSpec(f"{key}_metin_naif", be, "text", True)] | |
| log_path = OUT / "hata_gunlugu.jsonl" | |
| if log_path.exists(): | |
| log_path.unlink() | |
| elog = ErrorLog(log_path) | |
| summaries = [] | |
| for spec in specs: | |
| if spec.db_mode not in db_paths: | |
| continue | |
| s = evaluate_system(spec, items, db_paths, DB / "referans.db", OUT / "sonuclar", elog) | |
| summaries.append(s) | |
| print(f" {spec.name:26} EX=%{s['EX']:5} test=%{s['bolum'].get('test')} " | |
| f"ilk deneme=%{s['EX_ilk_deneme']} cevapsız doğru red=%{s['cevapsiz_dogru_red']}") | |
| print("6) Sayı biçimi ablasyonu (altın SQL, naif veritabanları)") | |
| naive = gold_on_naive_db(items, db_paths, DB / "referans.db") | |
| for r in naive: | |
| print(f" {r['kip']:5} altın SQL EX=%{r['EX']} (bozulan {len(r['bozulan'])}/{r['n']})") | |
| nstats = number_format_stats(db_paths) | |
| ozet = {"sistemler": summaries, "cikarim": extraction, "sayi_ablasyonu": naive, | |
| "sayi_istatistik": nstats, "soru_sayisi": len(items)} | |
| (OUT / "ozet.json").write_text(json.dumps(ozet, ensure_ascii=False, indent=1), encoding="utf-8") | |
| rp = write_report(ozet, OUT / "basarim_raporu.html") | |
| print("7) Rapor ->", rp) | |
| if __name__ == "__main__": | |
| main() | |