Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.


Importing Next Test, Learning Interval, etc

  • spherulitic

    I currently have a study program on my PC (Zyzzyva) which uses a Leitner-cardbox method for spaced repetition.  I have 20,000+ cards in this program, with cards scheduled for next repetition over the next two years or so.

    I'd like to start using karatasi on my iPhone for my study but I need to import these cards with the progress saved from my years of using Zyzzyva.  Is there a way to import cards with a value for learning interval, difficulty, next test, recalls, lapses, etc for each card?  Or would it work to import the cards and then update the .db file outside of karatasi (using the SQLite DB Browser or a similar tool) to set these values?

    I'm going to mess with it myself and see what I can figure out, but TIA for any help you can provide!

    Chris Lipe

  • Christa Runge
    Christa Runge

    Hi Chris,

    in the current implementation, karatasi can import cards together with their learning data from the Palm SuperMemo program, but not from other formats. So if you want to import from your Zyzzyva software, you have to do this on your own.
    Of course we will support you with all your questions regarding the karatasi format. But regarding the Zyzzva format you have to find out yourself.

    If you can export the cards (questions and answers) from Zyzzyva into a CSV formatted file, then you can use the karatasi CSV import, and after this add the learning data for each card with some kind of SQLite tool - this sounds like a good plan.
    You can find the karatasi database format description in our svn repository at doc/design/database/DatabaseStructure.txt,
    and the algorithm description with the formulas at doc/analysis/LearningData.txt.

    The exact algorithm of karatasi might be similar but still different from the Zyzzyva algorithm, so we recommend to recalibrate some of the values to match the algorithm karatasi uses.

    Which learning data does karatasi use? How can you calculate their values from your Zyzzva data?

    1) Do you have at least 2 of the following three values: "current interval in days", "last test performed", "next test scheduled" ?
    Then you can calculate the values for the karatasi fields "next_test", and "curr_intervall".

    2) Do you have a "previous interval in days" ? Then you can use the value for the karatasi field "prev_intervall".

    3) I recommend to calculate the value for the karatasi field "curr_diffic" (current difficulty) from the above values with the following formula:
    factor = curr_intervall / prev_intervall         // factor should be between 1. 3 and 3.3
    factor = (100 - curr_diffic) * 0.02 + 1.3        // use this to calculate the curr_diffic, value should be between 0 and 100

    For cards with only one or two iterations you can set  "curr_diffic" to its initial value 40.
    For cards with "curr_intervall" < "prev_intervall" (the last answer was a lapse) the above formula does not work.
    You can then either use the initial value 40, or try some other heuristics (if Zyzzyva has a "difficulty" value).

    4) Do you have "number of correct answers" and "number of wrong answers"? These values go straightforward to the karatasi fields  "recalls" and "lapses".

    5) Do you have "creation date" and "commit date" ? These values go straightforward to the karatasi fields "created" and "committed". If you do not have a "commit date", use the creation date or any other non-zero value.

    6) If you have good values for the remaining karatasi fields "prev_diffic", "curr_rating" and "prev_rating" - fine.
    If not, you can just leave them open - these fields should have no big effect on your future learning steps.

    If you have still open questions, don't hesitate to ask.
    Also we would like to hear more from you and your progress in importing your data to karatasi.