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.