Tüm açık kaynak paketler
Yapay ZekaSwift

educationai

Çalışma uygulamaları için Swift paketi: FSRS-6 ile aralıklı tekrar, çalışma kuyruğu, yazılı cevap eşleştirme ve quiz'ler.

2YıldızSon Sürüm: v2.0.0 · Güncellendi: 15 Ekim 2026
Platformlar:iOS 17macOS 14tvOS 17watchOS 10visionOS 1

Lisans: MIT

Özet

  • Flashcard uygulamaları için öğrenme mantığı: FSRS-6 aralıklı tekrar, çalışma kuyruğu, yazılı cevap notlama ve quizler.
  • Testler py-fsrs 6.3.2'den gelen 2.400 tekrarı sekiz yapılandırmada yeniden oynatır ve her tekrardan sonra sonuçları karşılaştırır.
  • SM2Scheduler SM-2 verisini çalışır tutar ve SM-2 kartlarını her kartın vade tarihini koruyarak FSRS'ye dönüştürür.
  • Yalnızca Foundation kullanarak cihaz üzerinde çalışır, Swift 6 strict concurrency için yazılmıştır ve içinde sinir ağı yoktur.
  • v2.0.0 etiketinde macOS 27.0.1 üzerinde Swift 6.4 ile 11 suite içinde 124 test geçti.

EducationAI, bir flashcard ya da çalışma uygulamasının öğrenme mantığını taşır. FSRSScheduler her kartın ne zaman geri geleceğini Anki'nin FSRS zamanlayıcısının arkasındaki hafıza modeli FSRS-6 ile belirler; testleri 2.400 tekrarı referans uygulama py-fsrs 6.3.2 ile karşılaştırır. SM2Scheduler eski SM-2 verisini çalıştırır ve FSRS'e taşır. Zamanlayıcının etrafında çalışma kuyruğu, yazım hatası toleranslı yazılı cevap notlama, quiz'ler, zorluk ayarlayıcı, iş yükü tahmini, tekrar istatistikleri ve çalışma serileri vardır. Cihazda çalışır, yalnız Foundation kullanır ve Swift 6 strict concurrency için yazılmıştır. İçinde sinir ağı yoktur: FSRS istatistiksel bir hafıza modelidir.

Özellikler

  • Referansa karşı denetlenen FSRS-6: testler py-fsrs 6.3.2'nin sekiz yapılandırmada hesapladığı 2.400 tekrarı yeniden oynatır ve her tekrardan sonra stability, difficulty, vade tarihi ve retrievability değerlerini karşılaştırır
  • Öğrenme ve yeniden öğrenme adımları, hedef hatırlama oranı, en uzun aralık, aralık fuzz'ı ve özel ağırlıklar (FSRS-6'dan 21 ya da FSRS-5'ten 19); cevap düğmeleri için dört puanın tamamının önizlemesi
  • Yayımlandığı haliyle SM-2 ve SM-2 kartlarını her kartın vade tarihini koruyarak FSRS'e taşıyan dönüşüm
  • Büyük-küçük harf, aksan, genişlik ve noktalamayı cihaz dilinden bağımsız olarak yok sayan, yazım hatalarını cevabın uzunluğuna göre affeden ve düşmanca girdide sınırlı iş yapan yazılı cevap notlama
  • Kartlardan oluşturulan çoktan seçmeli ve yazılı quiz'ler; her sonuç zamanlayıcı için bir puan önerir, kaydedilmiş bir quiz yüklenirken yeniden notlanır
  • Günlük sınırlı çalışma kuyruğu, gün gün tahmin, hatırlama istatistikleri, öğrencinin takvim günleriyle sayılan seriler ve doğruluğu hedef bantta tutan zorluk ayarlayıcı
  • Sendable, Codable değer tipleri: her fonksiyon çalıştığı tarihi parametre olarak alır, rastgelelik tohumlanabilen bir üreteçten gelir, saklanan değerler kullanılmadan önce denetlenir ve çökme yerine hata fırlatılır
  • Bağımlılık yok, yalnız Foundation; dört rehberli DocC referansı ve iOS ile macOS için StudyDeck örnek uygulaması

Hızlı Başlangıç

swift
1struct FlashcardsView: View {
2 @State private var cards = [
3 Flashcard(front: "Capital of Japan", back: "Tokyo"),
4 Flashcard(front: "Capital of Kenya", back: "Nairobi"),
5 Flashcard(front: "Capital of Peru", back: "Lima")
6 ]
7 @State private var showsAnswer = false
8 private let scheduler = FSRSScheduler.default
9 
10 var body: some View {
11 if let card = StudyQueue.cards(from: cards).first,
12 let index = cards.firstIndex(where: { $0.id == card.id }) {
13 VStack(spacing: 24) {
14 Text(card.front).font(.title)
15 if showsAnswer {
16 Text(card.back).font(.title2).bold()
17 HStack {
18 ForEach(Rating.allCases, id: \.self) { rating in
19 Button(String(describing: rating).capitalized) {
20 if let outcome = try? scheduler.review(card.review, rating: rating) {
21 cards[index].review = outcome.state
22 }
23 showsAnswer = false
24 }
25 .buttonStyle(.bordered)
26 }
27 }
28 } else {
29 Button("Show Answer") { showsAnswer = true }
30 .buttonStyle(.borderedProminent)
31 }
32 }
33 .padding()
34 } else {
35 Text("All done for now")
36 }
37 }
38}

Kurulum

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/educationai.git

Swift Package Manager (Package.swift)

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/educationai.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "EducationAI", package: "educationai")
7 ])
8]

Ekran Görüntüleri

Örnek uygulamanın tekrar ekranı: Capital of Vietnam kartı ve cevabı Hanoi, hafıza %90, 10m Again, 1mo Hard, 2mo Good ve 3mo Easy etiketli dört puan düğmesi
Yazılı cevaplı bir quiz sorusu, Capital of Morocco, cevap Raba: geri bildirim Almost diyor, doğru yazımı tek yazım hatasıyla Rabat, kart Hard olarak zamanlanıyor
İlerleme ekranı: 21 günlük seri, en iyi seri 21, hatırlama %91, 84 tekrar ve sonraki 14 günün her birinde vadesi gelen kartların çubuk grafiği
Deste listesi: her başkent ülkesiyle, ne zaman vadesi geldiği ve şu an ne kadar hatırlandığıyla; örneğin Hanoi şimdi vadeli, %90

Zaman Çizelgesi

  1. Repo açıldı; 1.0.0 7 Ağustos'ta etiketlendi: öğrenme modelleri olan bir EducationAI sınıfı, Alamofire, RxSwift, SnapKit ve SDWebImage bağımlılıklarıyla

  2. Bağımlılıksız olarak yeniden yazıldı: SM-2 zamanlayıcısı, quiz, ilerleme, öneri ve oyunlaştırma motorları

  3. Yerel bir klasöre bağımlılık (../SwiftAI) ve yer tutucu "neural tutor" ile "enterprise" tipleri eklendi; paket başka hiç kimse için çözülemez oldu

  4. 2.0.0: py-fsrs 6.3.2 ile aynı sonucu veren bir FSRS-6 zamanlayıcısı etrafında yeniden kuruldu; Haziran kodu ve 1.x'in bütün tipleri kaldırıldı

Bağlantılar

İlgili Yazı

Yazıyı Oku