Tagger V5: A tag selector for reviewing literature with a [good sort of] kitchen sink syndrome

I believe that tagging is one of the most important means (the other two being search and links) to recall academic knowledge. However, well-designed tags structure and consistent tagging methods are hard[never?] to achieve. My hypothesis is over-tagging, within a limited list, on complex academic literature and breaking down long notes into atomic notes will lead to a more effective retrieval of knowledge than seeking for the ideal tags from an ideal list. My general argument is that in the long run, I 'd rather skip reading irrelevant info under the same tags(or groups) than risk missing the relevant literature, and particularly notes, due to under-tagging. The challenge is how to make the tagging process more efficient.

This is the fifth iterations of Tagger script from (V1.1 to V2 and many unposted versions). I think I might have nailed it in this version.

What the script does: tag the document in any way DT allows, and do it efficiently in a unified interface.

The major changes in this version are all about user-experience:

  • A fast and really easy to use yet function-rich tag selector.
  • All preferences are set in a single dialog box.
  • The script is more configurable than the previous versions.
  • Each database has its own preference.
  • Changing internal preference in the script is no longer required.

This post will focus on the basic features of Tagger V5, where everyone can use. I will post the more specific features of the script later. I will also modify the Stack script V5 to have the same tagging features.

DEMO - Basic usage

For basic tagging, the user only need to enable four preferences

When the user invokes the script at a literature/note, a list is shown with a command section and multiple lists of tags

  1. The command section includes four functions: add new tags and date tag; filter the list of tags in database; replicate the document to other groups, and exit the selector after tagging.
  2. A date tag list that suggests a “today” hierarchical date tag, with a tag group structure of YYYY>MM>YYYY-MM-DD. User can add other hierarchical date tag by “add new tags and date tag” acion.
  3. A list of tags that matches the keywords and another list that matches the hash tags in the document. These two lists are based on DT’s standard functions. The two lists are not shown here because I add a prefix to all my tags and there are no hash tags in a journal article.
  4. The fouth list is a sorted list of all tags in the current database.

User can select actions and tags at the same time, and to perform actions and taggings repeatedly. The list will be shown again and again until after all of the desirable actions and taggings are completed*

In this example, user has selected three tags, and want to create new tags or new hierarchical date tags at the same time.
User can double click the list, or hit OK to trigger the add new tags action and tagging alltogether.

The script will first assign the tags to the document, then it will show the add new tags dialog. After the two actions are finished, the Tagger list will be shown again without breaking the workflow.

After the obvious tags are assigned, user may want to shorten their long tags list (I have 400+ tags) to a more focused list of tags by multiple string filters:

For example, the user wants to shorten the choices to find tags that are related to “institutions, competition,complexity, logic”. So, partial string-filters are entered.

The filtered tags list is shown

When a user has finished with all sorts of actions and taggings, they can either double click “Tag and exit”, or to include “Tag and exit” in their final selection of tags.

The action of Tagger script is contextual. If a group or no item is selected, the script assumes that the user wants to change the preference; if a document is selected, the script assumes that user wants to tag; if a tag is selected, the script assumes that the user wants to sync the matchsheet of keyphrases with the tags (if “match keyphrases” is enabled in the preference).

The requirements of the script

  1. You need to download Dialog Toolkit Plus from the Late Night Software website and save it under “/Library/Script Libraries”.
  2. You need to set up five cmd fields, two of them being essential, the other three are for more custom matching or working together with the Stack script.
-- essential custom meta data fields to be created
property mdExFrTagging : "isextag" -- type boolean, value==1 if a main tag groups is to be included in tag list
property mdIsContainer : "iscontainer" -- type boolean, value=1 if a group is to be shown as a document container
-- end of  essential custom meta data fields to be created
-- ignore mdtagIs if keyphrases will never be used
property mdtagIs : "tagis" -- type "multi-line text", match tags to the plain text of source document
-- ignore mdIsCard and mdSourceLink if Stack script is not used
property mdIsCard : "iscard" -- type boolean, value=1 for a note that is created from a source sdocument
property mdSourceLink : "sourcelink" -- type "URL",  used by notes to hold the link to the source document
-- end of -- ignore these two cmd if the user is not using stack script

The Script. Enjoy

TaggerV5b4.scpt.zip (145.9 KB)


There are three specific settings in the preference of Tagger V5:

1. If “source” is enabled, Tagger script will know whether a note was created by the Stack script, and the tags of the note’s source will be shown in the tag selector. The rationale of this preference is to save time and to improve tags consistency because some tags from the source may also be applicable to the note.

Note: I might consider adding an option for the reverse case: to show the list of tags from all notes that is created by the source when a source is being tagged by the script. The rationale is that one may review the literature for the 2nd or 3rd time and the tags of the notes that were taken from the document should be relevant to the literature itself.

3. If “popular tags shared by see also” is enabled, Tagger script will check the tags of the see also documents (in the current database) of which are highly similar to the subject document, and list the 1st to 3rd most popular tags (by count of occurrences) that are assigned to those documents. The rationale of this preference is that the tags of the very similar literature should also be considered when tagging the subject document to improve the consistency of the tagging.

"Ignore the tags of main tag groups" needs explanation. If you are like me who arranges tags under a few/many main groups of tags, this option should be enabled. Else the name of those tags groups will always have the highest occurrences, which make the tag list of see also worthless.

  • In this example, (Doc:7 Common >= 2) means that there are 7 see-also documents that have a similarity of equal or higher than 0.6, and all of the tags in the list are assigned to at least two or more of those documents.

The preference for 2 “match keyphrases” is more complicated. I will post the explanation in the future.