»
The basics
ExponWords is a web application for learning words. It helps learn the word
pairs fed by the user using the principle that the more we have already
practiced a word, the less we need to practice it again.
So the main point of ExponWords is that the more times the user was able
to remember a word when the program asked, the less frequently it will be
asked (because it will be considered "stronger"). When a word is asked and
the user states that he remembers it, the word will be asked the next day;
if the users remembers the word the next day, it will be asked in 2 days;
if he knows it in 2 days, it will be asked in 4 days; and so on with powers
of 2. If the users admits on any of these occasions that he does not
remember the word, the strength of the word as stored by ExponWords will go
back to the initial level, and it will be asked again in 1 day, then 2
days afterwards, then 4 days afterwards etc.
ExponWords stores word pairs to be learnt. These can contain not only words,
but also expressions or anything the users wants to learn. For the sake of
simplicity though, they will be only referred to as word pairs. Word pairs have
the following elements:
- Word in the first language: the word in the foreign language to be
learnt.
- Word in the second language: the translation of the word to the
native language of the user, or the definition of the word (in either
language)
- Notes: any text that should appear only when the program shows
the solution. It may contain examples with the word, or it may even
describe where the user first encountered the word.
- Strengths and dates of the word: the program stores the 1→2
direction strength (i.e. how well the user can remember the word in the
second language if the program prints it in the first language) and the
2→1 direction strength (which is the opposite of the previous one)
separately. The dates (when the word should be next asked) are also
stored separately for the two directions.
- Labels: a list of words (separated by spaces), which help handle the word
pair.
User interface
ExponWords has a global menu and a separate menu for each dictionary.
The global menu is available on the main page: the user can log in, log out,
create dictionaries, set the options.
The dictionary menus are available from the dictionary page, which can be
accessed from the main page by clicking on the name of the dictionary. The user
can view, edit and delete the dictionary, add and import new words, and
practice.
Main page
The main page has the following menu items if nobody is logged in:
- Log in
- Register
- Language: The language to be used for the user
interface before logging in.
- Help: This page.
The main page has the following menu items for logged in users:
- Dictionaries: List of dictionaries the user has. After each dictionary,
there is a link to the practice page of the dictionary. The text of the link
is the number of words to be practiced today.
- Create new dictionary: Creates a new dictionary for the user.
- Search and operations: A search page that finds
word pairs in any dictionary and allows operations on several word
pairs.
- List all words: A page that lists the words in all dictionaries.
- Show my future: A page that shows the number of words that will be asked
in different days, supposing all word pairs in the dictionaries are known and
that no new word pairs will be added.
- Settings: The users can set their preferences
here.
- Change password
- Log out
- Help: This page.
Dictionary page
The dictionary page shows activities that can be done to the selected
dictionary. It has the following menu items:
- Practice: Practices today's words with the
user.
- Practice early: Practices words with the
user, even those that are not due today.
- Search and operations: A search page that finds
word pairs in the current dictionary and allows operations on several word
pairs.
- List all words: A page that lists all words in the current
dictionary.
- Add new word pair: Adding a new word to the database.
- Import word pairs from text: Imports word pairs from a text format.
- Export word pairs to text: Export word pairs to a text format.
- Import word pairs from tab separated values: The input format of this menu
item is optimized for words copied from a spreadsheet application.
- Modify: The practice word order and
the method of strengthening a word can be
set here.
- Delete: Deleting the dictionary. Deleted dictionaries can be recovered
only by the administrator.
Text formats
A dictionary uses one of the following text formats: plain text, HTML (keep
linebreaks) and HTML (unmodified). The text format determines how words and
notes are displayed to the user during practice sessions, or when listing words.
With using one of the HTML text formats, you can use bold text,
italic text, colors, images, tables, etc. in your words and notes.
- Plain text: with the plain text format, the displayed text will
be the same as the text as it was typed into the text for.
- Example text in the input box:
-
My favorite HTML tag is the <b> tag & its pair. E.g.:
The sun is <b>not</b> shining.
- Example text as it is displayed:
-
My favorite HTML tag is the <b> tag & its pair. E.g.:
The sun is <b>not</b> shining.
HTML (keep line breaks): with this format, the text will be
interpreted as HTML code.
HTML line breaks (i.e. "<br/>" tags) will be added to the end of
each line, so that they will be displayed as separate lines. There is a
similar mechanism for indented text.
The "&", "<" and ">" characters will be interpreted as HTML, so
"&", "<" and ">" must be written instead.
Not all HTML tags and attributes are allowed, only those that are safe and
cannot be used to execute JavaScript code in a browser.
- The allowed HTML tags are the following: h1, h2, h3, h4, h5, h6, p, br, hr, abbr, b, blockquote, cite, code, em, i, pre, q, small, strong, sub, sup, u, img, a, ul, ol, li, dl, dt, dd, style, div, span, table, caption, th, tr, td, thead, tbody, tfoot, col, colgroup.
- The allowed HTML attributes are the following: class, id, lang, style, title, href, target, alt, height, src, width, border, colspan, rowspan, headers.
- Example text in the input box:
-
My favorite HTML tag is the <b> tag & its pair. E.g.:
The sun is <b>not</b> shining.
- Example text as it is displayed:
-
My favorite HTML tag is the <b> tag & its pair. E.g.:
The sun is not shining.
- HTML (unmodified): Similar to the HTML (keep line
breaks) format, but it does not add HTML line breaks and indentation.
- Example text in the input box:
-
My favorite HTML tag is the <b> tag & its pair. E.g.:
The sun is <b>not</b> shining.
- Example text as it is displayed:
-
My favorite HTML tag is the <b> tag & its pair. E.g.:
The sun is not shining.
For further demonstration, let's see a more complex example using the HTML
(keep line breaks) format:
- Example input boxes:
Word in German: |
die <b>Kat</b>ze
|
Word in English: |
cat
<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Kittyply_edit1.jpg/220px-Kittyply_edit1.jpg">
|
Notes: |
<span style="color:darkgreen;">[ˈkaʦə]</span>
Katzen sind süße Tiere. <i>(Cats are cute animals.)</i>
|
- Examples displayed:
Word in German: |
die Katze
|
Word in English: |
cat
|
Notes: |
[ˈkaʦə]
Katzen sind süße Tiere. (Cats are cute animals.)
|
Custom CSS
A custom CSS can be set for each dictionary in the "Modify dictionary" page. If
the dictionary format is HTML, then the custom CSS will be applied on all web
pages where words of that dictionary are shown (practice page, list words, etc.)
Importing word pairs
Importing word pairs as text
This page lets you import word pairs in a textual format.
- The words in language 1 and language 2 should be separated by the " -- "
character sequence, and the notes should be indented with four spaces. For
example:
machen -- do
essen -- eat
die Katze -- cat
Plural: die Katzen.
Katzen sind süße Tiere. (Cats are cute animals.)
der Hund -- dog
Plural: der Hund, die Hunde.
Manche Hunde sind auch süß. (Some dogs are also cute.)
- If the text format of the dictionary is "HTML
(keep linebreaks)", the "<br>" strings in the input are replaced with
linebreaks. For example, if you import the following text:
das Schloss<br>die Schlösser -- (1) palace<br>(2) lock
(1) Der König wohnt in einem Schloss.
(2) Der Schlosser repariert Schlösser.
This will produce the following word pair:
Word in German: |
das Schloss die Schlösser
|
Word in English: |
(1) palace (2) lock
|
Notes: |
(1) Der König wohnt in einem Schloss.
(2) Der Schlosser repariert Schlösser.
|
Importing word pairs as tab-separated values
This page lets you import words from a spreadsheet for example.
Practice
The practice page contains the following elements:
- Statistics (e.g. "5 (1) / 6
(2) / 10"): these numbers show the
state of the current practice session. The meaning of the numbers is the
following:
- Number of the words answered and acknowledged by the server so far.
- Number of the words that the server has not yet acknowledged but
the client is still trying to send them.
- Number of words answered so far.
- Number of words so far that the user did not remember.
- Number of all words that have been and will be asked by the server
today.
- If the number of all words to be practiced is greater than 200, then
only the first 200 words are loaded at once, and the numbers above
correspond only to the currently loaded words. In this case, the total
number of all words that shall be practiced is also displayed.
- Operations
- The visibility of the Operations can be toggled with the "More" button
or the "m" key.
- Edit current word: editing the word being asked by the program. The
effect of the modification will be seen only after refreshing the main
page.
- Edit the previous word: editing the word previously asked by the
program.
- Add label: the printed labels can be added to the current word. Those
labels are printed that are set as quick labels.
- Buttons:
- ANSWER:
the user shall press this button when he thought through whether he
remembered the given word or not. After pressing the button, ExponWords
will show the solution. The same effect can be achieved by pressing any
key.
- YES: the
user uses this button to show that he remembered the given word, so the
interval before it is asked again can be longer than last time. The same
effect can be achieved by pressing the "y" key.
- NO: the
user uses this button to show that he did not remember the given word,
so it shall be asked again that day, then again 1, 2, 4, 8, etc. days
later. The same effect can be achieved by pressing the "n" key.
- The buttons can be pressed with PageUp/PageDown, which allows
practicing with a wireless presenter device. This feature can be activated
on the Settings page.
- Word: the word being asked is shown with
black color. After the ANSWER button is
pressed, the solution will be shown with blue, and the notes will
be shown in gray. The → symbol means that the word is shown in the first
language of the dictionary; the ← symbol means that it is shown in the
second language.
- Keyboard shortcuts:
- Y = Yes button
- N = No button
- M = Show/hide operations
- F = Full screen/leave full screen
Practice early
The "Practice early" page is a practice page where
not only those words are asked that are due today, but those too that could
benefit from practicing. (That means words whose dimness
is larger than 0.75. So for example if a word is due after 100 day of its last
practice, then it is asked in early practice sessions from day 75. From day
100, it is asked in normal practice sessions.)
In early practice sessions, the words are always ordered according to the I am a little behind ordering, which means that
first those words are asked that are better suited for early practice (because
their dimness is higher).
Word orders on the practice page
Words can be asked in several orders on the practice page. (Note that these
orderings specify only the order of words within the practice page, not which
word is asked which day.) You can set your preferred ordering globally on the
Settings page, or only for one dictionary on the Modify dictionary page.
- Random: the order of the words is totally random.
- New and forgotten words first:
- First the words with zero strength are asked: these are words that are
either new or where the user pressed the "NO" button at the last
encounter.
- Then the words with positive strength are asked: these are words where
the user pressed the "YES" button at the last encounter.
- I am a little behind: This word order is
useful when the user may not have time to practice all the words of today,
and have not practiced all words asked in the last few days.
- First the words with zero strength are asked.
- Then the rest of the words are asked, sorted by their dimness tomorrow in descending order. This means that
those words come first that are more urgent to practice, i.e. which should
have been asked more times. (The words with the same dimness tomorrow are
organized in ascending order by their strength.)
Note: words in the same category above (e.g. words with the same dimness
tomorrow and strength) are asked in a random order.
The concept of dimness
Dimness is a measure that shows how many times a word should have been
asked. For example, let's say that a word is practiced and "YES" is pressed,
and it is due in 4 days. After the practice, the dimness of the word is zero,
because it just has been asked. Then the dimness increases by one quarter each
day: 0.25, 0.5, 0.75, 1, 1.25, etc. On the day when the word is due to be
asked, it is 1 (by definition). Normally, the word is asked on this day so its
dimness goes back to 0; but if the user does not practice it, the dimness will
just increase by each day. The dimness of weak words increases rapidly, while
the dimness of strong words increases slowly.
When the dimness of a word is greater than 1, it means that the word should
be practiced: the higher the dimness, the more urgent the practice is. If the
user has quite a few words larger than dimness 1 for the practice session, then
the "I am a little behind" word ordering is
recommended.
For those interested, here is the formula that calculates the dimness of a
word with positive strength (words with nonpositive strength do not have
dimness):
Methods of strengthening a word
When the "YES" button is pressed during a practice session, the strength of
the given word will be increased. There are two methods for strengthening the
word. They both work on the basic principle that they double the time interval
for the next practice: 1 day, 2 days, 4 days, 8 days, etc.
The difference is how they handle the situation when the word is not
practiced on the day when the word is due, but later. For example let's say
that a word was practiced on January 1st, 2nd, 4th, 8th, but even though
ExponWords asked the word on 16th, 17th, etc., it was only practiced on 20th.
Let's see how the two methods calculate the next practice time of the word:
- Double last actual time interval: this method will say that the
last time the word was asked was 12 days ago (on January 8th), so we should
double this time interval, i.e. the word will be asked in 2 * 12 = 24 days
(February 13rd).
- Double last due time interval: this method will say that the
last time interval while ExponWords didn't want to ask the word was 8 days
(between January 8th and 16th), so we should double the length of that time
interval, i.e. the word should be asked in 2 * 8 = 16 days (February
5st).
In both cases, the strengths of the words will be calculated so that they
provide the time intervals described above.
Generally, the first method is better (that's why that is the default),
because it means less practice time. In some circumstances, though, the second
one may be useful too. In case of early practice, always the first method is
used.
Search
You can use the "Search and operations" page to search in your dictionaries.
You can select the dictionary, and the label in which to search. The text you
type into the textbox will be split into words (words are separated by spaces).
ExponWords will list those word pairs that contain all search words. If the
search box is empty, it lists all word pairs.
The searchbox is case insensitive and accent insensitive, so for example a
search for "haz" will find the word pairs that contain the text "Ház".
You can use prefixes to filter your search:
- "label:" (short form: "l"). List only word pairs that have the specified
label. For example, the search expression "label:oldwords cat" will show the
word pairs that contain the word "cat", and have a label that contains the
word "oldwords", even in part (so for example the word pairs with
"veryoldword" label will be found as well). If you want an exact match,
specify "label:^oldwords$ cat" (see below).
- "word1:" (short form: "w1"). List only word pairs that contain the
specified word in the first language. For example, "word1:hat" will find the
word "hat -- have", but it will not find the word pair "der Hut -- hat".
- "word2:" (short form: "w2"). List only word pairs that contain the
specified word in the second language. For example, "word2:cat" will find the
word "die Katze -- cat".
- "explanation:" (short form: "e"). List only word pairs that contain the
specified word in the explanation.
- "dict:". Search only in the specified dictionaries. For
example, the search expression "dict:42,43" will find word pairs in the
dictionaries with the identifiers 42 and 43. You can find out the identifier
of a dictionary by opening the dictionary and checking the URL. For example,
"exponwords.com/dict/42/" refers to dictionary 42.
The long and short forms of prefixes are equivalent. For example, the search
expressions "label:oldwords" and "l:oldwords" find the same word pairs.
When using the "label", "word1", "word2" or "explanation" prefix, you can
use the "^" character to find only word pairs where the specified word matches
to the beginning of the specified field. You can use the "$" character to find
only matches at the end. For example:
- "word1:die" matches "die Katze", and also matches "der Hund, die
Hunde".
- "word1:^die" matches "die Katze", but does not match "der Hund, die
Hunde".
- "word1:ze$" matches "die Katze", but does "die Katze, die Katzen".
- "label:german$" matches the "old-german" and "new-german" labels, but
does not match the "german-class" label.
- "label:^old$" matches the "old" label and nothing else.
The program shows the search hits in a table. Showing this table can be
turned off by unchecking the "Show hits" checkbox. In this case, the program
will still perform the search and display the number of hits. The usual
operations can be performed as well; but they will be performed on all found
word pairs, there is no possibility of manually selecting a subset of them.
Operations
The "Search and operations" page can also be used to perform certain
operations on word pairs that have been selected. Word pairs can be selected
with a single click on them. The selected word pairs are indicated by their
gray background and the state of their checkboxes in the "Selected" column.
- Delete word pairs: deletes the selected word pairs.
- Move word pairs: moves the selected word pairs to the selected
dictionary.
- Set dates and strengths: sets the dates and strengths of the selected
word pairs to the given values. Those fields that are left empty are not
modified.
- Shift dates: shifts the dates of the word pairs (based on which the
program decides when to ask the word pair) with the given days. For example
if 3 days is typed, then a word which would otherwise be asked on 1st January
will be asked only on 4th January. Negative numbers can also be specified: in
this case the dates will be changed to earlier ones.
- Enqueue new word pairs: set the dates of the word pairs to consecutive
days. For example, if you select 6 words, specify 2023-01-01 as the starting
date, and specify "2" as "word pairs per day", the first two words will be set
to 2023-01-01, and the next two words to 2023-01-02, and the last two words to
2023-01-03. Note that the dates are only set if the corresponding strength is
0 (to avoid accidentally enqueueing already practiced words).
- Add labels: adds the given labels to the selected word pairs.
- Remove labels: removes the given labels from the selected word
pairs.
- Set labels: sets the labels of the selected word pairs to the given list.
All other labels will be removed from the selected word pairs.
- Practice: jumps to the practice page that asks either all selected word
pairs, or only those that are due today (based on their dates).
- Export word pairs: prints the selected words in a text format.
Settings
The followings can be set:
- Language: The language of the user
interface.
- Time zone: The time zone used to calculate the words to ask. UTC+0 is
Greenwich Mean Time; the time zone is higher and higher as we go to the east
(UTC+1, UTC+2, etc.) and lower and lower as we go to the west (UTC-1, UTC-2,
etc.). The time zone set on the computer is shown on the Settings
page; in most cases, that is the best value to set here.
- Turning point: By default, ExponWords will start asking the words that are
due at a certain date from the very beginning of that day, i.e. at midnight
(0:00), according to the time zone set above. A different turning point can
be set here; e.g. if 3:00 is set, then the words that are due on a day are
asked only after 3am that day. Negative values can also be set: -1:30 means
that the words that are due on a day will be asked from 22:30 the previous
day.
- Practice page word order: The order in
which words are asked during practice sessions.
- Method of strengthening a word after
pressing YES.
- Practice page arrangement: The arrangement of the Practice page can be
set to "Normal" and "Less scrolling". The former fits better with the rest of
the user interface, but the latter can be better on a device on which the
browser automatically scrolls to the top after all clicks.
- PageUp/PageDown behavior: You can use this setting to control the Practice
page with a presenter device. You can choose from three options:
- "Normal": PageUp and PageDown are not customized on the Practice page.
They scroll the screen as usual. You cannot control the Practice page
with a presenter device.
- "PageUp = No, PageDown = Yes":
- The "Blank/Black" button on the presenter is equivalent to the
ANSWER button. In the background,
the presenter sends a "b" key to ExponWords.
- The "Next" button on the presenter is equivalent to the
YES button. In the background, the
presenter sends a "PageDown" key to ExponWords.
- The "Previous" button on the presenter is equivalent to
the NO button. In the background,
the presenter sends a "PageUp" key to ExponWords.
- "PageUp = Yes, PageDown = No": Same as the previous option, but with
the "Next" and "Previous" buttons swapped.
- Quick labels: labels given in this textbox (separated
by space characters) are the quick labels, which means that there is a button
for each of them in the Practice Page; by clicking on these buttons, the
labels can easily be added to the word that is being asked.
- Button size, question size, answer size, notes size: The font size
of different elements of the Practice page.
- Email address: This email address can be used to reset the password and
to receive notifications.
- Send me emails when new ExponWords has new features: If checked in,
emails about releasing and deploying new ExponWords versions will be sent to
the email address above.
Similar applications
ExponWords in not the only web application for learning words and other
items.
The algorithms of
Supermemo (English) and
szokincs.hu (Hungarian)
are similar to the algorithm of ExponWords in that it has you practice the same
word less and less often.
The creator of
Supermemo (Dr Piotr Wozniak) has articles about this kind of learning,
and
there
is an article in Wired magazin about him.
Other applications for learning words include
memorize.com (English),
Quizlet (English),
Brainscape (English) and
Szókincsfejlesztő (Hungarian).
Frequently Asked Questions (FAQ)
-
What happens if I leave the program in the middle of a practice
session, and I have answered only some words, not all?
This does not cause any problems. The words answered with "YES" will be
updated to stronger strength, and they will be asked again accordingly. The
other (not practiced) words will be asked when you reload the Practice
page.
-
What happens if I skip one or more days?
This will not cause a problem either, these words will not be skipped. The
program always asks all the words that should have been asked in the previous
days.
-
How does the program know whether I really knew the word
asked?
It does not, you tell this to the program. Since clicking or "YES" or "NO"
when asked whether you know a word or not has no effect other than changing
the word's strength and date, you can even manipulate this with good will.
For example when I learn a word in the morning and add it to my dictionary,
in the morning practice I often hit "NO" (as if I did not know the word) even
if I knew it, because I want it to be asked again in the evening practice
session.
-
A word pair can be asked in two ways. For example if I'm Hungarian and
I'm learning English, then the word can be asked in an
English→Hungarian and in a Hungarian→English direction. How is
this handled by the program?
When practicing, these two directions are basically handled as two
separate words. Both directions have separate strengths and separate dates
(which show when to ask them the next time).
-
The program cannot do something that I would like it to do. What can I
do?
There are several things in my
TODO
list.
If you need something, you can e-mail me and if I like the idea I will add it
to my list or (if it is already on the list) try to move it to the top.
-
Which language can the program be used for?
The program can be used for any language, because the words are added by
you.
-
In which order are the word to be practiced asked?
There are several possibilities: see the section on the practice word order.
-
In which languages is the user interface available?
Currently English and Hungarian. If you are interested in doing the
translation for another language, please contact
.
-
Why is ExponWords called ExponWords?
Because the dates when a word is asked are points of an exponential
function: 1 day, 2 days, 4 days, 8 days etc (assuming that the user knew the
word each time).
Other help pages
- Release notes: this page describes what's new in
ExponWords releases.
About
ExponWords v1.3.0.
Copyright (C) 2010-2023 Csaba Hoch
ExponWords is open source software and is distributed under the
Apache Licence
version 2. The source code repository can be found
here.