Code Monkey home page Code Monkey logo

ir's Introduction

ir.el - Incremental Reading

The term is orginally coined by Piotr Wozniak and he describes it as:

Incremental reading is a learning technique that makes it possible to read thousands of articles at the same time without getting lost. Incremental reading begins with importing articles from electronic sources, e.g. the Internet. The student then extracts the most important fragments of individual articles for further review. Extracted fragments are then converted into questions and answers. These in turn become subject to systematic review and repetition that maximizes the long-term recall.

Introduction to Incremental Reading

This project aims to cover all the useful features of incremental reading. The main features I have implemented so far are scheduling of material and extraction from PDFs.

The current way to create questions and clozes out of the extracts is to write them out using ankifier but I want to improve on this in the future.

Tutorial

@TODO

Development

Changelog

  • 0.7.0:
    • Refactor (ir-start-session).
    • Fix issues in the algorithm.
    • Add org-roam integration.
    • Generalize (ir–check-duplicate)
  • 0.6.0: Add session functions (ir-start-session).
  • 0.5.0: Add editing function (ir-edit-update-column).
  • 0.4.0: Add function (ir-add-bibtex-entry).
  • 0.3.0: Add basic view by due functions.
  • 0.2.0: Add basic persistent highlighting functions.
  • 0.1.0: Initial release with basic extraction functions.

What’s Next?

  • [ ] Implement ordering by priority.
  • [ ] Video playback (vlc vs mpv).
    • [ ] From YouTube.
    • [ ] From local files.
  • [ ] Change the affinity for priority from INTEGER to REAL.
  • [ ] Create a heading of a pdf even if the pdf is not in the db.
  • [ ] Research the possibility of sioyek integration

    Release 1.4.0 of sioyek adds the ability to control a running instance of sioyek with the command line.

Implementation of question creation

I see a reason to implement a way to create basic or cloze questions. This is not SuperMemo and I’ve already worked out a way to create basic and cloze cards using ankifier.el. Such that the form of my final workflow would be:

EXTRACT TEXT

QUESTIONS

Design of the Database

Using emacsql I created the following table.

ColumnAffinityDescription
idTEXTUnique ID using org-id
afactorREALA-Factor
priorityREALPriority
intervalINTEGERInterval
dateINTEGERDate of next repetition
typeTEXTType of file (org-mode, pdf)
pathTEXTPath to file if applicalble

One of my goals is to support as many possible file types as possible. This would allow one to incrementally learn any piece of material. This also allows others to easily extend the program by including their favorite file types and programs to open them.

One way to query the database is to sort the ir table by date, then match the file type to a function that opens that file type.

Such files have a path which is inserted in the path column.

Example

File typeMethodDescription.
textorg-id-findA simple org heading.
pdfdired-find-fileA pdf file.
mp4@TODOA video.

Algorithm Design

I use a simplified SM2 algorithm to calculate the intervals. The A Factor increases by 0.08 per repetition.

$\text{New Interval} = \text{round}(\text{Old Interval} × \text{A Factor})$

$\text{New Date} = \text{Old Date} + \text{New Interval}$

ir's People

Contributors

adham-omran avatar hnvy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.