Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

LGS Soru Tahmin ve Soru Üretim Projesi

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.


🎯 Projenin Amacı

Bu projenin temel hedefi:

  1. 2018–günümüz arası LGS sorularını yapılandırılmış bir veri setine dönüştürmek,

  2. 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,
  3. 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.


🧱 Mimari Genel Bakış

Proje, kabaca üç ana katmandan oluşacak şekilde tasarlandı:

  1. 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
  2. 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?)
  3. 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.


📂 Klasör Yapısı

Ö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.


📥 Gerekli Kurulumlar

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 Seti Hazırlama Akışı

Veri setini hazırlayan ana betik: src/prepare_dataset.py

1. PDF Dosyalarını Yerleştir

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.

2. PDF → Ham Soru Verisi

python src/prepare_dataset.py \
  --input-root data/raw \
  --output-jsonl data/processed/questions_raw.jsonl \
  --output-csv data/processed/questions_raw.csv

Bu komut:

  • data/raw altı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.

3. Etkileşimli Etiketleme (Opsiyonel)

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.jsonl

Bu modda betik:

  • JSONL dosyasını satır satır okur,
  • her soru için terminalde özet bir görünüm gösterir,
  • senden topic ve question_type giriş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.


📊 Konu Dağılımı Örneği

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.


🔬 Araştırma Boyutu

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.


🧪 Gelecek Aşamalar (Roadmap)

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.

🤝 Katkı ve Geri Bildirim

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ı.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages