Yapay zekâ destekli seviye testi ve kitap öneri sistemi nasıl kurulur?
- Konu
- Yapay Zeka
- Yazar
- SayLabs Ekibi
- Tarih
- Okuma süresi
- 5 dk
Bir yayınevi ya da kitap satıcısı için en zor müşteri, ne alacağını bilmeyen müşteridir. Sınava hazırlanan bir öğrenci ya da velisi yüzlerce kaynak arasında kaybolur, sonunda ya en çok satanı alır ya da hiçbir şey almadan çıkar. Seviye testi ve kitap öneri sistemi bu boşluğu doldurmak için yapılır. Bu yazıda, böyle bir sistemi kurarken hangi kararların gerçekten önemli olduğunu ve yapay zekânın nerede işe yarayıp nerede kurala bırakılması gerektiğini anlatıyoruz.
Örneğimiz kendi projemiz: Setinisec için geliştirdiğimiz Level Test eklentisi. WordPress üzerinde çalışan bu eklenti, LGS, TYT ve AYT'ye hazırlanan öğrencileri 6 aşamalı bir sihirbazdan geçiriyor, sınav türüne ve net puanlara göre kişiselleştirilmiş bir kitap seti oluşturuyor ve bu seti doğrudan WooCommerce sepetine bağlıyor.
Seviye testi aslında neyi ölçmeli?
"Seviye testi" denince akla ilk gelen, onlarca sorudan oluşan bir deneme sınavıdır. Oysa öneri sistemi için asıl soru şudur: öneriyi değiştirecek bilgi hangisi? Kullanıcıdan alınan her veri, öneriyi değiştirmiyorsa sadece formu uzatır ve terk oranını artırır.
Setinisec'te bu soruya verdiğimiz cevap sınav türü ve net puanlardı. Öğrenci zaten deneme sınavlarına giriyor ve netlerini biliyor; aynı ölçümü sıfırdan bir soru bankasıyla tekrarlamak hem uzun sürer hem de satış sayfasında kimsenin oturup çözmeyeceği bir sınav demektir. Net puan, ders bazında güçlü ve zayıf yönleri görmek için yeterince ayrıntılı ve kullanıcının elinde hazır olan bir veri.
Soru ve adım tasarımı: sihirbazı neden böldük?
Tek sayfalık uzun bir form yerine 6 aşamalı bir sihirbaz kullanmamızın sebebi, her adımın bir öncekine bağlı olmasıydı. LGS'ye hazırlanan bir öğrenciye AYT dersleri sorulmaz; sınav türü seçildiği anda sonraki adımların içeriği daralır. Bu, hem kullanıcının gördüğü alan sayısını azaltır hem de mantıksız veri girişini baştan engeller.
- Önce sınıflandıran soru gelir: sınav türü. Sonraki her adım bu cevaba göre şekillenir.
- Netler ders bazında ve sınavın kendi soru sayısı sınırları içinde alınır; sınır dışı değer arayüzde reddedilir, sunucuda tekrar doğrulanır.
- Her adım tek bir konuya odaklanır ve geri dönüp değiştirilebilir. Kullanıcı bir neti düzeltmek için baştan başlamak zorunda kalmamalı.
- Adımlar arası geçişler sayfa yenilemeden yapılır; ilerleme kaybolmaz. Eklentide bunu AJAX ile çözdük.
- Mobil öncelikli düşünülür. Bu tür testler çoğunlukla telefondan, kısa bir aralıkta doldurulur.
Seviyeyi belirlemek: kural mı, model mi?
Burada en sık yapılan hata, her şeyi yapay zekâya bırakmaktır. Net puandan seviyeye geçiş çoğu zaman açık ve denetlenebilir bir eşleme ile yapılabilir: belli bir aralıktaki net, belli bir zorluk seviyesine karşılık gelir. Bu eşlemeyi yayınevinin kendi editörleri belirler, çünkü hangi kitabın hangi seviyeye yazıldığını en iyi onlar bilir.
Kural tabanlı katmanın iki büyük avantajı var. Birincisi, sonuç açıklanabilir: bir veli "neden bu seti önerdiniz?" diye sorduğunda cevabı verebilirsiniz. İkincisi, değiştirilebilir: eşik değerleri yönetim panelinden güncellenir, kod değişmez. Setinisec eklentisinde kapsamlı bir yönetim paneli bulunmasının sebebi de bu; ürünler ve öneri mantığı geliştiriciye bağımlı kalmadan yönetilebilmeli.
Eşleme yazılırken sınır durumlarını da baştan düşünmek gerekir. İki seviyenin tam sınırında kalan bir net hangi tarafa yuvarlanacak? Bir derste çok yüksek, diğerinde çok düşük neti olan öğrenciye tek bir genel seviye mi verilecek, yoksa ders bazında ayrı seviyeler mi? Hiç net girmeyen ya da sınava yeni başlayan öğrenci için başlangıç seti ne olacak? Bu soruların cevabı teknik değil, editoryal bir karardır; ama koda dökülmeden önce yazılı hale getirilmezse her geliştirici kendi yorumunu ekler ve sistem tutarsızlaşır. Pratik bir yöntem, birkaç örnek öğrenci profili hazırlayıp her biri için beklenen seti içerik ekibiyle önceden yazmak ve sistemi bu profillerle test etmektir.
Yapay zekâ nerede değer katar?
Yapay zekâyı, kuralların zorlandığı yerde kullanmak gerekir. Tek bir derste zayıf olan öğrenciyi tanımlamak kolaydır; ama birden fazla derste farklı düzeylerde olan bir öğrencinin netlerini bir bütün olarak değerlendirip güçlü ve zayıf yönlerine göre bir öğrenme yolu çıkarmak, elle yazılmış kurallarla hızla karmaşıklaşır. Level Test'teki öneri algoritması tam bu noktada devreye giriyor: netleri analiz edip öğrencinin profiline uyan kitap kombinasyonunu oluşturuyor.
Önemli olan sıralamadır: önce kurallar uygun aday kümesini belirler, yapay zekâ yalnızca bu küme içinde seçim ve sıralama yapar. Böylece model ne kadar yaratıcı davranırsa davransın, kataloğun dışına ya da yanlış sınav türüne taşamaz.
// Basitleştirilmiş örnek: kural önce süzer, model yalnızca aday içinde sıralar
const adaylar = katalog.filter(kitap =>
kitap.sinavTuru === ogrenci.sinavTuru &&
kitap.stoktaMi &&
kitap.seviyeler.includes(seviyeBelirle(ogrenci.netler))
)
const sirali = await modelIleSirala(ogrenci.netler, adaylar)
// Son kontrol: modelin döndürdüğü her kimlik aday listesinde olmalı
const set = sirali.filter(id => adaylar.some(k => k.id === id)).slice(0, 5)Hatalı öneri riskini azaltmak
Kitap önerisinde hatanın bedeli somuttur: yanlış seviyede bir set alan öğrenci ya zaman kaybeder ya da iade talebi gelir. Bu riski azaltmak için birkaç katman kullanmak gerekir.
- Katalog dışı öneri imkânsız olmalı. Modelin çıktısı her zaman gerçek ürün kimlikleriyle doğrulanır; listede olmayan kimlik atılır.
- Stokta olmayan ürün önerilmez. Öneri anında stok bilgisi WooCommerce'ten okunur, önbellekteki eski veriye güvenilmez.
- Girdi doğrulaması sunucuda tekrarlanır. Arayüzde engellenen hatalı net, doğrudan istekle tekrar gönderilebilir.
- Yapay zekâ yanıt vermezse sistem durmaz. Kural tabanlı varsayılan set devreye girer; kullanıcı boş ekran görmez.
- Önerinin gerekçesi kullanıcıya gösterilir. "Matematik netinize göre bu seviye" gibi kısa bir açıklama, güveni artırır ve yanlışlığı fark etmeyi kolaylaştırır.
Öneriyi satışa bağlamak
Öneri ekranı satın almayla bitmiyorsa sistemin işi yarım kalır. Setinisec'te eklentiyi WooCommerce ile tam entegre çalışacak şekilde kurduk: oluşan kitap seti otomatik olarak ürünlerden derleniyor ve kullanıcı tek adımda sepete ekleyebiliyor. Öneri ile ödeme arasında ayrı bir arama ya da ürün sayfası dolaşması yok.
Bu entegrasyonun teknik tarafında dikkat edilmesi gereken nokta, ürün verisinin tek kaynaktan gelmesidir. Öneri motoru kendi kitap listesini tutarsa fiyat ve stok bir süre sonra mağazadan kopar. Kitapların seviye ve sınav türü gibi öneri için gereken bilgileri, mağazadaki ürünün kendisine bağlı tutmak bu kopukluğu önler. Eklentideki ürün yönetimi bu yüzden WooCommerce ürünleri üzerinde çalışıyor. Öğrencinin ilerlemesini takip eden bölüm ise ileride önerinin tekrar yapılmasına ve setin güncellenmesine zemin hazırlıyor.
Kurmadan önce karar listesi
- Öneriyi değiştiren girdiler belli mi? Belli değilse önce bunu netleştirin; form tasarımı ondan sonra gelir.
- Mevcut bir ölçüm (net puan, deneme sonucu) kullanılabiliyor mu, yoksa gerçekten yeni bir test mi gerekiyor?
- Seviye eşlemesini kim belirleyecek ve panelden kim güncelleyecek?
- Yapay zekâ hangi adımda devreye girecek ve hangi aday kümesiyle sınırlanacak?
- Model yanıt vermediğinde gösterilecek kural tabanlı varsayılan set hazır mı?
- Ürün, stok ve fiyat bilgisi tek kaynaktan, yani mağazadan mı okunuyor?
- Önerinin gerekçesi kullanıcıya gösteriliyor mu?
Bu soruların çoğu teknik değil, ürün kararıdır. Yapay zekâ bu tür bir sistemde güçlü bir araçtır ama tek başına bir öneri motoru değildir; doğru girdi, açık kurallar ve katalogla sıkı bir bağ olmadan iyi sonuç vermez.
- #yapay zeka
- #öneri sistemi
- #woocommerce
- #eğitim teknolojisi