»
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 Schlossdie 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.