2010-06-03 4 views
13

클라이언트는 온라인 기반 학습 사이트에 SRS (Simple Spaced Repeat) 알고리즘을 추가하라고 요청했습니다. 그러나 자기 자신을 그것에 던지기 전에 나는 그것을 지역 사회와 토론하고 싶습니다.학습을위한 공간 반복 (SRS)

기본적으로 사이트는 사용자에게 여러 질문을합니다 (데이터베이스에서 총 질문 100 개 중 자동으로 10 개를 말함). 사용자는 올 바르고 틀린 답을줍니다. 사용자는 다음 예를 들면, 데이터베이스에 저장된 결과 :

이제
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  

이 모든 대답을 배울 수있는 사용자의 능력을 극대화하기 위해, 나는 사용자, 다음에 그가 소요되도록 SRS 알고리즘을 적용 할 수 있어야한다 퀴즈는 질문을 잘못 받아 들인다. 질문에 대한 답변보다 또한 이전에 잘못 대답되었지만 최근에 자주 대답되는 질문은 자주 발생하지 않아야합니다.

이전에 이와 비슷한 것을 구현 한 사람이 있습니까? 어떤 팁이나 제안?

Theese은 내가 찾은 최고의 링크입니다 :

답변

6

모든 질문에 숫자 X_i을 입력하고 싶습니다. i. 이 수를 표준화하고 (합계를 1로 만들 수 있습니다) 우선 순위를 매길 수 있습니다.

  • 가 배열 X[N] 세트를 작성 : N 다른 질문과 M의 수는 각 질문은 평균 응답 한 횟수가되는 경우

    , 당신은이 같은 M*N 시간에 X을 찾을 수 0.

  • 데이터를 통해 실행하고 질문이 i 잘못 표시 될 때마다 N[i]f(t)으로 증가 시키십시오. 여기서 t은 응답 시간이고 f은 증가하는 기능입니다.

f가 증가하고 있기 때문에, 오랫동안 잘못 대답 한 질문은 어제 잘못 응답 한 것보다 영향이 적습니다. 좋은 동작을 얻으려면 다른 f으로 실험 해 볼 수 있습니다.

똑똑한 방법 더 빠른 방법은 당신이 질문을 선택하지만 데이터베이스 테이블에 저장 X[] 매번 생성하지 않는 것입니다. f을이 솔루션에 적용 할 수 없습니다. 대신 질문에 잘못 대답 할 때마다 1을 더한 다음 규칙적으로 테이블을 실행하십시오 - 매일 한밤중에 말하십시오. X[i]에 상수로 곱하면 - 0.9이됩니다.

업데이트 : 사실 데이터를 잘못하지 말고 올바른 위치에 두어야합니다. 그렇지 않은 경우 오랫동안 참이나 거짓으로 대답하지 않은 질문은 선택 될 가능성이 적습니다. 그것은 반대가되어야합니다.

8

Anki는 간격 반복을 구현하는 오픈 소스 프로그램입니다. 오픈 소스이므로 Anki의 간격 라이브러리 인 libanki을 검색 할 수 있습니다. Januray 2013 년 현재 Anki 버전 2 소스는 here으로 탐색 할 수 있습니다.

소스는 Python이고 실행 가능 의사 코드는입니다. 알고리즘을 이해하기 위해 소스를 읽는 것이 가능할 수 있습니다. 데이터 모델은 Python SQL 툴킷 인 sqlalechmey을 사용하여 정의되며, 응용 프로그램 개발자에게 SQL의 강력한 기능과 유연성을 제공합니다.

+2

Anki는 Affero GPL (즉, 효과적으로 GPL)입니다. 당신이 그것을 "포팅"한다면, 당신은 Affero GPL (바이러스 성 라이센스)이어야 할 수도 있습니다. 이 접근법에주의하십시오. 누군가 Anki의 SRS 엔진을 독립형 프로젝트로 추상화하여 프론트 엔드에 연결할 수 있고 Damien에게 LGPL을 만들도록 요청할 수 있다면 좋을 것입니다 (따라서 사용하는 앱은 GPL이되지 않습니다) ,하지만 Anki 내부를 이해하고 풀어내는 일은 약간 일 것이며, 심지어 Damien도 SRS 엔진의 Affero GPL을 원하지 않을 수 있습니다. –