2010-06-03 32 views
13

Bir müşteri, bir onlinebased öğrenme sitesi için basit bir aralıklı yeniden algoritma (SRS) eklememi istedi. Ama kendimi içine atmadan önce, bunu toplumla tartışmak isterim.Öğrenme için aralıklı tekrarlama (SRS)

Temel olarak, site kullanıcıya bir sürü soru soruyor (bir veritabanından toplam 100 sorudan 10'unu otomatik olarak seçerek) ve kullanıcı doğru veya yanlış bir yanıt veriyor. Kullanıcılar daha sonra örneğin bir veritabanında saklanır sonuç:

Şimdi
userid questionid correctlyanswered dateanswered 
1  123   0 (no)    2010-01-01 10:00 
1  124   1 (yes)   2010-01-01 11:00 
1  125   1 (yes)   2010-01-01 12:00  

, tüm cevapları öğrenmek için kullanıcıların yeteneğini en üst düzeye çıkarmak, bir kullanıcı, bir dahaki sefere o alır, böylece bir SRS algoritmasını uygulamak gerekir Sınav, soruları daha sık yanlış cevaplandı; sorular doğru cevaplanmıştı. Ayrıca, daha önce yanlış cevaplanan ancak son zamanlarda sık sık doğru cevaplanan sorular daha az sıklıkta ortaya çıkmalıdır.

Daha önce böyle bir şey uygulayan var mı? Herhangi bir ipucu veya öneriniz var mı?

Sayılan buldum iyi bağlantılar şunlardır:

cevap

6

Ne yapmak istediğiniz X_i numaralı tüm sorulara i tüm sorularınız için sahip olmaktır. Bu sayıları normalleştirebilir (toplamlarını 1 yapabilir) ve öncelikli bir seçim yapabilirsiniz.

  • için dizi X[N] grubu oluşturma: N farklı soru ve M sayısı her soru ortalama yanıtlandı kaç kez olduğu ise

    , o zaman böyle M*N zamanında X bulabildiğim t cevaplama zamanı ve f bir artırımı, işlevi olduğu 0.

  • verileri üzerinden çalıştırın ve soru i yanlış cevap görsem f(t) tarafından N[i] artar.

f arttıkça, uzun süre önce yanlış yanıtlanan bir sorunun yanlış bir soruya yanlış cevap verdiğinden bir soru yanlıştır. İyi bir davranış için farklı f deneyebilirsiniz.

akıllı yolu daha hızlı yolu Sorularınız seçer, ancak bir veritabanı tablosunda kaydetmek X[] her şey üretmek için değil. Bu çözümle f uygulayamazsınız. Bunun yerine, soruya yanlış cevap verildiğinde her seferinde 1 ekleyin ve ardından düzenli olarak tablodan geçin - her gece yarısı söyleyin - ve tüm X[i]'u bir sabit olarak - 0.9 ile çarpın.

Güncelleştirme: Aslında verilerinizi yanlışlara değil yanlışlara dayandırmalısınız. Aksi halde ne uzun süre ne doğru ne de yanlış olan sorular cevaplandırılmamışsa, daha küçük bir şansı olacaktır. Tam tersi olmalı.

8

Anki aralıklı tekrarını uygulayan bir açık kaynak programıdır. Açık kaynak olarak, Anki için aralıklı tekrar kitaplığı olan libanki kaynağına göz atabilirsiniz. Januray 2013 itibariyle, Anki sürüm 2 kaynaklarına here göz atılabilir. Kaynaklar Python, yürütülebilir sözdizimi kodu dilinde

kaynaklarıdır. Algoritmayı anlamak için kaynağın okunması uygun olabilir. Veri modeli, uygulama geliştiricilerine SQL'in tam gücünü ve esnekliğini veren sqlalechmey, Python SQL araç takımı ve Object Relational Mapper kullanılarak tanımlanmıştır.

+2

Anki, Affero GPL'dir (yani, etkin GPL). Eğer "port" Eğer uygulama, Affero GPL'd (viral lisans) olması gerekebilir. Bu yaklaşıma dikkat et. Birisi sadece Anki'nin SRS motorunu, daha sonra herhangi bir uç noktaya takılabilir ve bu LGPL'yi yapmasını istemek için tek başına bir proje oluşturabilirse harika olurdu (böylece bunları kullanan uygulamalar GPL olmazdı). Fakat Anki iç dünyalarını anlamak ve çözmek için biraz iş olacak ve hatta Damien SRS motorunu affetmek istemeyebilir. –