Mass Immersion Approach

Comprehensive Guide to MorphMan

Intro

MorphMan is an Anki add-on that keeps track of what words you know, and uses that to reorder your new cards into the optimal order.

You tell MorphMan which decks/cards/fields you want it to look at, and it goes through and parses all the text in those fields into “Morphs” (basically, words.) It assumes that you already know all the Morphs contained within the cards you’ve learned. In this way, it creates a database of your current knowledge, and uses this database to analyze how many unknown Morphs are contained within each of your new cards. It then reorders your new cards based on difficulty, so that you see the easiest cards (i.e., the cards with the fewest number of unknown Morphs) first. MorphMan only reorders your new cards; it doesn’t touch the scheduling of cards you’ve already learned. You can tell MorphMan to re-analyze and reorder your cards as often as you like. This allows you to always learn new cards in an i+1 fashion.

MorphMan is very useful for use with Subs2srs collections, as it can do the work of finding all of the i+1 sentences in an episode for you. It is also ideal for learning with a pre-made deck alongside sentence mining, as any material contained within the pre-made deck that you’ve already learned through mining will automatically be skipped, saving you time.

In addition to its main feature of reordering cards, MorphMan can also do the following:

  • Automatically add specific tags and fill specific fields to provide information about the difficulty of cards
  • Analyze text against your current knowledge
  • Edit subtitle files to show/hide words based on your current knowledge

Although it was created for use with Japanese, MorphMan also has limited support for any language written with spaces between words, and languages that use CJK characters as well. There is also a spinoff of MorphMan called JiebaMorph that supports Chinese in addition to the other languages. JiebaMorph functions exactly the same as MorphMan, so everything in this post will still apply. Unfortunately, JiebaMorph is currently only compatible with Anki 2.0.

MorphMan can be used on both Anki 2.1 and Anki 2.0. I will be focusing on the Anki 2.1 port, but since both versions function the same, everything in this post should be applicable to the Anki 2.0 version as well.

MorphMan has passed through the hands of multiple programmers since its creation in 2011, and unfortunately, it’s a bit of a mess in its current form. This post is an attempt to explain how the Anki 2.1 port of MorphMan functions as simply as possible. Feel free to skip straight to Setup, and refer back to the Glossary whenever clarification is needed.

You can download the Anki 2.1 port of MorphMan here. The Anki 2.0 version can be found here. In order for MorphMan to work with Japanese, the Japanese Support add-on must be installed as well.

Information comes from this page and this page, in addition to my own experimentation.

A video demonstrating the basic features of MorphMan can be found here.

Glossary

i+1

i+1 is a principle of language learning which involves quantifiying what is known and adding a small amount of additional information in order to ease into understanding the additional information. In this principle, “i” refers to what is known and “+1” refers to what is unknown. The concept of i+1 is derived from Stephen Krashen’s input hypothesis, but is often applied to spaced retrieval software to refer to new information on a given card, such as a single new vocabulary word per card.

Source.

Morph

Short for “morpheme.” A morpheme is “a meaningful morphological unit of a language that cannot be further divided (e.g. in, come, -ing, forming incoming) [The Oxford English Dictionary]”. In the context a MorphMan, a Morph is basically a word.

Database (DB)

A list of Morphs, which are saved in a “.db” file. MorphMan uses six different databases to keep track of what you know and how well you know it. Four of the six are necessary for MorphMan to function and are generated automatically, and the other two are for additional features and must be manually created by the user. All six databases go in the following location: C:\Users\[user]\AppData\Roaming\Anki2\[profile_name]\dbs.

The six databases are:

  • all.db: automatically generated; contains all Morphs contained within specified fields + all Morphs that have been imported from external.db.
  • mature.db: automatically generated; contains all mature Morphs.
  • known.db: automatically generated; contains all known Morphs.
  • seen.db: automatically generated; contains all seen Morphs.
  • priority.db: manually generated using the Database Manager; cards containing Morphs in this database will be prioritized over cards that would otherwise have the same MorphMan Index.
  • external.db: manually generated using the Database Manager; user-managed database that tracks outside-Anki knowledge. MorphMan assumes that all Morphs in this database are mature.

Mature

A card that has an interval of at least 21 days. Also, a Morph that is contained within the specified field of a “mature” card. Morphs added through “external.db” are automatically counted as mature. The threshold of when a card gets counted as “mature” can be changed in config.py.

Known

A card that has been reviewed. Also, a Morph that is contained within the specified field of a “known” card. Same as a “seen” card/Morph. The threshold of when a card gets counted as “known” can be changed in config.py. If you change the threshold from the default of 10 seconds to 24 hours, only cards that have graduated from the learning queue will be counted as “known,” thereby differentiating “known” and “seen” cards/Morphs.

Seen

A card that has been reviewed. A morph that is contained within the specified field of a “seen” card. With the default config.py settings, ‘seen” cards/Morphs will also be treated as “known” cards, even before graduating from the learning queue.

Unknown

A Morph that has not been “seen”.

Unmature

A Morph that is “known,” but is still not “mature”.

Focus Morph

The unknown Morph in a sentence with one unmature Morph.

MorphMan Index (MMI)

MorphMan sorts your cards in accordance with their MorphMan Index. MorphMan Index is based on the number of unique unknown morphemes, how much the length of the sentence differs from (number of your choosing) morphemes of length (ie, avoid short/long sentences), and the frequency at which the unknown morphemes come up in other notes you’re trying to learn.

The formula is: “MMI = 10000*N_k + 1000*lenDiff + freq,” where

  • MMI = MorphMan Index
  • N_k = number of unique unknown morphemes
  • lenDiff = max( 0, min( 9, abs( N – length_of_sentence ) -2 ) )
  • freq = 999 – min( 999, avg_freq_of_focus_morpheme_in_all_cards )

In other words, cards are first sorted by the number of unknown Morphs they contain. This means that i+0 cards (or what MorphMan calls “comprehension”  and “fresh vocab” cards) will be at the very top (although in MorphMan Preferences you can tell MorphMan to always skip i+0 cards). Cards with the same number of unknown Morphs are then further sorted by their length: cards with the ideal length are sorted higher than cards that are too long or too short (you can define the length of “too long” and “too short” in config.py). I+1 cards with the same number of unknowns and the same length value are then further sorted by the frequency of their Focus Morph (the unknown Morph in an i+1 card) within the collection.

Finally, for cards whose number of unknown Morphs, length value and frequency are roughly equivalent, i+1 cards whose Focus Morph verb, and cards containing a Morph found in priority.db, are given a slightly higher value.

Setup

After installing MorphMan, you will find that the following changes have been made to Anki:

  • There is now a K and then a number to the right of the “sync” button. It looks like a button, but it’s not. The number simply represents how many Morphs you Know. It can be motivating to watch it gradually increase over time.
  • Four new options under “Edit” tab in the browser: “MorphMan: View Morphemes,” “MorphMan: Extract Morphemes,” “MorphMan: Batch Play” and “MorphMan: Mass Tagger.” These are pretty much just unnecessary bonus features, so you don’t need to worry about them for now.
  • Three new options in the “Tools” menu: “MorphMan Recalc,” “MorphMan Preferences” and “MorphMan Database Manager.” All you really need to worry about “Recalc” and “Preferences.” “Preferences” is where you configure everything, and “Recalc” is kind of like the “go!” button. “Database Manager” has some useful features, but isn’t crucial MorphMan’s main functions; all the important components of database management are done for you automatically.

Although you control most of MorphMan’s settings in “Preferences,” there are some other options that are controlled in “config.py,” a file that automatically gets downloaded into the following directly when installing MorphMan: C:\Users\[user]\AppData\Roaming\Anki2\addons21\900801631\morph\config.py (on Anki 2.0: C:\Users\[user]\AppData\Roaming\Anki2\addons\morph\config.py). The default config.py settings are just fine, so you don’t need to mess with them if you don’t want to. But for those interested, I will be explaining how to tinker with it later in the post.

All of this might sound very complicated at first, but really, all you need to get started is to configure “Preferences,” make a small adjustment to your note-types, and then run “Recalc.”

MorphMan Preferences

Note Filter

This is where you tell MorphMan which fields of which cards you want it to analyze. If you skip this step, MorphMan will have nothing to work with and not function. Whenever MorphMan talks about your “collection,” really it only means the portions of your collection that you specify in the Note Filter. The instructions listed are mostly self-explanatory. Note that if you uncheck “Modify?”, MorphMan will analyze the specified fields of cards (and update the database of learned/mature Morphs based on them), but won’t actually reorder of them. If you are on Windows 10, you may have to extend the entire “MorphMan Preferences” windows in order for the “Modify?” checkbox to appear. It may also let you type text next to the checkbox, but this is simply a glitch.

Extra Fields

MorphMan has the ability to auto-fill up to seven different fields with specific information about your cards. This will only apply to cards specified in the “Note Filter” tab. In the “Extra Fields” tab, you can customize the names of each of these seven fields. In order for MorphMan to auto-fill the fields, you have to add each corresponding field to your note-types. The “Focus Morph” field is used in other features, so it must be added to your specified note-types for MorphMan to work properly. The other six fields are entirely optional; if you don’t want them, simply don’t add them to your note-type. MorphMan will update the contents of these fields after a Recalc.

The Six Fields are as follows:

  • Focus Morph: The unknown Morph in sentences with one unmature Morph. Cleared once all Morphs are mature. If a card is not i+1, this field will be left blank.
  • Unmatures: Comma-separated list of unmature Morphs.
  • Unknowns: Comma-separated list of unknown Morphs.
  • Unknown Frequency: Average of how many times the unknown Morphs appear in the specified portion of your collection.
  • MorphMan Index: Detailed explanation here. Roughly corresponds to the difficulty of card. The ‘due’ time of card will be set to this value.
  • Unmatures Count: Number of unmature Morphs on this note.
  • Unknown Count: Number of unknown Morphs on this note.

Personally, I would only add “Focus Morph” in order to keep card templates as clean as possible.

Tags

As part of the process of sorting cards based on their difficult, MorphMan automatically adds and removes tags to the cards you specified in the “Note Filter” tab. In the “Tags” tab, you can customize the names of the different tags, as well as select if you want MorphMan to add all, or only the required minimum, of the possible tags to your cards.

The different tags are as follows:

  • Vocab: Note that is i+1 (contains one unknown Morph).
  • Fresh Vocab: Note that contains no unknown Morphs, but one or more unmature Morphs.
  • Comprehension: Note that is i+0 (contains only mature Morphs).
  • Not Ready: Note that two or more unknown Morphs.
  • Already Known: A tag that you can manually add to notes to tell MorphMan that you already know all the Morphs contained in the note. After a Recalc, MorphMan will add all the Morphs contained in notes with this tag to the database of Mature Morphs. “K” is the hotkey for adding this tag to a card while reviewing, but it only works in Anki 2.0.
  • Priority: Note contains a Morph that is contained in priority.db. Will be ordered higher than Notes that would otherwise have the same MorphMan Index.
  • Too Short: Sentence in specified field is too short. The threshold can be edited in config.py.
  • Too Long: Sentence in specified field is too long. The threshold can be edited in config.py.

By unchecking the “Add tags even if not required” box, only the “Vocab,” “Fresh Vocab,” “Comprehension” and “Not Ready” tags will be added to cards.

Note that, although MorphMan will only ever change the scheduling of new cards, tags will still be added to cards you’ve already learned. This means that, for example, the “Comprehension” tag will be added to cards you know, signifying that they are i+0. But this doesn’t mean that those cards will be skipped when you review. Only new cards with the “Comprehension” tag will be skipped.

Also note that, with the exception of the “Already Known” tag, manually adding tags to cards will not affect MorphMan. For example, let’s say that MorphMan said a certain card is i+1, but in reality, it’s i+2. Even if you manually add the “Not Ready” tag to this card, MorphMan will simply ignore this and remove the tag after the next Recalc.

General

Because MorphMan Index is based on the expected difficulty of cards, i+0 (“comprehension”/”fresh vocab”) cards end up being prioritized before i+1 (“vocab”) cards. Because studying i+0 sentences is mostly a waste of time, you are given the option to have MorphMan automatically skip over “comprehension” and “fresh vocab” cards, as well as “vocab” cards whose Focus Morph was already studied that day. In other words, by checking off all three boxes in the general tab, you have morph man only show you i+1 cards.

Note-Types

Like I explained in the Extra Fields portion of the previous section, you need to add (at least) the “Focus Morph” field to all the note-types that MorphMan will be analyzing.

While you are editing your note-types, there is also some MorphMan-specific CSS that you can use to automatically color-code sentences based on their learning status of their Morphs.

In order to do this, first, in one of the HTML fields, choose which field you want to add color-coding to, and add morphHighlight: inside of the curly brackets, before field name. Then, add the following to the bottom of the CSS section:
[mtype=unknown] { color: red; }
[mtype=seen] { color: orange; }
[mtype=known] { color: green; }
[mtype=mature] { color: blue; }

I personally recommend using “background-color” instead of “color,” in order to reserve “color” for the color-coding of pitch accent. Below is my personal coloring scheme.

[mtype=unknown] { background-color: #ffff99; }
[mtype=seen] { background-color: #ffd1b3; }
[mtype=known] { background-color: #b3e6cc; }
[mtype=mature] { background-color: #f2f2f2; }

Unfortunately, this MorphMan-specific SRS isn’t compatible with the Japanese Support add-on’s “furigana” feature. In case you’re not familiar, by adding furigana: inside the curly brackets, before field name of a field, text that would normally appear as “日本語[にほんご]を 勉強[べんきょう]します” will be automatically formatted as furigana: 日本語(にほんご)勉強(べんきょう)します (see the bottom half of this image). But because the furigana: and morphHighlight: syntax interfere with each other, you can’t display both furigana and the MorphMan info at the same time. In order to get around this, I recommend only adding morphHighlight: to the Expression field, and only adding furigana: to the Reading field. This way, you can get the best of both worlds.

It may also be a good idea to only put the MorphMan info on the back of cards. The reason for this is that, in order to get the best results, you want your SRS experience to simulate real life as much as possible. When reading in real life you aren’t going to be told which words you know and which you don’t, so it makes sense reflect this in your sentence cards. In order to have neither furigana or MorphMan info on the front, but both on the back, format your cards in the following way. On the front of your card, simply put {{Expression}}, and on the back, replace {{FrontSide}} with the actual code from the front of your card, except with an added morphHighlight: in front of Expression. This should give you the following:

This should also make color coding for pitch accent easier, as you can color-code the Reading field, reserve the Expression field for MorphMan info, and then not have to worry about colors layering on top of each other. I would still avoid using similar color schemes for MorphMan info and pitch accent though, as mixing the two could lead to creating false associations in your head.

If you don’t see any color yet, don’t worry. In order for it to work, you first need to run “Recalc,” which will and have MorphMan analyze your collection and create the database it will use to color your cards.

MorphMan Recalc

Once you have set up “MorphMan Preferences” and configured your note-types, all you have to do is run “Recalc” and you are ready to go. “Recalc” stands for “recalculation,” and is basically the command that tells MorphMan to work all its magic. When you run Recalc, MorphMan will do the following:

  • Go through the specified portion of your collection and generate/update the “all.db,” “mature.db,” “known.db” and “seen.db” databases.
  • Merge the “external.db” database with the four databases mentioned above.
  • Update MorphMan-related fields and tags, as specified in “Preferences.”
  • Reorder your new cards based on their MorphMan Index.

Basically, after learning i+1 cards in a repping session, cards that were previously i+1 will have become i+0, and cards that were previously i+2 will have become i+1. When you run Recalc, MorphMan will go through your collection, recalculate the difficulty of your cards based on your new knowledge, and reorder your new cards in a way that’s optimal for the new you: the you who knows more than you did yesterday.

You can run Recalc as often as you like. It’s a good idea to run it at least once a day, so that your new cards will always appear in the most optimal order. MorphMan will also prompt you to run Recalc after closing Preferences. The hotkey for Recalc is “Ctrl+M”.

Usage

MorphMan works by reordering your New Card Queue, so make sure that “Show new cards in order added” is selected in the New Cards tab of your option group settings. Although the setting is called “Show new cards in order added,” it really means “show new cards in the order of the New Card Queue.” If you select the other option, “Show new cards in random order,” you will bypass the New Card Queue and render MorphMan useless.

After MorphMan sorts your cards, there are two main ways to proceed. The first is to jump right into repping, and iron out any kinks in your cards as you go. The second is to go into the browser, look at your newly sorted New Card Queue, and touch things up ahead of time. If you are using a fully-loaded pre-made deck (which includes the definitions of words), the first option may work well. If you are using MorphMan with Subs2srs, and need to add definitions manually, the second option may be more practical.

In the Browser

The way to go about touching things up before repping is pretty straightforward. Go into the browser, and for the deck you want to work with, find all the new cards with the “Vocab” (i+1) tag. “deck:deck name” is the syntax for finding cards in a specific deck (if the deck name contains spaces, the whole thing needs to be in quotations), “is:new” is the syntax for finding new cards, and “tag:TagName” is the syntax for finding cards with a given tag. You can also add “-is:suspended” to exclude suspended cards. By going to “Filter… > Save Current Filter…,” you can save the search for easy access later.

Once you have pulled up all your new cards that are i+1, sort them by “Due”. This will allow you to see your newly sorted New Card Queue. From here, you can add definitions to cards that look good, and suspend or delete cards that don’t.

MorphMan also adds four (five on Anki 2.0) new options to the “Edit” tab of the browser.

  • MorphMan: View Morphemes (Ctrl+Shift+V): Brings up pop-up window showing the Morphs contained in the selected cards. Will use the field specified in the “Note Filter” tab of Preferences. If no field is specified, the first field of the card will be used.
  • MorphMan: Extract Morphemes (Ctrl+Shift+E): Extracts Morphs from selected cards and lets you save them to a .db file. Will use the field specified in the “Note Filter” tab of Preferences. If no field is specified, the first field of the card will be used.
  • MorphMan: Batch Play (Ctrl+Shift+P): Batch play all the media of the selected cards. Useful when you want to hear the same word pronounced in multiple contexts. Must add the name of the media field to config.py for it to work.
  • MorphMan: Learn Now: Raises selected cards to the top of the learning queue. This option is only available in Anki 2.0.
  • MorphMan: Mass Tagger: Allows you to add specific tags to all cards whose specified field contains a Morph found in a specified .db file (for example, add the tag “TagName” to all selected cards that contain a Morph found in filename.db). Doesn’t seem to work in Anki 2.1 (gives an error).

While Repping

MorphMan also has some features that make cleaning up cards on the go a smooth process.

If “Skip card if focus morph was already seen today” is checked off in “MorphMan Preferences” > “General,” MorphMan will continue to modify the New Card Queue while you rep to ensure that you only see cards that are i+1. For example, let’s say there are five i+1 cards, all with the same Focus Morph, at the top of your New Card Queue. After you learn one of those cards, the other four, which are now i+0, will automatically be moved towards the bottom of your New Card Queue. Whenever this kind of reordering happens while you are reviewing, the following notice will appear:

Obviously, you won’t be able to benefit from this feature when repping on mobile. But, an easy way to get around this is to simply manually bury any i+0 cards that come up when reviewing. To go back to the example of if you had five i+1 cards, all with the same Focus Morph, at the top of your New Card Queue: after you learn the first card, the next four will become i+0. On mobile, those four i+0 cards will still come up. But, if you simply bury them manually, then you can avoid them for the time being, and then have MorphMan move them to the bottom of your New Card Queue automatically the next time you run Recalc. In this way, as long as you run Recalc once a day, you can still get all the practical benefit of using MophMan even if you always rep on mobile.

Let’s say that a new i+1 card comes up while repping, but you think you might have a better i+1 card for the same Focus Morph in your deck, and you want to learn that one instead. In Anki 2.0, when repping, you can press the hotkey “L” to open the browser and see all the other i+1 cards in your collection with the same Focus Morph.

From here, you can select your preferred card, right click and choose “Reposition…,” and move it to the very top of your New Card Queue. Now, once you close the browser, the preferred card will be waiting for you to learn. Once you review it, the feature I just explained above will automatically move the original card (along with all other i+1 cards with the same Focus Morph) to the bottom of the New Card Queue.

Unfortunately, this “L” hotkey doesn’t work in Anki 2.1. But, luckily, you can create the same effect manually with just a few extra steps. When repping, press “B” to open the browser, copy the contents of the current card’s Focus field, and then search “Focus:[contents of Focus field]” in the browser. This will bring up all the i+1 cards in your collection that share that Focus Morph. From here, you can proceed to pick your preferred card and go “right click > Reposition”. The “Reposition” hotkey is “Ctrl+Shift+S,” so that might save you a few seconds.

Working with the Algorithm

Sometimes MorphMan will say a card is i+1, when it’s actually i+0 due to you knowing a Morph that wasn’t in your Anki collection. When this happens, add the “Already Known” tag to the card, and then bury it (if you are in the browser, simply add the “Already Known” tag and then ignore it). Next time you run Recalc, MorphMan will add all the Morphs contained in the card to your mature database. “K” is the hotkey for adding the “Already Known” tag to cards while repping, but it only works in Anki 2.0. On Anki 2.1, you will have to add the tag manually. One option is to, while repping, simply mark and bury the card (mark hotkey: “*”; bury card hotkey: “-“), and then after your repping session, add the “Already Known” tag to all marked cards in bulk in the browser. This could also be a good strategy for when repping on mobile.

There will also be times when MorphMan thinks an i+0 card is i+1 due to incorrect parsing. MorphMan isn’t that smart, so it’s prone to making mistakes like thinking two different conjugations of the same word are actually two unique words (not that this happens every time; in general, MorphMan is pretty good with parsing conjugations.) The good news is that the longer you use MorphMan, the more data it accumulates, and the more accurate it becomes. So, try not to get discouraged if it seems especially mistake-prone at first. Whenever MorphMan fails to recognize a known word due to incorrect parsing, simply add the “Already Known” tag, run Recalc, and add that specific form of the word to your database.

On the other hand, there will also be times where MorphMan says a card is i+1, but you aren’t able to understand it. There are two reasons that this may occur. The first is that, due to incorrect parsing, MorphMan thinks you know a word that you don’t. Unfortunately, there is no easy way to remove a Morph from MorphMan’s database. But the good news is that this really shouldn’t happen very often. When it does happen, your only real option is to suspend or delete the card.

The other, much more likely scenario is that, although a sentence deemed i+1 does indeed include only one unknown word, you still aren’t able to understand it. This is simply a fact of life when it comes to language learning: sometimes you know all the words in a sentence, but just can’t get what it means. It could be due to one of the words having an alternate meaning you haven’t learned yet, or the grammar might be too tricky for your brain to parse. So basically, although the sentence appears to be i+1, it’s actually i+2 or 3. By definition, any sentence that is truly i+1 shouldn’t be difficult to understand.

Whenever this happens, it’s always best to swiftly suspend or delete the card and move on. The whole point of MorphMan is to help you make fast progress by collecting low hanging fruit. If you spend time mulling over things that are above your level, you’re defeating the purpose of the add-on.

MorphMan Database Manager

The MorphMan Database Manager is a tool for manipulating database files. Its most important feature is creating database files out of text files. For example, let’s say you have a Japanese novel formatted as a text file. You could input this text file into the Database manager, and have it output a database file with all the Morphs contained in the novel.

If you named this database file “external.db,” and placed it in C:\Users\[user]\AppData\Roaming\Anki2\[profile_name]\dbs, once you Recalc, MorphMan will add all of those Morphs to your mature.db database. If you do a lot of learning outside of MorphMan, this is a good way to catch MorphMan’s database up to your current knowledge.

In a similar fashion, you could take the first few thousand words from a frequency list, use the Database Manager to convert that into a database file, name the file “priority.db,” and place it in the same directory as above. Then, once you Recalc, MorphMan will give high-frequency words a higher MorphMan Index, increasing the efficiency of your learning.

The Database Manager is a little counter-intuitive to use, so I decided to simply make a video instead of explaining everything through text:

You can find the frequency lists shown in the video here (source).

Adaptive Subs

The Database Manager also has a feature called “Adaptive Subs,” which is supposed to allow you to make custom subtitles files based on your personal known.db and mature.db databases. For example, you could create a subtitle file that only displays subs for lines that contain unknown Morphs.

Unfortunately, the feature is very annoying to set up and use, and straight up doesn’t work in most cases. Hopefully this feature will be improved in the future, but in its current state I don’t think it’s worth bothering with.

If you would like to give it a shot anyway, you can find an explanation of the feature here.

config.py

I said in the introduction to this post that MorphMan has passed through the hands of multiple programmers, and due to this is a bit of a mess. The configuration file, config.py, is where this becomes the most apparent.

In the early versions of MorphMan, there was no “Preferences” module inside of Anki. Instead, there was a configuration file inside the add-on’s directly, which you had to open in a text editor and use code to configure manually. Later down the line of development, the “Preferences” module was added into Anki’s interface, making it much easier for to get MorphMan setup. The problem is that this “Preferences” module didn’t completely replace the configuration file. MorphMan still comes with a configuration file inside the add-on directory, and there are certain settings that can only be modified by manually editing this file.

Recall that, originally, the configuration file was used to control all of MorphMan’s settings. Which decks/note-types/fields you want MorphMan to look through, what tags you want MorphMan to add, etc., was all configured with this file. Well, to this day, even though that most of these settings are now controlled with Preferences inside of Anki, when you open up the configuration file, all the old options to edit these things are still there. That means that more than half of the options you will find in the configuration file are completely obsolete in the current version of MorphMan. Changing them won’t have any effect; they will simply be overwritten by whatever is specified in Preferences.

Editing config.py

If you are using Anki 2.1, config.py can be found in C:\Users\[user]\AppData\Roaming\Anki2\addons21\900801631\morph\config.py. In Anki 2.0, it can be found in Anki 2.0: C:\Users\[user]\AppData\Roaming\Anki2\addons\morph\config.py.

If you mess up your config.py and need to start fresh, you can find a copy of the default settings here.

Code editors with like Notepad++ or Sublime Text have syntax highlighting, which makes viewing and editing config.py much easier. But ultimately any text editor will do.

Once you open up config.py in your text editor of choice, here is a list of the following options you can tinker with (remember, some options are obsolete and don’t influence MorphMan at all):

  • Line 18: Mature threshold. How many days a card’s interval must be before the Morphs contained in the card are considered “mature”.
  • Line 19: Known threshold. How many seconds has passed since a card was initially seen before the Morphs contained in the card are considered “known”. Once a card graduates from the learning queue, its Morphs will be considered “known” regardless of whether it has reached the threshold or not. If left at the default value of “10 seconds,” there will be no distinction between Seen and Known cards; all will be considered Known.
  • Line 20: Seen threshold. How many seconds has passed since a card was initially seen before the Morphs contained in the card are considered “seen”.
  • Line 21: Text file import maturity. Default interval given to Morphs that are manually imported by the user via the external.db database.
  • Line 23: Browse same Focus hotkey. Hotkey to open the browser while reviewing and view all cards with the same Focus Morph. Doesn’t work on Anki 2.1.
  • Line 24: Set Known and skip hotkey. Hotkey to add the “Already Known” tag and then skip the current card while reviewing. Doesn’t work on Anki 2.1.
  • Line 26: Print number of alternatives skipped. If “Skip card if focus morph was already seen today” is checked off in “MorphMan Preferences” > “General,” MorphMan will continue to reorder the New Card Queue while you rep to ensure that you only see cards that are i+1. If “Print number of alternatives skipped” is set to “True,” whenever this reordering happens while you are reviewing, a small notification box will briefly appear. If set to “False,” the reordering will still happen, but this notification box will not appear.
  • Line 46: Batch media fields. By specifying the fields that contain audio on your cards, you can enable the Batch Play option in the browser
  • Line 48: Min good sentence length. The minimum number of characters for a sentence to not be considered “too short”. Cards with sentences considered “too short” will receive a lower MorphMan Index.
  • Line 49: Max good sentence length. The maximum number of characters for a sentence to not be considered “too long”. Cards with sentences considered “too long” will receive a lower Morph Man Index.
  • Line 51: Verb bonus. The amount specified here will be added to the MorphMan Index of cards that contain an unknown verb. I guess the idea is that verbs tend to be more useful to learn than other parts of speech.
  • Line 52: Priority.db weight. The amount specified here will be added to the MorphMan Index of cards that contain an unknown Morph that appears in the priority.db database.
  • Line 54: Only update k+2 and below. If this option is set to “True,” cards that contain more than two unknown morphs won’t be sorted by MorphMan. This reduces how many notes are changed after a Recalc by not updating notes that aren’t as important, in return reducing the sync burden.