Bu repo, LGS (Liselere Geçiş Sınavı) için yapay zeka tabanlı
- geçmiş yılların sorularını analiz eden,
- konu ve soru tipi dağılımlarını çıkaran,
- gelecekte çıkabilecek sorular hakkında tahminde bulunmayı ve
- uzun vadede LGS formatına uygun yeni sorular üreten
bir araştırma ve prototip geliştirme projesidir.
Odak noktamız şimdilik Türkçe ve Matematik dersleridir.
Bu projenin temel hedefi:
-
2018–günümüz arası LGS sorularını yapılandırılmış bir veri setine dönüştürmek,
-
Soruları
- konuya göre (ör. "Sözcükte Anlam", "Üslü Sayılar"),
- soru türüne göre (ör. işlem temelli, grafik yorumlama, sözel mantık),
- zorluk seviyesine göre etiketleyebilmek,
-
Bu veriyi kullanarak
- soru dağılımlarını tahmin eden,
- gelecekteki sınavlar için olası soru profilleri çıkaran,
- ve uzun vadede LGS formatına yakın sorular üreten modeller geliştirmek.
Bu repo şu an için özellikle veri seti hazırlığı ve analiz altyapısı üzerine odaklanmıştır.
Proje, kabaca üç ana katmandan oluşacak şekilde tasarlandı:
-
Veri Katmanı
- PDF kitapçıkların toplanması
- Soruların PDF’lerden metin olarak çıkarılması
- Soru metinlerinin parçalanması (soru kökü + şıklar)
- JSONL / CSV formatında veri seti oluşturma
-
Analiz ve Etiketleme Katmanı
- Konu dağılımlarını çıkarmak (yıllara göre tablo)
- Soru türü / konu / zorluk etiketlerini eklemek
- Basit istatistikler (örneğin her yıl kaç adet “Sözcükte Anlam” sorusu var?)
-
Model Katmanı (gelecek aşama)
- LLM tabanlı metin modelleri (Transformer, LLaMA türevleri vb.)
- Görsel içeren sorular için multimodal modeller
- Tahmin ve soru üretim deneyleri
Bu README daha çok 1. ve 2. adım yani veri tarafını anlatır.
Önerilen klasör yapısı şöyledir:
lgs-ai/
README.md
src/
prepare_dataset.py # PDF -> JSONL/CSV veri seti betiği
data/
raw/
turkce/
LGS_2018_Turkce.pdf
LGS_2019_Turkce.pdf
...
matematik/
LGS_2018_Matematik.pdf
LGS_2019_Matematik.pdf
...
processed/
questions_raw.jsonl # ham çıkarılmış sorular
questions_raw.csv
questions_labeled.jsonl # etiketlenmiş veri (opsiyonel)
notebooks/
exploration.ipynb # ilk veri analizi ve görselleştirmeler (isteğe bağlı)
models/
(ileride eklenecek)
Bu yapıyı gönül rahatlığıyla değiştirebilirsin; ancak prepare_dataset.py varsayılan olarak yukarıdaki dizinleri kullanacak şekilde yazılmıştır.
Projeyi kullanmadan önce temel Python ortamını hazırlamak için:
# (isteğe bağlı) sanal ortam
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -U pdfplumber pandasİleride model eğitimine geçtiğinde ek olarak transformers, torch, scikit-learn vb. kütüphaneler de eklenecektir.
Veri setini hazırlayan ana betik: src/prepare_dataset.py
Aşağıdaki klasörlere LGS kitapçıklarını yerleştir:
- Türkçe PDF’leri:
data/raw/turkce/ - Matematik PDF’leri:
data/raw/matematik/
Dosya adları şu formata yakın olmalı:
LGS_2018_Turkce.pdf
LGS_2019_Turkce.pdf
LGS_2020_Turkce.pdf
...
LGS_2018_Matematik.pdf
...
Betik, dosya adından yıl ve ders bilgisini otomatik parse eder.
python src/prepare_dataset.py \
--input-root data/raw \
--output-jsonl data/processed/questions_raw.jsonl \
--output-csv data/processed/questions_raw.csvBu komut:
data/rawaltındaki tüm PDF’leri gezer,- her PDF’ten metni çıkarır,
- soru numaralarını (
1.,2.,3.…) ve şıkları (A),B),C),D)) regex ile yakalar, - her soru için şu şemada bir kayıt üretir:
{
"id": "2019_Turkce_1",
"year": 2019,
"course": "Türkçe",
"question_number": 1,
"question_text": "...soru gövdesi...",
"options": {
"A": "...",
"B": "...",
"C": "...",
"D": "..."
},
"correct_option": null,
"topic": null,
"question_type": null,
"source_pdf": "LGS_2019_Turkce.pdf"
}- JSONL ve CSV formatlarında
data/processed/klasörüne yazar.
Aynı betik, basit bir etiketleme modu da sağlayacak şekilde tasarlanmıştır:
python src/prepare_dataset.py \
--label data/processed/questions_raw.jsonl \
--output-labeled data/processed/questions_labeled.jsonlBu modda betik:
- JSONL dosyasını satır satır okur,
- her soru için terminalde özet bir görünüm gösterir,
- senden
topicvequestion_typegirişi ister.
Örnek etiketler:
topic: "Sözcükte Anlam", "Cümlede Anlam", "Parçada Anlam", "Üslü Sayılar", "Olasılık"...question_type: "sözcükte anlam", "grafik yorumlama", "işlem temelli", "şekil yorumu"...
Bu sayede, ileride model eğitiminde kullanabileceğin elle doğrulanmış etiketli bir veri seti oluşur.
Hem Türkçe hem Matematik için yıllara göre konu dağılımlarını şu formda saklamayı planlıyoruz:
{
"2020": {
"Sözcükte Anlam": 2,
"Cümlede Anlam": 2,
"Parçada Anlam": 3,
"Sözel Mantık / Görsel Okuma": 1
},
"2021": {
"Sözcükte Anlam": 2,
"Cümlede Anlam": 2,
"Parçada Anlam": 10,
"Sözel Mantık / Görsel Okuma": 4
}
}Bu yapıdan:
- Her yıl hangi konudan kaç soru geldiğini,
- Hangi konuların yıllar içinde arttığını / azaldığını,
- Gelecek yıl hangi konulara ağırlık verilme ihtimalinin daha yüksek olduğunu
istatistiksel olarak incelemek mümkün olacak.
Bu proje yalnızca kod yazmaktan ibaret değil; aynı zamanda bir araştırma projesi:
- Farklı ülkelerde sınav sorusu tahmini / üretimi için kullanılan yöntemleri derliyoruz.
- Özellikle multimodal modellerle görsel içerikli soruların nasıl temsil edilebileceğini inceliyoruz.
- Soru metinlerini sonlu otomat mantığıyla parçalara ayıran FSA/FA tabanlı gösterimler deniyoruz.
- LGS özelinde SWOT ve SMART analizleri yaparak, projenin hem akademik hem ticari açıdan fizibilitesini tartışıyoruz.
Bu README, teknik altyapının giriş niteliğindeki özetidir; detaylı literatür sonuçları ve notlar docs/ klasörü altında (ileride) toplanacaktır.
Kısa vadede planlanan adımlar:
- PDF çıkarım kalitesini iyileştirmek (satır sonu sorunları, tablo/görsel başlıklarını ayıklama).
- Etkileşimli etiketleme aracını daha kullanıcı dostu hâle getirmek.
- İlk basit istatistikleri ve konu dağılımlarını Jupyter defterinde görselleştirmek.
Orta vadede:
- LLM tabanlı bir modelle soru tipini otomatik tahmin denemeleri.
- Basit bir LGS soru tahmin algoritması (ör. konu bazlı dağılım tahmini).
- Aynı formatta yeni soru önerileri üreten bir prototip.
Uzun vadede:
- Multimodal (metin + görsel) LGS soru üretimi.
- Yayın evleri ve öğrenciler için web tabanlı bir arayüz.
- Model performansını ölçmek için gerçek öğrenci verileriyle pilot uygulamalar.
Bu proje henüz erken aşama bir araştırma/prototip çalışmasıdır.
- Hatalar, eksikler, fikrini çeken noktalar varsa issue açabilir veya pull request gönderebilirsin.
- PDF formatları, farklı dersler veya yeni sınav türleri için katkı yapmak istersen, veri yapısını birlikte genişletebiliriz.
LGS gibi yüksek baskılı bir sınav için daha adil, şeffaf ve analiz edilebilir bir soru dünyası kurmak mümkün. Bu repo o yolculuğun ilk adımı.