/flac

Flash Card application for learning 中文字 (Chinese characters)

Primary LanguageGoApache License 2.0Apache-2.0

flac

Command-line flash-card application for learning 中文字.

Why the name? It's just a truncation of "flash-card". Kind of silly, really.

Install

Run

./flac

Press Ctrl-C when you get bored. Progress will be saved as you go. The next time you run flac, it will continue where it left off.

HOWTO

For each character shown, enter the numerical pinyin form. E.g., if shown 扎, for which the pinyin is , zhā and zhá, enter za1zha12 (za1 zha12 and zha1 za1 zha2 are also acceptable, as long as all forms are present).

For multi-character words, alternate pinyin forms must be separated by /. For instance, the answer for 不是 can be entered as bu2shi5/bu4shi4 (spaces optional). The two forms can be entered in either order.

When you don't know the answer, just press esc and the answer will be shown in accented pinyin.

ETC

Scoring

Braille-dots indicate a character's score, e.g.: ⣿⡄ indicates a score of 10. Each correct answer bumps the score up by one dot. Each incorrect answer bumps it down by slightly more than one dot initially, and more dots for each consecutive incorrect answer. Pressing esc to reveal the answer bumps the score down by several dots.

A partial answer (incomple word or missing alternatives) won't change the score, and will offer a hint that more input is required.

An answer that is correct aside from tones, will be scored as an incorrect answer, but will also provide a hint that only the tones need to be corrected.

A character's score also indicates how far down the queue it will jump after a correct answer, in a crude approximation of SRS.

Random vs contextual learning

Learning groups of words in the context of a narrative or theme is considered the most effective way to build a foreign language vocabulary. It is considerably better than learning related words, such as colors, fruits, or modes of transport.

Yet another approach, learning words randomly, with no connection to each other, is slightly worse than learning them contextually, but still much better than learning related words. It is also vastly easier to implement for large collection of words, since it doesn't require human effort to construct meaningful stories. This is the approach taken by flac.

Sources

Updating source data

Currently, flac binds all source data directly into the program. Updating the lists or choosing different sources requires rebuilding from source. If you'd like instructions for how to do this, raise an issue.

Saving progress

Flac saves progress as you go. The program creates a database file, flac.db, in the current directory, which updates the word queue and their scores as you go, so that flac can remember your progress one session to the next. Flac doesn't currently support multiple profiles, but if you rename this file, flac will create a fresh file and start from scratch. You can thus manage profiles manually by fiddling with copies of flac.db.

TODO

In rough order of priority:

  1. Test knowledge of definitions (currently only shows definitions after a correct response).
    • Could be text entry or multiple choice.
    • Could be a second step after getting the pinyin form(s) correct.
  2. Instead of requiring entry of all pinyin alternative forms, test for a specific form with a unique definition as the hint.
  3. Test knowledge of the 汉字 for a given pinyin form (with or without hints).
    • Since we can't support the user drawing characters on a text UI, this will have to be multiple choice.
    • Actually, we can do mouse support, so perhaps we could support drawing with box-drawing characters!
  4. Save session history view across sessions.
  5. Reintroduce --focus option from the old Python version. But the new version should create a separate queue instead of polluting the normal queue.
  6. Auto-detect flagging performance and end the session with a suggestion to take a break.
  7. Test phrases.
  8. Integrate TTS and PortAudio. Uses:
    • Hints
    • Listening exercises
  9. Use speech recognition to test speaking.
  10. Research science-based SRS models and implement one.