File size: 3,550 Bytes
a72d1cf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # Pilot çalışma: geliştirmede görülmemiş belge düzenleri
Bu klasördeki pilot, sistemi geliştirme sırasında hiç görmediği belge düzenleriyle sınar. Gerçek belgeler bulunana kadar kurgusal belgeler kullanılıyor; ancak aynı düzenek gerçek belgelerle de değiştirilmeden çalışır.
| Dosya | Ne işe yarar |
|---|---|
| `belge_uret.py` | Kurgusal pilot belgeleri, 44 soruyu ve altın cevapları üretir (tohum 31) |
| `belgeler/` | Faaliyet raporu (PDF), KAP tarzı finansal tablolar (PDF), il istatistik bülteni (HTML) |
| `sorular.json` | Sorular ve ham veriden hesaplanan altın cevaplar |
| `ham_degerler.json` | Değer geri çağırma ölçümü için belgedeki tüm ham sayılar |
| `pilot_calistir.py` | Pilotu çalıştırır: çıkarım tanılaması ve cevap doğruluğu |
| `kod_parmak_izi.txt` | Pilot öncesi dondurulan kodun SHA-256 özetleri |
| `sonuclar/` | Dondurulmuş kodla sonuçlar: `pilot_sonuclari.json` ve `pilot.db` |
| `sonuclar_duzeltme/` | Pilotta bulunan hatalar düzeltildikten sonraki sonuçlar |
| `kod_parmak_izi_duzeltme.txt` | Düzeltilmiş kodun SHA-256 özetleri |
| `PILOT_RAPORU.md` / `Tablo2SQL-TR_Pilot_Raporu.docx` | Pilot raporu |
Bütün kurum, il ve ilçe adları kurgusaldır ve her sayfada "KURGUSAL ÖRNEK BELGE" uyarısı vardır.
## Çalıştırma
```bash
python pilot/belge_uret.py # belgeleri ve soruları yeniden üretir
python pilot/pilot_calistir.py # kural tabanlı arka uçla pilotu çalıştırır
```
Bir LLM arka ucuyla çalıştırmak için `--claude`, `--openai MODEL` ya da `--ollama MODEL` ekleyin.
## Gerçek belgelerle kullanım
1. Belgeleri bir klasöre koyun, örneğin `pilot_gercek/belgeler/`.
2. Soruları bir JSON dosyasına yazın. Altın SQL gerekmez, yalnızca beklenen cevabı belgeden okuyup yazın:
```json
{"sorular": [
{"id": "R01", "belge": "rapor.pdf", "soru": "2024 personel gideri gerçekleşmesi ne kadar?", "tip": "sayi", "cevap": 406187663.15},
{"id": "R02", "belge": "rapor.pdf", "soru": "En yüksek bütçeli gider türü hangisi?", "tip": "metin", "cevap": "Sermaye Giderleri"},
{"id": "R03", "belge": "rapor.pdf", "soru": "Gerçekleşmesi %90'ın altında kalan gider türleri hangileri?", "tip": "liste", "cevap": ["Faiz Giderleri", "Borç Verme"]},
{"id": "R04", "belge": "rapor.pdf", "soru": "2019 yılı personel sayısı kaç?", "tip": "cevapsiz", "cevap": null}
]}
```
Bir sayının işareti önemli değilse (ör. parantezli giderlerde) soruya `"isaret_serbest": true` ekleyin.
3. Pilotu çalıştırın:
```bash
python pilot/pilot_calistir.py --belgeler pilot_gercek/belgeler --sorular pilot_gercek/sorular.json --cikti pilot_gercek/sonuclar
```
Değer geri çağırma ölçümü (`--ham`) isteğe bağlıdır; gerçek belgelerde ham değer listesi yoksa atlanır.
## Değerlendirme kuralları
Doğruluk cevap düzeyinde ölçülür; altın SQL kullanılmaz.
- **sayi:** sonucun ilk satırındaki sayılardan biri |a − b| ≤ 0,01 + 10⁻³·|b| ile beklenene eşitse doğru.
- **metin:** ilk satırdaki metinlerden biri Türkçe katlama sonrası beklenene eşitse doğru. Tarihler ISO karşılığıyla karşılaştırılır ("Ekim 2025" = "2025-10").
- **liste:** ilk sütundaki değer kümesi beklenen kümeye eşitse doğru.
- **cevapsiz:** sistem cevap üretmezse doğru.
Cevap düzeyindeki ölçüt, yanlış SQL'in tesadüfen doğru değeri döndürdüğü durumları da doğru sayabilir. Bu yüzden sonuçlar SQL'lerle birlikte incelenmelidir.
|