LanguageCards 1


Author: Samuel Peterson


Date Published
2018-03-06 (ISO 8601)
73-03-06 (Post Bomb)


For the past several years, I have been fiddling with the idea of creating some software as an aide for my practice with the German tongue. Existing programs such as Rosetta Stone or Duo Lingo were not exactly what I had in mind, nor were they customizable to my purpose. Another possibility was the electronic flash-card system called Anki, which is extensible, however I found the model of flash card emulation to be too simple. Previously, I made some simple forays into such a project, but I had not come up with a model that really fit what I was looking for. About half a year ago, however, I finally came up with something which I think would be useful, I call it LanguageCards.

So far the basic structure and interface for the application has been written. However, life as a parent makes it very easy for such projects to be put aside for some time, and I am just now adding the finishing touches to make it usable. In particular, I need to make a nice client, or user interface to interact with the server. I thought I would make use of this opportunity to record the process of finishing the first iteration of this application. This post shall be the first in a series relating to the project. Links to the previous and next posts in the series will be included when such posts exist. You can find the application on Github here. This post will contain a summary LanguageCards as it exists now.


Basic Idea of LanguageCards

Despite my critical statement regarding the model of flash cards as a model for a foreign language tools, much of the nomenclature of LanguageCards (including the title) is derived from a flash card model. This is mostly due to the fact that I'm rubbish at making names.

The fundamental elements Language cards are, each of which is instantiated by an object called a card:

  • Language A Vocab items
  • Language B Vocab items
  • Language A Example items
  • Language B Example items
Language A Vocab items are meant to be translations of language B Vocab items. Language A Example items are meant to be translations of Language B Example items. These cards are related to one another in a many-to-many fashion: A Vocab B card can have multiple translations and multiple examples, A Vocab A card can be a translation to multiple Vocab B cards, and a sentence in language B can be an example of multiple Language B cards. These cards are grouped into decks, again are related in a many-to-many fashion: A single card can be in multiple decks, and a deck has multiple cards.

As an example, we could have the following for a Vocab B card (in this example language A is english and language B is german):

lediglich

  • type: adverb
  • translations:
    • merely
    • solely
    • simply
    • ...
  • examples:
    • Es besteht lediglich aus ...1
    • Die Maser-Uhren erreichen eine Abweichung von lediglich einer Sekunde in drei Millionen Jahren.2
    • ...
  • ...
In addition to those shown there are other fields recording the score a given user has on the given card, and an optional field giving grammatical information such as paradigms and the like.

Intended Usage

The intended use of Language cards is to design quizzes out of the collections of cards called decks. For example, there would be a standard quiz method and scoring rubric which takes an arbitrary Deck and runs the user through the quiz for the cards in that deck. It will also be possible to design one's own quiz methods and scoring rubrics.

The standard quiz method would take Vocab B items, display examples and ask for a translation. It is my belief that displaying the examples up front is an essential feature to this quiz scheme; mere translations are much harder to remember than contextual usage. Words are in fact defined by their neighbors. I have found the creation and reading of sentences which employ words that have been difficult to remember to really help in my retention.

The standard scoring rubric is very simple and relies on the integrity of the user: the translations are given and the program asks the user if he or she is correct.

What's the point of a score if it's all self reported? If you keep score, you can do interesting things such as creating decks of words that have a low score, and record the words which you have typically done well with.

Why self-report scores? To account for mis-spellings, and alternative answers which may be correct, but just not accepted as correct by the system.

State of the LanguageCards project

The models for cards and decks have been defined, as well as an api to interact with them. LanguageCards uses the ORM from the SQLAlchemy project to create the models for the cards.

At this point one can use LanguageCards with an interactive python session. I would like LanguageCards to have a more intuitive user interface, the design of which will be the topic for the next blog post in this series.


Footnotes

1: It simply consists of...

2: The Maser clock achieves a drift of merely a second every three million years.