flac
Command-line flash-card application for learning 中文字.
Why the name? It's just a truncation of "flash-card". Kind of silly, really.
Install
-
(Recommended) Download the program for your platform from https://github.com/marcelocantos/flac/releases.
-
(For geeks) Install from source:
-
Install Go. Options:
-
Mac with Homebrew:
brew install go
-
Clone this repo and run the following command:
go install ./cmd/flac`.
-
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 zā, 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
-
The list of words used for testing is sourced from an attachment in a Pleco Forums post titled Word frequency list based on a 15 billion character corpus: BCC (BLCU Chinese Corpus). The post itself derives the attachements from the Beijing Language and Culture University's 15-billion character corpus (zip archive).
Flac uses the top 10,000 words from the global word-frequency list.
-
Definitions are sourced from CC-CEDICT. A number of missing terms were added by hand (see addenda.txt from the flac source), mostly by looking them up in Google Translate.
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:
- 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.
- Instead of requiring entry of all pinyin alternative forms, test for a specific form with a unique definition as the hint.
- 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!
- Save session history view across sessions.
- Reintroduce
--focus
option from the old Python version. But the new version should create a separate queue instead of polluting the normal queue. - Auto-detect flagging performance and end the session with a suggestion to take a break.
- Test phrases.
- Integrate TTS and PortAudio. Uses:
- Hints
- Listening exercises
- Use speech recognition to test speaking.
- Research science-based SRS models and implement one.