yoshistabber / anymemo

Automatically exported from code.google.com/p/anymemo
GNU General Public License v2.0
0 stars 0 forks source link

Interval not computed correctly after import from Supermemo #196

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
In AnyMemo V10 the new interval is not computed correctly after import from 
Supermemo.
Old and often correctly known items from Supermemo are presented at the correct 
date in AnyMemo but then are given a very short interval for the follow-up date 
even if they are marked as good again.
I would appreciate if that could be fixed with some priority. 
Thanks for the great product.
Andreas

Original issue reported on code.google.com by thiel...@googlemail.com on 30 Mar 2013 at 1:32

GoogleCodeExporter commented 8 years ago
AnyMemo 10.x didn't change the interval calculation method from 9.x. If you 
think the result if unexpected. Could you upload a small sample XML and give me 
more detail about what you expect?

Original comment by mrlhwlib...@gmail.com on 1 Apr 2013 at 2:15

GoogleCodeExporter commented 8 years ago
I imported a XML exported from SuperMemo CE 4.50 about three month ago.
Actually it was AnyMemo 9.x which does the import. Since then i test it
daily and upgraded to AnyMemo 10.x when it arrived.
Here more details on the issue: On 20013/04/01 I was asked to answer one
item which had the following details (only non zero values) before the
answer was given:
last_learn_date  2011/07/08
next_learn_date 2013/04/01
grade 1
easyness 1.3
acq_reps 18
lapses 5
It was a well learned item thus SuperMemo assigned a long interval. This
item never came up in AnyMemo yet.
After answering the question in AnyMemo the following details are assigned:
last_learn_date  2013/04/01
next_learn_date 2013/04/03
grade 4
easyness 1.3
acq_reps 19
acq_reps_since_last_lapse 1
The question was asked showing 1 day in the answering grade buttons.
Irrespective of the answer "easy" or 4 and it's long history as known item
it is now dealt as a new item.
I would expect being asked with more then 600 days in the grade buttons and
with grade 4 as answer being assigned a next_learn_date anywhere in 2016.
Maybe the grade 1 from SuperMemo causes confusion.

Original comment by thiel...@googlemail.com on 2 Apr 2013 at 9:54

GoogleCodeExporter commented 8 years ago
Ok, the grade 1 did confuse AnyMemo. AnyMemo thinks the card failed last time. 
In AnyMemo's algorithm, if the last time you failed, you need to review nearly 
immediately.

Original comment by mrlhwlib...@gmail.com on 4 Apr 2013 at 6:22

GoogleCodeExporter commented 8 years ago
I skimmed through the source code of AnyMemo meanwhile. Grade 1 during
import from SuperMemo is assigned because of the AFactor is less than 1.5.
Looking at SuperMemo's CE 4.5 XML export shows that an AFactor of 1.2 is
very common if there was only a single lapse. Learning means that lapses
are very frequent (that's why you learn it), thus nearly every item in
SuperMemo has an AFactor of less than 1.5 what lets AnyMemo's import decide
of giving it a grade 1 and effectively make it a new entry. That way the
whole learning status of the collection is almost lost.
I'd prefer if you assign a grade 2 even for low AFactors if you see an
interval of, say, 20 in the imported item. For grade 2 AnyMemo uses the old
interval as basis for the new one (if I saw it correctly).

Original comment by thiel...@googlemail.com on 5 Apr 2013 at 8:59

GoogleCodeExporter commented 8 years ago
Thank you for the investigation. This part of code was written nearly 2 years 
ago. I will need to find out why I did that way.

Original comment by mrlhwlib...@gmail.com on 6 Apr 2013 at 6:28

GoogleCodeExporter commented 8 years ago
Some investigation shows that AFactor 1.2 means the card is very difficult. 
Originally I don't know how to determine if a card that failed without review.
I think Interval might tell more story. 0 interval may mean you graded 0 or 1 
last time but you did not review it.

I don't have SuperMemoCE to do my own experiment any more.
Could you export an XML with a card marked failure (Grade lower than "Pass") 
and attach here (Or email me liberty [at] anymemo.org)? 

Reference: http://help.supermemo.org/wiki/Glossary:A-Factor

Original comment by mrlhwlib...@gmail.com on 7 Apr 2013 at 12:50

GoogleCodeExporter commented 8 years ago
Thank you for your email about the PPC XML file. I don't think I got enough 
data, especially a failed card in your XML.
But I do manage to release a change for the logic of grade determination.
http://code.google.com/p/anymemo/source/detail?r=a5f9f71fcc42e5fa8c2ce44e33e6f79
0c5a9f40e

It will be released in tomorrow's nightly build 
http://anymemo.info:8080/autobuild/
(You can uninstall current free version and install the nightly build). If you 
can, please try it out and let me know if it works.  

Original comment by mrlhwlib...@gmail.com on 11 Apr 2013 at 5:33

GoogleCodeExporter commented 8 years ago
Actually, you can also try 10.1 beta 2 in the download section here.

Original comment by mrlhwlib...@gmail.com on 11 Apr 2013 at 5:39

GoogleCodeExporter commented 8 years ago
I looked at the code change and tested with 10.1 beta 2.
It now works as expected! Thanks for your fast problem solving.

You wanted to see a failed card in the XML (though I never had a problem 
importing that type).
Here it is:

  <SuperMemoElement>
    <Type>Item</Type>
    <Content>
      <Question>sticks and stones</Question>
      <Answer>lifeless things</Answer>
    </Content>
    <LearningData>
      <Interval>3</Interval>
      <Repetitions>1</Repetitions>
      <Lapses>4</Lapses>
      <LastRepetition>11.04.2013</LastRepetition>
      <AFactor>1.200</AFactor>
      <UFactor>1.000</UFactor>
    </LearningData>
  </SuperMemoElement>

It had an interval of 400 days before and I graded it "fail" resulting in:
<Interval>3</Interval> and a reduction of AFactor to 1.2. 
SuperMemo CE has to grades even worse: "bad" or "null" giving an interval of 2 
resp. 1 day.
This card was imported by AnyMemo's new logic with a next_learn_date of 
2013/04/14 and a grade 2 with an easyness of 1.0.
That is exactly what I would have expected.
Longer intervals are preserved now with you new import logic.
Thanks, Andreas

Original comment by thiel...@googlemail.com on 11 Apr 2013 at 10:46

GoogleCodeExporter commented 8 years ago
Great. Thank you for providing the info. I'd like to see the failed card 
learning data because I want to verify my change didn't break the logic to 
determinleanringe failure cards.

Original comment by mrlhwlib...@gmail.com on 11 Apr 2013 at 5:32

GoogleCodeExporter commented 8 years ago
I think this problem is modified now. Call it done unless you still find it a 
issue.

Original comment by mrlhwlib...@gmail.com on 17 Jul 2013 at 9:42