add README
Browse files
README.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- tr
|
| 5 |
+
- en
|
| 6 |
+
tags:
|
| 7 |
+
- dataset-tools
|
| 8 |
+
- multiple-choice
|
| 9 |
+
- sft
|
| 10 |
+
- data-cleaning
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# Multiple-Choice Correct-Answer Filter
|
| 14 |
+
|
| 15 |
+
Çoktan seçmeli SFT dataset'lerinde **sorulardaki yanlış şıkları silip sadece doğru cevabı bırakan** küçük bir Python aracı.
|
| 16 |
+
|
| 17 |
+
Fizik, matematik, tarih gibi derslere özgü kurulmamıştır — `conversations` veya `messages` formatındaki herhangi bir JSONL çoktan seçmeli veri setinde çalışır.
|
| 18 |
+
|
| 19 |
+
## Ne yapar?
|
| 20 |
+
|
| 21 |
+
**Önce:**
|
| 22 |
+
```
|
| 23 |
+
Soru: Termodinamiğin birinci yasası neyi ifade eder?
|
| 24 |
+
A) Entropi her zaman artar
|
| 25 |
+
B) Enerji korunur
|
| 26 |
+
C) Mutlak sıcaklık sıfıra ulaşılamaz
|
| 27 |
+
D) Isı soğuktan sıcağa akar
|
| 28 |
+
|
| 29 |
+
Cevap: B) Enerji korunur
|
| 30 |
+
```
|
| 31 |
+
|
| 32 |
+
**Sonra (filtre uygulanmış):**
|
| 33 |
+
```
|
| 34 |
+
Soru: Termodinamiğin birinci yasası neyi ifade eder?
|
| 35 |
+
B) Enerji korunur
|
| 36 |
+
|
| 37 |
+
Cevap: B) Enerji korunur
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
Asistan mesajına dokunmaz, sadece soru gövdesindeki distractor'ları siler.
|
| 41 |
+
|
| 42 |
+
## Desteklenen formatlar
|
| 43 |
+
|
| 44 |
+
| Yapı | Örnek |
|
| 45 |
+
|------|-------|
|
| 46 |
+
| `conversations` | `[{"from": "human/gpt", "value": "..."}]` |
|
| 47 |
+
| `messages` | `[{"role": "user/assistant", "content": "..."}]` |
|
| 48 |
+
|
| 49 |
+
Desteklenen cevap prefixleri:
|
| 50 |
+
- Türkçe: `Cevap: B)`, `Doğru cevap: B`, `**Cevap:** B`
|
| 51 |
+
- İngilizce: `Answer: B`, `The answer is B`, `**Answer:** B`, `B is correct`
|
| 52 |
+
|
| 53 |
+
A–Z arası harfler (fizik80k örneklerinde A–J'ye kadar şık olabiliyor).
|
| 54 |
+
|
| 55 |
+
## Kurulum
|
| 56 |
+
|
| 57 |
+
Dependency yok, pure Python 3.10+.
|
| 58 |
+
|
| 59 |
+
```bash
|
| 60 |
+
wget https://huggingface.co/MRBeDev/mc-answer-filter/resolve/main/filter_correct_answer.py
|
| 61 |
+
```
|
| 62 |
+
|
| 63 |
+
## Kullanım
|
| 64 |
+
|
| 65 |
+
**1) HF'ten otomatik indir + temizle (3 split birden):**
|
| 66 |
+
|
| 67 |
+
```bash
|
| 68 |
+
export HF_TOKEN=hf_... # private dataset için
|
| 69 |
+
|
| 70 |
+
python3 filter_correct_answer.py \
|
| 71 |
+
--hf mrbe-share/fizik80k \
|
| 72 |
+
--outdir ./out/fizik
|
| 73 |
+
```
|
| 74 |
+
|
| 75 |
+
**2) Tek lokal dosya:**
|
| 76 |
+
|
| 77 |
+
```bash
|
| 78 |
+
python3 filter_correct_answer.py \
|
| 79 |
+
--file train.jsonl \
|
| 80 |
+
--output train_clean.jsonl
|
| 81 |
+
```
|
| 82 |
+
|
| 83 |
+
**3) Çoktan seçmeli olmayanları at:**
|
| 84 |
+
|
| 85 |
+
```bash
|
| 86 |
+
python3 filter_correct_answer.py \
|
| 87 |
+
--hf mrbe-share/fizik80k \
|
| 88 |
+
--outdir ./out/fizik \
|
| 89 |
+
--drop-non-mc
|
| 90 |
+
```
|
| 91 |
+
|
| 92 |
+
**4) Sadece belirli bir split:**
|
| 93 |
+
|
| 94 |
+
```bash
|
| 95 |
+
python3 filter_correct_answer.py \
|
| 96 |
+
--hf MRBeDev/physics-reasoning-dataset \
|
| 97 |
+
--split-path train.jsonl \
|
| 98 |
+
--outdir ./out/physics
|
| 99 |
+
```
|
| 100 |
+
|
| 101 |
+
## CLI flag'leri
|
| 102 |
+
|
| 103 |
+
| Flag | Açıklama |
|
| 104 |
+
|------|----------|
|
| 105 |
+
| `--hf REPO` | HuggingFace dataset id |
|
| 106 |
+
| `--file PATH` | Lokal .jsonl (--hf yerine) |
|
| 107 |
+
| `--output PATH` | Tek dosya modu çıktı (--file ile) |
|
| 108 |
+
| `--outdir DIR` | Çoklu dosya modu çıkış dizini (--hf ile) |
|
| 109 |
+
| `--split-path X` | Belirli dosya(lar)ı işle (birden fazla kez verilebilir) |
|
| 110 |
+
| `--drop-non-mc` | Çoktan seçmeli olmayan kayıtları at |
|
| 111 |
+
| `--token TOKEN` | HF API token (private için) |
|
| 112 |
+
| `--cache-dir DIR` | İndirilen dosyaların cache'i (default `/tmp/hf_dataset_cache`) |
|
| 113 |
+
| `--force-download` | Cache'i yok say |
|
| 114 |
+
|
| 115 |
+
## Dataset bütünlüğü
|
| 116 |
+
|
| 117 |
+
Default olarak çoktan seçmeli olmayan kayıtlar **olduğu gibi** geçirilir, böylece dataset boyutu korunur. Sadece çoktan seçmeli soruların içi temizlenir. `--drop-non-mc` ile bu davranışı değiştirebilirsin.
|
| 118 |
+
|
| 119 |
+
## Lisans
|
| 120 |
+
|
| 121 |
+
Apache 2.0. İstediğin gibi kullan.
|