docs: add forgetting curve figure for report
This commit is contained in:
162
docs/assets/reloop-forgetting-curve.svg
Normal file
162
docs/assets/reloop-forgetting-curve.svg
Normal file
@@ -0,0 +1,162 @@
|
||||
<svg width="1200" height="760" viewBox="0 0 1200 760" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="120" y1="80" x2="1080" y2="680" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFF8EE"/>
|
||||
<stop offset="1" stop-color="#F6F2FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="panel" x1="160" y1="120" x2="1000" y2="620" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0.96"/>
|
||||
<stop offset="1" stop-color="#FFFDF8" stop-opacity="0.98"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="reloopStroke" x1="220" y1="420" x2="980" y2="180" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F97316"/>
|
||||
<stop offset="1" stop-color="#DC2626"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="srsStroke" x1="220" y1="470" x2="980" y2="300" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#94A3B8"/>
|
||||
<stop offset="1" stop-color="#475569"/>
|
||||
</linearGradient>
|
||||
<filter id="shadow" x="90" y="70" width="1020" height="620" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feDropShadow dx="0" dy="18" stdDeviation="24" flood-color="#0F172A" flood-opacity="0.12"/>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<rect width="1200" height="760" fill="url(#bg)"/>
|
||||
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="110" y="82" width="980" height="596" rx="28" fill="url(#panel)"/>
|
||||
</g>
|
||||
|
||||
<text x="160" y="145" fill="#111827" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="34" font-weight="700">
|
||||
ReLoop Adaptive Review vs Traditional Memorization SRS
|
||||
</text>
|
||||
<text x="160" y="182" fill="#4B5563" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="18" font-weight="500">
|
||||
The goal is not more reviews. The goal is to review at the right moment before recall collapses.
|
||||
</text>
|
||||
|
||||
<rect x="770" y="126" width="22" height="22" rx="11" fill="url(#reloopStroke)"/>
|
||||
<text x="804" y="143" fill="#111827" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="18" font-weight="600">
|
||||
ReLoop adaptive review
|
||||
</text>
|
||||
<rect x="770" y="158" width="22" height="22" rx="11" fill="url(#srsStroke)"/>
|
||||
<text x="804" y="175" fill="#111827" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="18" font-weight="600">
|
||||
Static memorization SRS
|
||||
</text>
|
||||
|
||||
<text x="144" y="376" transform="rotate(-90 144 376)" fill="#374151" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="20" font-weight="700">
|
||||
Retention probability
|
||||
</text>
|
||||
<text x="540" y="640" fill="#374151" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="20" font-weight="700">
|
||||
Learning time
|
||||
</text>
|
||||
|
||||
<line x1="200" y1="600" x2="1000" y2="600" stroke="#CBD5E1" stroke-width="2"/>
|
||||
<line x1="200" y1="220" x2="200" y2="600" stroke="#CBD5E1" stroke-width="2"/>
|
||||
|
||||
<line x1="200" y1="520" x2="1000" y2="520" stroke="#E5E7EB" stroke-width="1.5" stroke-dasharray="6 8"/>
|
||||
<line x1="200" y1="440" x2="1000" y2="440" stroke="#E5E7EB" stroke-width="1.5" stroke-dasharray="6 8"/>
|
||||
<line x1="200" y1="360" x2="1000" y2="360" stroke="#E5E7EB" stroke-width="1.5" stroke-dasharray="6 8"/>
|
||||
<line x1="200" y1="280" x2="1000" y2="280" stroke="#E5E7EB" stroke-width="1.5" stroke-dasharray="6 8"/>
|
||||
|
||||
<text x="160" y="604" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="15" font-weight="600">
|
||||
0%
|
||||
</text>
|
||||
<text x="152" y="524" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="15" font-weight="600">
|
||||
20%
|
||||
</text>
|
||||
<text x="152" y="444" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="15" font-weight="600">
|
||||
40%
|
||||
</text>
|
||||
<text x="152" y="364" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="15" font-weight="600">
|
||||
60%
|
||||
</text>
|
||||
<text x="152" y="284" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="15" font-weight="600">
|
||||
80%
|
||||
</text>
|
||||
|
||||
<path d="M220 270
|
||||
C255 295 280 330 315 390
|
||||
C340 430 355 455 380 488
|
||||
C398 505 407 460 430 410
|
||||
C460 350 486 338 520 372
|
||||
C548 402 566 440 590 472
|
||||
C610 498 622 520 640 536
|
||||
C658 548 670 515 692 470
|
||||
C718 420 745 402 778 430
|
||||
C805 454 826 486 850 520
|
||||
C872 548 890 560 915 545
|
||||
C940 530 963 500 980 480"
|
||||
stroke="url(#srsStroke)" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<path d="M220 260
|
||||
C255 278 286 304 320 344
|
||||
C350 380 368 414 390 432
|
||||
C406 444 415 394 438 338
|
||||
C462 280 490 248 525 258
|
||||
C556 266 586 290 620 330
|
||||
C650 364 674 394 696 410
|
||||
C712 420 722 370 746 314
|
||||
C772 254 804 224 838 234
|
||||
C870 242 898 264 930 300
|
||||
C954 328 968 348 980 356"
|
||||
stroke="url(#reloopStroke)" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
|
||||
<line x1="390" y1="214" x2="390" y2="588" stroke="#FB923C" stroke-width="2" stroke-dasharray="8 8"/>
|
||||
<line x1="700" y1="214" x2="700" y2="588" stroke="#FB923C" stroke-width="2" stroke-dasharray="8 8"/>
|
||||
<line x1="920" y1="214" x2="920" y2="588" stroke="#FB923C" stroke-width="2" stroke-dasharray="8 8"/>
|
||||
|
||||
<circle cx="390" cy="432" r="10" fill="#FFF7ED" stroke="#F97316" stroke-width="4"/>
|
||||
<circle cx="700" cy="410" r="10" fill="#FFF7ED" stroke="#F97316" stroke-width="4"/>
|
||||
<circle cx="920" cy="300" r="10" fill="#FFF7ED" stroke="#F97316" stroke-width="4"/>
|
||||
|
||||
<circle cx="380" cy="488" r="8" fill="#F8FAFC" stroke="#64748B" stroke-width="3"/>
|
||||
<circle cx="640" cy="536" r="8" fill="#F8FAFC" stroke="#64748B" stroke-width="3"/>
|
||||
<circle cx="915" cy="545" r="8" fill="#F8FAFC" stroke="#64748B" stroke-width="3"/>
|
||||
|
||||
<rect x="317" y="212" width="152" height="58" rx="16" fill="#FFF7ED" stroke="#FDBA74"/>
|
||||
<text x="337" y="236" fill="#9A3412" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="14" font-weight="700">
|
||||
Review before collapse
|
||||
</text>
|
||||
<text x="337" y="255" fill="#C2410C" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="13" font-weight="500">
|
||||
predicted by difficulty,
|
||||
</text>
|
||||
<text x="337" y="272" fill="#C2410C" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="13" font-weight="500">
|
||||
persona, and recall odds
|
||||
</text>
|
||||
|
||||
<rect x="770" y="392" width="200" height="72" rx="16" fill="#EFF6FF" stroke="#93C5FD"/>
|
||||
<text x="790" y="418" fill="#1D4ED8" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="15" font-weight="700">
|
||||
Static SRS leaves wider dips
|
||||
</text>
|
||||
<text x="790" y="439" fill="#2563EB" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="13" font-weight="500">
|
||||
good for rote memorization,
|
||||
</text>
|
||||
<text x="790" y="457" fill="#2563EB" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="13" font-weight="500">
|
||||
weaker for mixed-difficulty problem solving
|
||||
</text>
|
||||
|
||||
<rect x="736" y="196" width="244" height="82" rx="16" fill="#FEF2F2" stroke="#FCA5A5"/>
|
||||
<text x="756" y="222" fill="#B91C1C" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="15" font-weight="700">
|
||||
ReLoop keeps recall in a higher band
|
||||
</text>
|
||||
<text x="756" y="243" fill="#DC2626" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="13" font-weight="500">
|
||||
each successful review increases interval
|
||||
</text>
|
||||
<text x="756" y="261" fill="#DC2626" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="13" font-weight="500">
|
||||
while reducing unnecessary early repetition
|
||||
</text>
|
||||
|
||||
<text x="344" y="620" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="14" font-weight="700">
|
||||
Review 1
|
||||
</text>
|
||||
<text x="654" y="620" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="14" font-weight="700">
|
||||
Review 2
|
||||
</text>
|
||||
<text x="874" y="620" fill="#6B7280" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="14" font-weight="700">
|
||||
Review 3
|
||||
</text>
|
||||
|
||||
<text x="160" y="696" fill="#4B5563" font-family="Pretendard, Inter, Segoe UI, sans-serif" font-size="16" font-weight="500">
|
||||
Conceptual illustration for the report: ReLoop schedules review from predicted recall probability, not from a fixed rote interval alone.
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.2 KiB |
@@ -118,6 +118,12 @@ ReLoop의 기술적 핵심은 에빙하우스 망각곡선과 SM-2 알고리즘
|
||||
|
||||
pdftotext로 문제 번호의 bbox 좌표를 추출하고, pdftoppm으로 해당 영역을 200DPI 이미지로 크롭한다. 해설지 PDF를 함께 업로드하면 정답표를 자동 파싱하여 문제별 정답을 태깅한다. 이를 통해 종이 모의고사를 30초 만에 디지털 문제집으로 변환할 수 있다.
|
||||
|
||||
**[망각곡선 시각화]**
|
||||
|
||||

|
||||
|
||||
기존 암기형 SRS는 고정 간격 반복을 전제로 설계되어 단순 암기에는 강하지만, 문제 난이도 차이와 개인별 망각 속도 차이를 충분히 반영하지 못한다. 반면 ReLoop는 문제별 정답률, 난이도, 학습자 페르소나를 함께 반영해 "기억이 무너지기 직전" 시점을 다시 잡아준다. 그 결과 같은 복습 횟수라도 기억 유지 구간을 더 높게 유지하면서, 불필요한 조기 반복은 줄이고 장기 기억 형성은 강화한다.
|
||||
|
||||
**[기존 서비스와의 차별점]**
|
||||
|
||||
| 비교 항목 | Anki/Quizlet | 기존 인강 플랫폼 | ReLoop |
|
||||
|
||||
Reference in New Issue
Block a user