MRBeDev commited on
Commit
7d91ba4
·
verified ·
1 Parent(s): 4bdce1f

add README

Browse files
Files changed (1) hide show
  1. README.md +121 -0
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.