Anki Incremental Reading

Have you ever looked anything up on Wikipedia? I'm sure you did, but do you still remember what you wanted to know at that time, or would you have to look it up again?

To give you an idea of what I'm talking about here, let me quickly tell you how incremental reading influenced me: In these days, I am learning a lot of material using it. The material is on all levels of expertise and the subjects include biology, chemistry, maths, history, geography, physics, astrophysics, computer science and so much more. With incremental reading I don't even feel overwhelmed, although I'm reading dozens of articles in parallel.

What is Incremental Reading?

Incremental reading (IR) has been invented by the developers of Supermemo. You can find a lot of material that describes the benefits of IR on that webpage. Let me just give you a quick appetizer here on how IR works.

  1. You find an article that is of interest to you.
  2. Instead of just reading it all in one go you add it to your IR software.
  3. The IR software schedules reviewing times for the article similar to a flashcard.
  4. After you read a paragraph or two, you decide what information in there is worthwhile for you to remember.
  5. You extract the paragraph and turn it into its own flashcard, possibly removing stuff you don't care about.
  6. The new flashcard is handled by your software again, such that you will see that same paragraph once more, sometime soon.
  7. Once you see it again, you trim it down even more. Possibly extract new flashcards.
  8. Of course, your IR software also shows you the main article again, for which you just repeat this behavior.
  9. Eventually, you cut down paragraphs into single chunks of vital information you want to remember. Through the constant trimming you ultimately end up with traditional flashcards, which can then be handled by Anki to make sure you do not forget them.

The Supermemo introduction to IR gives a small example of how this process works in practice.

IR with Anki

There's one big problem with IR: It's exclusively available for Supermemo. Try searching the net for "incremental reading", read up on it on Wikipedia - you'll always get to the same conclusion: Without buying Supermemo you are not going to get the benefits of IR. The concept of IR really convinced me, although I didn't even try it yet and I longed to be able to try it. As I have gained so much from Anki, I realized it was time for giving something back. I decided to give Anki users the option to try out IR for themselves and implemented an incremental reading plugin.

Installation of the IR plugin

Installation is as simple as it gets: Download the plugin. Open Anki, then click on "Settings>Plugins...>Open Plugin Folder" and copy the extracted files into that folder. If you're running on a Linux system, only copy the file AnkiIR.py and make sure to install python-libxml2 (f.ex. on Ubuntu: sudo apt-get install python-libxml2)

Restart Anki and enjoy - well, not yet I'm afraid. Even though you have everything installed, I suggest you also spend one or two more minutes to configure everything.

Configuration of the IR plugin

After you installed the plugin, verify that it is active (Settings>Plugins...>Startup>Incremental Reading should be checked). The plugin uses the normal scheduling of Anki, however, the IR process is vastly different from reviewing traditional flashcards. Hence, you should create a new deck dedicated to incremental reading only. Otherwise, you will mess up all your statistics - big time! For the new deck just stick to the Basic model, which has a "Front" and "Back" field. Do not rename these fields, as the plugin depends on these names. Additionally, I suggest you create another deck, into which you sort your final extracted flashcards for memorization. If you see, for example, 6 cards scheduled in your IR deck it makes a huge difference if these cards are articles or simple question-answer flashcards. If you separate the QA cards you get much more accurate information.

Features

So what can you actually do with the IR plugin? If you click on Tools>Incremental Reading>Add URL for IR, you can load any webpage into Anki. For this copy a URL into your clipboard first, then click the menu entry to load the page into Anki (the QT forms have limited support for HTML. It works ok for most wikipedia articles, but may fail horribly on other webpages). After adding the card it gets scheduled as usual by Anki. When Anki shows you a card during your repetitions, you will get a new right-click menu. This menu has only two entries: Extract and Remove. "Extract" takes the currently selected part of your article and opens the Add Card dialog, where the content is inserted. This is the core of incremental reading which helps you trim down the articles to vital information. "Remove" simply removes the selected part, so you can throw out parts you no longer need.

Usage Hints

It's up to you how you use the plugin. I just wanted to give people an opportunity to try out IR, but you'll have to find out which workflow works for you. Consider the following hints as a kind of starting point for your experiments.

  • Contrary to normal Anki usage try to keep your new cards at zero. Remember that the scheduled cards are essentially articles you haven't read yet. There's no need to hurry with those. However, when you review one of them and start creating new excerpts and QA cards, they may get lost in all your other new cards. It works just fine, if you schedule new articles to the next day right after introducing them.
  • After adding a wikipedia article, start reviewing it. If you have absolutely no time, then just schedule it as "Bad", i.e. it is shown again the next day. If you have a little time, then Extract the first paragraph. All wikipedia articles have this introductory paragraph that gives you an overview of the article. After adding the extracted summary schedule the remaining article a few days ahead.
  • When you are shown a longer wikipedia article for review, simply Extract the first section (without even reading it), then reschedule the card. The newly extracted section will be smaller, and hence, easier to tackle. Make sure to schedule it sooner than the main article, so you know its contents before continueing the main article. The extracted section should be scheduled to the next day or if you have some more time you can already work through it.
  • Once you broke down content to question-answer cards, give them a special tag like "qa". Every once in a while use Anki's export feature to export all of these cards and import them into their own deck. Then delete the exported qa-cards from your IR deck. After working with IR for a while you will have massively more qa-cards than articles you're reading and it pays off to have them separated for proper scheduling.

Following this "section extraction" scheme has a bunch of consequences of course: If you immediately schedule the extracted section as well, you can keep your scheduled/new counts down with next to no time consumption. The actual reading you perform will always be on small text portions, so you don't feel overwhelmed by large articles. Additionally, it is a great motivating factor, because every day your schedule will include small portions of all kinds of subjects. On the downside, processing a single wikipedia article in this way takes a long time - at least a week or two, for longer articles several weeks. But if you're bothered by that, then either you have not understood the concept of incremental reading or IR simply isn't for you. Don't forget, that you're not really going slow, because you fail to rush through a single article. Instead you can read dozens of articles at the same time. If you use IR and feel like you're not digesting enough new information, you're definitely doing something wrong.

Downloads

The Incremental Reading plugin, which is licensed under GPLv3.

Changelog

Current version: 0.2.3

  • 0.2.3
    • minor fix for Linux
  • 0.2.2
    • more solid highlighting of extracted content
    • automatic jumping to last extraction
  • 0.2.1
    • complete rewrite to update for Anki 1.2.x
    • more solid parsing/processing (based on libxml2)
    • extracted content no longer removed, but marked (green background)
    • undo/redo support
  • 0.1.3
    • added hotkeys (r for remove, e for extract, c for extract+copy and shift+e or shift+c automatically adds the extracted card and closes the add dialog again)
  • 0.1.2
    • increased reschedule default to 5-7 days
    • checking media database now possible (added workaround for bug in Anki)
  • 0.1.1
    • added Reschedule popup menu entry
    • added undo/redo support
  • 0.1
    • initial release

Known Problems

  • Some URLs cannot be added. (mostly, because they're not parseable)
  • Color highlighting of extracted parts doesn't always work
  • Hotkey support still broken (I hope to be able to add it again soonish)
  • Not anywhere as powerful as Supermemo's incremental reading. But hey, it's free.

If you find anything else just let me know by e-mail or in the comments here. (Comments are moderated, so they are not shown immediately.) Of course, if you use and like the plugin, I also appreciate to hear from you.

Image: 

Comments

Great thank you!

Can you upload it to the Anki main repository for shared plugins? Otherwise you need to specifically search for IR and that was from my experience quite hard.

Thanks for that cool stuff!

Das Rockt!! Vielen herzlichen Dank!!

Hallo Herr Raiser,

 

herzlichen Dank für das Plugin! Läuft sehr geschmeidig unter Ubuntu 11.04. Wäre es möglich, dass Sie eine Stapelverarbeitung mit hinzufügen, so dass man mehrere Urls einfügen kann? Und wäre es ebenfalls möglich Proxy Server zu unterstüzen, viele Seiten sind lizenziert über meine Uni und diese Artikel sind nicht möglich zu importieren, weil IR stets an der Proxy Anmeldeseite hängen bleibt. Nach der Extraction eines Artikels würde es Sinn machen die Tags 'qa' automatisch einzufüllen. Und ein letzter Wunsch wäre es auch möglich pdfs zu importieren? Hiermit würden sich meine Forschungsarbeiten sehr viel leichter erledigen lassen.

Das Plugin habe ich schon seit längerem gesucht, es ist toll das es das für Anki gibt! Herzlichen Dank für Ihre Mühe!!

Herzliche Grüße!

Stapelverarbeitung lässt sich sicherlich noch einbauen. Das 'qa' Tag würde ich nur ungern automatisch setzen, weil das nicht im Sinne des Incremental Reading ist. Vielleicht könnte man es aber mal als auswählbare Option hinzufügen. Meist extrahiert man eben über mehrere Stufen und schreibt dann die Texte noch weiter um, bis man bei einer endgültigen qa-Karte angelangt.

Bezüglich PDFs sieht es leider nicht so gut aus. Das hätte ich auch gerne gehabt, aber die einzige realistische Möglichkeit eine PDF in Anki zu verwenden ist diese vorher in HTML zu konvertieren. Leider kenne ich keine auch nur annähernd brauchbaren Konverter. "Brauchbar" heißt für mich dabei, dass z.B. mathematische Formeln ordentlich umgesetzt werden. Sollten Sie für Ihre Forschungsarbeiten PDFs verwenden, die hauptsächlich aus reinem Text bestehen, dann empfehle ich folgendes einmal zu versuchen:

  1. die PDF mit einem Konverter in HTML umwandeln (google)
  2. in Anki eine Karte hinzufügen (Plus Symbol)
  3. im HTML Editor der Karte (eines der kleinen Icons) den in 1. erzeugten HTML code einfügen

Damit lassen sich zumindest normale Texte problemlos mit AnkiIR kombinieren. Wie gesagt kenn ich aber leider keine guten Konverter, die hier für Mathe/Physik/Informatik/etc.-Arbeiten brauchbare Ergebnisse liefern.

Bezüglich des Proxy werde ich versuchen das in zukünftige Versionen zu integrieren. Hier eine schnelle Lösung, die bereits funktionieren sollte. (Auf Englisch, weil es vielleicht andere auch interessieren könnte)

Proxy:

  1. In Anki use Settings>Plugins...>Open Plugin Folder
  2. Open AnkiIR.py in your favorite Editor and look for the line opener = urllib2.build_opener()
  3. Add this new line above it: proxy = urllib2.ProxyHandler({'http' : ''ip.of.your.proxy'})
  4. Replace the line from 2. with opener = urllib2.build_opener(proxy)

Hopefully, this enables you to use your proxy until better proxy support is included in a future AnkiIR version.

Thanks Mr. Raiser for the short term solutions.

The google converter is working well for my understanding. The proxy option is a good idea. Unfortunately requires my university a sign in into the proxy via a webpage or at least, the username and password. Might there be a solution for this as well?

Thanks in advanced.

Regards.

Unfortunately, this sounds like a VPN solution, which will not be easy to integrate into AnkiIR. The only work-around I could think of is to use your browser and copy the page's source manually into the html editor of an Anki card. However, this will leave you with the original links, hence, images will only work if you have an online connection, etc.

I modified my copy of the plugin to keep track of source information, as shown in these screenshots:

http://www.upl.co/upload/s2Es8Nb8O

http://www.upl.co/upload/f6Ik1Qc2I

For more information, see my posts in the following thread at the Anki Help group on Google:

http://groups.google.com/group/ankisrs/browse_thread/thread/e57ca4823a0302e5

 

Hi Frank,

I'm wondering if you might put this up in a shared source repository somewhere (GitHub?) so ideas like the source tracking from the previous comment can be discussed, hacked on and shared by others.

Thanks :-)

Hey,

Certainly a good idea. Unfortunately, I'm more and more short on time, so I'd love to see someone take this project to the next level. If someone wants to continue working on it, feel free to open a repository somewhere. The current source is available as per the licence and anyone can freely fork it. Just mention somewhere that you started from my version here and let me know, then I'll link to your repository from this article.

 

I'm afraid, I just don't have enough time to work on the plugin at the moment, so I'd rather not open a repository for myself. I do support the idea though.

Greetings,
Frank

Sure, I'd be willing to take this on.  Perhaps you could post previous versions of the plugin on the blog (or by email)?  For example, fixing the hotkeys it would be handy to have version 0.1.3 where they were working.

I'm sorry, but this was just a very simple hack I made in my spare-time and so I didn't bother setting up a repository. I never intended to take it to that level, but anyways, hotkey support was pretty straight-forward PyQT programming. You should be able to find tons of examples on the web on how to do it.

Lesen Sie das gesamte Blog, pretty good

I tested the this plugin out some time ago and it worked ok, but it was rather simple. People who are interested in incremental reading might also find www.learnclick.com useful. On this website you can create and save cloze test flashcards of any text you want to. It is very simple, you just mark the words you want to review.

One problem I found: if you right click in other decks, the "extract" and "remove" commands have replaced the "copy" command.  This can be problematic for those trying to copy and paste words to look up in dictionaries, etc.  Ctrl+c still works, however.

In windows 7 64bit I get error when I try to starting anki with enabled plugin IR:</p>
Wystąpił błąd w dodatku. Skontaktuj się z jego autorem.
Prosimy nie wysyłać raportu o błędzie do twórców Anki.

Traceback (most recent call last):
File "C:\cygwin\home\dae\Home\anki\win\build\pyi.win32\anki\outPYZ1.pyz/ankiqt.ui.main", line 2679, in loadPlugins
File "c:\pyi\iu.py", line 439, in importHook
File "c:\pyi\iu.py", line 524, in doimport
File "C:\Users\jacek\AppData\Roaming\.anki\plugins\AnkiIR.py", line 33, in
import libxml2, urllib2, tempfile
File "c:\pyi\iu.py", line 439, in importHook
File "c:\pyi\iu.py", line 524, in doimport
File "C:\Users\jacek\AppData\Roaming\.anki\plugins\libxml2.py", line 1, in
from libxmlmods import libxml2mod
File "c:\pyi\iu.py", line 458, in importHook
ImportError: No module named libxmlmods
Traceback (most recent call last):
File "C:\cygwin\home\dae\Home\anki\win\build\pyi.win32\anki\outPYZ1.pyz/ankiqt.ui.main", line 2679, in loadPlugins
File "c:\pyi\iu.py", line 439, in importHook
File "c:\pyi\iu.py", line 524, in doimport
File "C:\Users\jacek\AppData\Roaming\.anki\plugins\libxml2.py", line 1, in
from libxmlmods import libxml2mod
File "c:\pyi\iu.py", line 458, in importHook
ImportError: No module named libxmlmods