Emmio is an experimental project on languages and learning. It provides learning and testing algorithms:
and manages four kinds of artifacts:
Requires Python 3.10.
pip install git+https://github.com/enzet/emmio
To run Emmio, just run
emmio
You may specify data directory with --data
option and username with --user
option. If not specified data directory is assumed to be ~/.emmio
and username
is assumed to be the current system username.
> lexicon
The algorithm will randomly (based on frequency) offer you words of the target language. For each word you have to decide
- either you know at least one meaning of this word (press y or Enter),
- or you don't know any meaning of this word (press n),
- or the word is often used as a proper name or doesn't exist at all (press -).
To finish press q.
After that algorithm will provide you a non-negative number called rate, that somehow describes your vocabulary. 0 means you know not a single word of the language and infinity means you know absolutely all words in the frequency list. The better use of the rate is to track your language learning progress and to compare vocabulary of different people using one frequency list.
Rate | Level |
---|---|
near 3 | Beginner, elementary |
near 5 | Intermediate, upper intermediate |
near 7 | Advanced, proficient |
more than 9 | Native |
Lexicon configuration:
"lexicon": {
"<language>": "<frequency list id>",
...
}
language
is 2-letters ISO 639-1 language code (e.g.en
for English andru
for Russian).frequency list id
is an identifier of full frequency file. Important: for Lexicon you can use only full (not stripped) frequency list.
Wiktionary project contains frequency lists for different languages.
Emmio data directory is located by default in ~/.emmio
and contains all
downloaded artifacts and their configuration files and collected user data.
dictionaries
— single word translations.sentences
— whole sentence translations.lists
— frequency lists and simple word lists.users
— user data.<user name>
config.json
— user configuration file.learn
— user learning process data.lexicon
— user lexicon checking data.
Dictionaries are entities that provide definitions and translations for single
words. Artifacts are controlled by configuration file
dictionaries/config.json
.
Emmio supports:
- dictionaries stored in JSON files,
- English Wiktionary (through WiktionaryParser).
Frequency list is a relation between unique words and the number of their occurrences in some text of a corpus of texts. Some frequency lists are stripped (e.g. 6,500-lemma list based on the New Corpus for Ireland).
There is Hermit Dave's project FrequencyWords, which contains full and stripped frequency lists extracted from subtitles in Opensubtitles project.