Multiple-Choice Correct-Answer Filter
Çoktan seçmeli SFT dataset'lerinde şıkları tamamen kaldırıp soruyu saf metne indiren ve cevap mesajını doğru şıkkın düz metnine çeviren küçük bir Python aracı.
Fizik, matematik, tarih gibi derslere özgü kurulmamıştır — conversations veya messages formatındaki herhangi bir JSONL çoktan seçmeli veri setinde çalışır.
Ne yapar?
Önce:
user: Soru: Termodinamiğin birinci yasası neyi ifade eder?
A) Entropi her zaman artar
B) Enerji korunur
C) Mutlak sıcaklık sıfıra ulaşılamaz
D) Isı soğuktan sıcağa akar
assistant: Cevap: B) Enerji korunur
Sonra:
user: Termodinamiğin birinci yasası neyi ifade eder?
assistant: Enerji korunur
- Soru metnindeki tüm şık satırları ve "Soru:" / "Question:" prefix'i temizlenir.
- Cevap mesajı, doğru şıkkın harf/prefix'siz düz metnine dönüşür.
- Serbest metinli (çoktan seçmeli olmayan) kayıtlar varsayılan olarak olduğu gibi geçirilir.
Desteklenen formatlar
| Yapı | Örnek |
|---|---|
conversations |
[{"from": "human/gpt", "value": "..."}] |
messages |
[{"role": "user/assistant", "content": "..."}] |
Desteklenen cevap prefixleri:
- Türkçe:
Cevap: B),Doğru cevap: B,**Cevap:** **B) ...** - İngilizce:
Answer: B,The answer is B,**Answer:** B,B is correct
A–Z arası harfler (fizik80k örneklerinde A–J'ye kadar şık olabiliyor).
Kurulum
Dependency yok, pure Python 3.10+.
wget https://huggingface.co/MRBeDev/mc-answer-filter/resolve/main/filter_correct_answer.py
Kullanım
1) HF'ten otomatik indir + temizle (tüm split'ler birden):
export HF_TOKEN=hf_... # private dataset için
python3 filter_correct_answer.py \
--hf mrbe-share/fizik80k \
--outdir ./out/fizik
2) Tek lokal dosya:
python3 filter_correct_answer.py \
--file train.jsonl \
--output train_clean.jsonl
3) Çoktan seçmeli olmayanları at:
python3 filter_correct_answer.py \
--hf mrbe-share/fizik80k \
--outdir ./out/fizik \
--drop-non-mc
4) Sadece belirli bir split:
python3 filter_correct_answer.py \
--hf MRBeDev/physics-reasoning-dataset \
--split-path train.jsonl \
--outdir ./out/physics
CLI flag'leri
| Flag | Açıklama |
|---|---|
--hf REPO |
HuggingFace dataset id |
--file PATH |
Lokal .jsonl (--hf yerine) |
--output PATH |
Tek dosya modu çıktı (--file ile) |
--outdir DIR |
Çoklu dosya modu çıkış dizini (--hf ile) |
--split-path X |
Belirli dosya(lar)ı işle (birden fazla kez verilebilir) |
--drop-non-mc |
Çoktan seçmeli olmayan kayıtları at |
--token TOKEN |
HF API token (private için) |
--cache-dir DIR |
İndirilen dosyaların cache'i (default /tmp/hf_dataset_cache) |
--force-download |
Cache'i yok say |
Dataset bütünlüğü
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 ve cevap mesajı sadeleştirilir. --drop-non-mc ile bu davranışı değiştirebilirsin.
Lisans
Apache 2.0. İstediğin gibi kullan.