278 comments

[ 4.4 ms ] story [ 130 ms ] thread
A very insightful thread by Hillel Wayne on content tagging systems and their challenges.

Their ubiquitous use (in library and information sciences, and popular social networks like Instagram, Twitter, and Pinterest), their deceptive ease of implementation, and "obvious advantages" over hierarchies/folders, means that almost every developer has (or will) run into them at one point or another..

Feel free to comment with good theory and case studies on tagging systems. (It's especially interesting with good case studies for how to model an advanced tag system in a graph database).

> It's especially interesting with good case studies for how to model an advanced tag system in a graph database

I wouldn't accuse it of being a good tag system, nor a true graph database, but one thing to look at is Semantic MediaWiki. It's a MediaWiki extension which takes Categories as a starting point, and extends it quite far with e.g. relations and key-value pairs.

One interesting feature of Semantic MediaWiki is called "Concepts" which are essentially "computed tags." They can be used in place of Categories in most places, but while Categories are set by editors on a piece of content, Concepts are defined by a query against Categories or other properties. This can help bridge gaps between different types of tags that represent different ways of thinking about the content.

A lot of the items described are problems in ontologies
Yeah. A tag is a predicate. Sub-tags are implication (male author => author). Tag aliases are equivalence (implication in both directions).
isn't it super-tags that are implication? A male author (sub-tag) implies it's an author (super-tag). But an author does not necessarily imply it is a male author.
My similar issue is with names in source code.

Fuzzy matching names and interrogating the contributor about the changes being checked in. Questions to ask the contributor, are the names similar to any of these other names? Is there an opportunity to use the same name or are they different concepts?

Code grows and grows and becomes harder to grep if inconsistently naming things.

This reminds me of a talk from Clay Shirky about categorization and general ontology. It's interesting to read in hindsight, because it's from when recommendation algorithms were in their infancy.

Warning PDF: https://ia800203.us.archive.org/10/items/Ontology_is_Overrat...

> This is what we're starting to see with del.icio.us, with Flickr, with systems that are allowing for and aggregating tags. The signal benefit of these systems is that they don't recreate the structured, hierarchical categorization so often forced onto us by our physical systems. Instead, we're dealing with a significant break -- by letting users tag URLs and then aggregating those tags, we're going to be able to build alternate organizational systems, systems that, like the Web itself, do a better job of letting individuals create value for one another, often without realizing it.

Thank you for this link. I’ve been looking for a good discussion of the browse vs search argument and this is very, very good
I can't wait for the author of this thread to discover the AO3 tagging system, which is, frankly, a masterpiece that demonstrates how effective community management can lead to extremely good tagging and categorization, with very little miscategorization.

https://www.wired.com/story/archive-of-our-own-fans-better-t...

https://archiveofourown.org/faq/tags

> The only system I know that does that is the fanfiction site AO3, where teams of volunteers manually create aliases from, say, "snarry" to "Harry/Snape"

They seem aware already.

its literally the third tweet in his thread
The AO3 tagging system badly needs pruning. I hesitate to make examples, as the specificity will serve as a "call out," but quite a lot of authors throw in single-use, digressive tags as some kind of commentary on their own work. Huge meandering swaths of crap tags, and the people who make them ought to have their permissions to create tags revoked.
I kind of disagree with this. Tags are dual use in AO3, specifically they serve as a way to find specific stories with specific thematic or plot elements, but they additionally serve as a free expression of the author because its the author who chooses which if any tags they want to use to describe their piece. When an author gets to decide the categories of a work, the categorization also becomes an expression.

Consider the flavor of "Dead Dove: Do Not Eat" tag, which serves both as an author's expression of warning the reader and also a category of fanfic that is expected to have transgressive elements. Just tagging, idk, "child endangerment" completely misses the point of "Dead Dove: Do Not Eat" comparatively.

I will paraphrase this to avoid a callout, but "no regenerating limbs those arms are toast sorry QA despises them" is not a useful tag. (This is a mild example, I've seen far worse)

First, it is a single-use tag. Tags are for categories, not solo entries. Solo entries explode the tagspace to no good end.

Second, that expression belongs in the summation of the work, or just about anywhere else. Tags are for other people to use to find similar works or for readers to look for things based on their interests. Metadata is not for artistic expression, unless you're one of those people who believes that artists ought to be able to choose their own Library of Congress call numbers and such, people who want to include "elephant" in the metadata despite the work having nothing to do with elephants.

I think you're missing the point that, in AO3 specifically, tags are not solely metadata. Tags are also artistic expression in the context of AO3. That's the thing. AO3 doesn't function like the Library of Congress, and there are no librarians that are independently assigning categories to fanfic. An author can choose to opt out of tags entirely, and people cannot put tags on other people's fanfic even if it's relevant and would benefit that work's findability. The simple mechanism of the author having sole control of what tags they want to apply to the work causes the act of tagging to also serve the purpose of artistic expression-- this results in spontaneous tags going from single-use to culturally known, such as "no beta we die like men", and therefore I think arguably useful but only in the context of AO3.
Then tags in AO3 are just more of the text and not much of a finding aid. You can't have both.
Tags end up being an excellent finding aid due to the strength of the community's tag linking, you see. So they serve both purposes.
"no regenerating limbs those arms are toast sorry QA despises them" just isn't useful if I want to locate a particular text, other than "I'm liable to get a Tumblr-stink off of this crap."

And your defense of this is really ... internal, as in, this all looks like a lot of in-jokes to an outsider who is new to AO3, or even new to a particular fandom. If someone doesn't know the slang, the in-joke reference, it's still unhelpful.

> "no regenerating limbs those arms are toast sorry QA despises them" just isn't useful if I want to locate a particular text, other than "I'm liable to get a Tumblr-stink off of this crap."

Yeah, but you're not looking for that tag, and that tag wouldn't affect your search in any way. That's the thing. You're approaching tags like they can only only ever be used one way, and yes they can be that, and also other things that don't affect your personal use. So when you search for your specific tag, all synonymous tags will also appear, and all superfluous tags don't affect your search. A one-off tag doesn't affect your ability to search for multi-use tags.

EDIT: Additionally, the fact the tag exists has also helpfully indicated to you that this is a fic you probably don't want to read because of the author's cultural hinting through their use of tags. You're proving my point here-- the one-off tag doesn't affect your ability to search for your specific fandom or tropes, but also it allows you to pick flavors of fanfic you want from that search because of your dislike of one-off tags.

You have it backward: I found the fic through other means entirely and eventually dropped it. When I encountered it again on AO3 (it was a cross-post), I said "Oh, look at those horrible tags." It was notable in the fact that I said "I need to keep this one handy the next time I end up having yet another conversation with someone about how much tagging sucks on AO3." Because this isn't the first time someone has brought it up to me.

They just crap up the results if I am searching for "regeneration" or "limbs." If something is used more than one way, yes, it does affect my personal use because it means "more stuff I have to filter through." When you search, what you do not want is extraneous results. That's the whole point of searching! And I guess my library experience is showing, but AO3 just reeks of amateur hour shenanigans. I predict that at some point there will be a movement to clean up that kind of junk.

Wait so, this tag you didn't like didn't even stop you from finding the fic? It didn't clog up your search at all because it wasn't even in your search when you found the fic you were looking for? What's the problem exactly? You're approaching this with a library lens but it's not a library! It was never even intended to be a library!

Additionally, it doesn't show up when you're searching for regeneration or limbs because it's a one-off tag and therefore isn't linked to the rest of the tag network. I suppose it would be a problem if you put it in the general search, but you'd also be catching anything with limb in the title, or limb in the author's name, too. I think this is coming from a place of multiple misunderstandings of how tags work from both a technical and a cultural standpoint.

And that's a problem, isn't it? I shouldn't have to be immersed in a culture to use the system. You've traded usability and user experience for ... a cultural in-joke. "Hi, this is AO3, and our tags aren't anything like anyone else's tags, but we're still gonna call them tags" is a problem. It's like if I made a search bar and it returned random results. It says search, but culturally, we give you random results. That's how we do it.

That's why we developed librarianship.

But it's not a problem because it doesn't affect your ability to search. One-off tags do not enter the tag search results. I'm super confused why this isn't obvious and intuitive to you..
> An author can choose to opt out of tags entirely, and people cannot put tags on other people's fanfic even if it's relevant and would benefit that work's findability

Curious about how this doesn't render the entire system near-useless? In my experience with other sites with user-generated content that allow tagging, this decision always makes the whole system way worse, because the OP alone is almost never going to be aware of all possible tags that are applicable to whatever it is they posted, and will instead just take the first 3-5 words that pop into their head and stick those in the tags field. The end result is a tagging system that barely works; you can search for a tag but you'll miss tons of stuff, and you can filter out a tag but you'll still see tons of stuff in that category. And if you ever find a hyper-specific tag you really enjoy it'll only have like 5 items in it even if there are hundreds or thousands it could be applicable to.

Don't get me wrong, the wiki-style approach of just letting anyone edit tags has its own issues, but it does at least result in tags on everything being at least mostly complete, and actually useful for finding what you want (or filtering out things you don't want).

> Curious about how this doesn't render the entire system near-useless? In my experience with other sites with user-generated content that allow tagging, this decision always makes the whole system way worse, because the OP alone is almost never going to be aware of all possible tags that are applicable to whatever it is they posted, and will instead just take the first 3-5 words that pop into their head and stick those in the tags field.

A few things makes this work brilliantly:

- authors are encouraged to tag as much as they want with whatever they want

- tags have an autocompletion to help authors select tags on keywords

- authors are prolific fanfic readers themselves and are therefore usually extremely familiar with the tag system

- manual tag linking means searching for one tag will also return results for all related or near-identical tags, a linking which has an extremely high success rate due to dedicated and extremely knowledgeable volunteers

This overall ends up being that authors use prolific tags, and reuse prolific tags from others, and ultimately search isn't strongly affected because the entire readerbase is hyper-knowledgeable. Check out the extremely specific fanfic-only "hanahaki disease" tag description in ao3 and you'll quickly see that any variety of related tags, with any level of hyerspecificity(some tags have neither "hanahaki" nor "disease"!), will appear searching for any of them, including hanahaki disease in other languages!: https://archiveofourown.org/tags/Hanahaki%20Disease

> Tags are also artistic expression in the context of AO3.

Seems to be similar on Tumblr.

They mention it 4th post in the thread.

I never heard of it though, what's so good about it?

I think tag aliases are fine, but in my opinion, tags should not have hierarchies. That is just opening the can of ontology worms, and most systems are ill-equipped to deal with ontologies...including ontological systems.

Tags are just dumb strings which label data. They are basically KeyValues, where the value is just always equal to True. We don't think of KVs as hierarchical unless they are explicitly a path string, and in that case, they are forced to be a plain tree with no cycles or diamonds.

Org mode approaches this by making hierarchies and inheritance optional. I personally like both, but I acknowledge (as was mentioned in the tweets) that hierarchies can get to be very convoluted if you don't work to maintain them sensibly.
What I like most about org mode tags is that regular expressions can be subtags (or "members of a group tag" in org mode lingo). So you can specify a hierarchy where the parents have children you don't know in advance.
Optional forests of hierarchy trees are where it's at. Essentially don't encode everything into one gigantic one.

Sometimes you know that users are going to tag `laptop` a bunch and want that to also drag in `personal computer` (but not all `PC`s are `laptop`s) or that `blue dress` is also a `dress` and don't want to hard code special cases.

That said, if you are going to do this, then you must have it controlled by an admin/moderator. Maybe allow for hierarchy request submissions but have it moderated. There is at least one public system where this just works to my knowledge and a bunch of self-hosted ones as well.

> They are basically KeyValues, where the value is just always equal to True

That would be a set of values :-)

Sure, but my point was there that it's really easy to use KVs as a backing store for tags, which you can implement anywhere and easily serialize. Sets, if you have to do something like transform it to JSON, you have a choice to make: dict:true, or list.
>"I think tag aliases are fine, but in my opinion, tags should not have hierarchies."

Many years ago I've developed a proprietary database for a media related product. It was a NoSQL Entity-Attribute-Value database where Attribute was basically a tag. Tags had no hierarchy but query language allowed to specify sequence of attributes like Genre, Artist, Album, Title. When said sequence was not empty the result set would be a tree where each level would correspond to an attribute position as defined in query.

I understand your pain, but want to make you aware that LINQ has become so powerful especially with lazy evaluation and expression trees that hierarchical views of tags is really basically simple and actually just one more method of visualizing data...
Not having tag hierarchies doesn't fix the difficulty of classification, it just handwaves it away. There will always need to be (super)tags that are collections of other tags, where it is a bug for an item that has a particular tag to not also have another, related tag. The question should be how you're going to handle that, not if you're going to handle it, or you'll end up with a lot of broken tags of dubious usefulness.

Tags are just dumb strings that label data, but tags are also data. If I can't label tag:"red" a tag:"colored" in your system, it's not great. It's not much better if I'm labeling things tag:"colored-red" because if I'm doing that and there's no central validation to add semantics to that relationship, I'm going to end up with tag:"red" things, tag:"colored" things, tag:"colored-red" things, and probably even tag:"color-red" and tag:"red-color" things.

edit: what's so bad about cycles when it comes to a tag being assigned another tag that has been assigned the original tag? It's just a mutual implication. There's nothing wrong to me with adding a single tag and seeing five more added automatically. It means that you're building a knowledge base.

This is just search with synonym analyzer / partial match. If you make the tag search dynamic, you’ll find the tags you’re looking for quickly.
> It means that you're building a knowledge base.

That's precisely the problem. You started with tags and now you are building a knowledge base. You wanted a banana and now you have a gorilla holding a banana and the whole jungle. If you want to build a knowledge base, use links/URIs/ontologies.

You'll find out the moment you add cycles the algorithms get way more intense. And then once you have stronger algos, you want more search power. Next thing you know you are bikeshedding about things like "apple" is both "fruit" and "tech company" so you need tags-of-tags etc. Just build a knowledge base if you need a knowledge base. Otherwise tags are just a way to do faceted search.

They aren't mutually exclusive, either.

OpenTelemetry, for example, has both tags and references.

Nothing you say is necessarily the case, and is dependent on implementation. Take "value is just always equal to true", well, no, not if your key is a predicate. "Color:red" is more powerful than "#red" or "red:true", and "color:[lookup-ID-for-red-concept]" is substantially more powerful than both.
Anyone have a suggestion for a tagging filesystem that is maintained? Or if not a filesystem, something that at least works? I still feel like this is the best way to organize personal photos and media, and while https://www.tagsistant.net/ is pretty good it hasn't been updated in 6 years and is fairly buggy.
MacOS has tags. Right click any file in finder, select "Tags..."

No idea if they are implemented at a filesystem level but there are various tools for finding things by tag

unix has tags, they are known as hardlinks.
You can misuse them as such (I've done it myself, albeit on Windows), but they're not really made-to-measure for that use case. E.g. deleting files that have been "tagged" that way becomes more cumbersome (because to the OS all hardlinks are created equal, so deleting the "primary" file doesn't automatically delete the tags, too), it's incompatible with any program that uses "atomic" files saves instead of modifying files in-place, the UI for viewing and editing "tags" is not really there, …
I just gave up and mimicked tags with symlinks and subfolders. ie "foo" is tagged "todo" if there's a symlink to it in "Tags/todo/".

It works surprisingly well, since I can manage it with standard shell scripting.

Interestingly, this is effectively a tag hierarchy (orthogonal to the content), which is also a DAG.

https://twitter.com/mikeybtags/status/1582509479806980096?s=...

I wonder what disadvantages such a tag hierarchy has?

I imagine enforcing the acyclicity is hard/effortful.

Using (inherently hierarchical) folders (with no symlinks for folders) enforces the acyclicity constraint, and avoids diamond issues, so that’s neat.

Edit: ok, wow I didn't even check the link before writing my suggestion but it's kinda freaky how similar they are. Even used a scifi movie as the example.

I have a horrible idea that I haven't actually tried out, and I don't know how many filesystems it would work on anyway, but hard links...

Create a directory that holds your files. Organise them however you like - some arbitrary subdirectory structure using dates, names etc.

Create another top-level directory called "Tags", and build a directory structure that supports your needs.

Write a stupid "tag" shell script and a shell tab-completion script for it that lets you tag any item in the "real" directory structure using tab completion on the original file name and the tag. When you hit the return key the script creates a hard link for the original file in the chosen tag directory.

Example: tag "files/movies/the matrix.mkv" "tags/movies/sci-fi"

Now you can browse 'tags/movies/sci-fi'.

No "real" coding skills needed. You reorganize your tag directories and files by moving them around, and if you've done your shell scripts properly it shouldn't care as long as the top-level directories don't change. Limits? On Linux an inode can have up to 65000 hard links so I don't think it'll be an issue.

The many problems I see are name clashes, directories not supported (by hard links), cross file system links not supported (by hard links) and file deletions (don't work as expected). The tag script could handle the former. For deletions, you could create a "delete" that gets the file inode and deletes tags first, using 'find $tagsdir -inum $inode -delete'

> The many problems […]

…, hard-links are incompatible with programs that attempt "atomic" file saves instead of rewriting a file in-place, …

> I can't find anything on how to design and implement anymore more than the barebones basics of a system.

All of this stuff (horse/horses etc) is extensively discussed, maybe look under "taxonomy" or "ontology".

Now, whether you want to use any of those solutions or not or find the discussion useful or not... if you aren't finding anything about it at all, you aren't looking in the right places.

(I learned about it in librarian school)

Can you link some resources about it then?
I could, but honestly I'd just be googling "taxonomy". But ok that's not entirely true, I know how to refine my search and recognize when something is what I'm thinking of, from some familiarity with the field.

(But if you want to look around, in addition to "taxonomy" and "ontology", other good terms are "information architecture" and "controlled vocabulary").

These are not things I have vetted, this is literally just me googling and taking a quick skim...

https://blog.optimalworkshop.com/how-to-develop-a-taxonomy-f...

https://www.uxbooth.com/articles/introduction-to-taxonomies/

https://www.nngroup.com/articles/taxonomy-101/

http://accidental-taxonomist.blogspot.com/2020/11/what-it-th...

Or how about some textbooks:

https://narrowgaugebooks.indielite.org/book/9781627055802

https://www.hedden-information.com/accidental-taxonomist/

This is a good basic overview, goes beyond tagging/indexing, was the textbook in LIS501 Information Organization and Access at UIUC-GSLIS (now the iSchool at Illinois) in 2006:

https://mitpress.mit.edu/9780262512619/the-intellectual-foun...

Controlled vocab standards:

https://www.niso.org/publications/ansiniso-z3919-2005-r2010

(this one is deprecated in favor the one that follows)

https://www.niso.org/schemas/iso25964

https://www.w3.org/2004/02/skos/

The book we used in my thesaurus construction class at UIUC:

https://www.alastore.ala.org/content/essential-thesaurus-con...

My favorite intro to semantic modeling with RDF/OWL/SPARQL:

http://workingontologist.org/

Topic Maps are dead but i still have a soft spot for them:

https://www.isotopicmaps.org/

I also recommend Heather Hedden, linked in jrockhind's post.

(I learned about it in librarian school)

As the rest of us learned during the first tagging boom, the librarian is the natural apex predator of tagging.

I've been a librarian for more than 15 years and I can only speak from personal experience when I say that I am the apex predator of nothing. Every once and a while I will get it in my head to systematize my personal knowledge base with a controlled vocabulary and ontology and I just fall on my face. I really want it for some twisted reason, though.

Turns out LC subject headings -- for all their failures -- are pretty good.

> controlled vocabulary

Are you using English? English words can almost mean whatever you want them to. Perhaps design your own language that removes ambiguity. Probably requires a knowledge of philosophy to distinguish between say concrete and abstract, good luck.

Maybe start with correcting the ontology of: https://cuberule.com/ (which takes a geometric approach to defining food types).

Also perhaps decide whether you want to work top-down like a directory tree (or Dewey Decimal?): resulting in standard book classification issues. Or bottom up: resulting in conflicts and discrepancies - https://news.ycombinator.com/item?id=33254025

> Perhaps design your own language that removes ambiguity.

That's what a controlled vocabulary is. It's essentially a set of tags which are clearly defined. So instead of #horses being defined purely by the word "horses," it has an attached definition along the lines of, "The category 'horses' includes equine biology, sports relating to horses, the cultural history of horses, and all other topics involving real horses. Metaphorical horses such as saw horses are not included." Tags like #horse would be redirected to #horses, since there is only one canonical horse tag in the vocabulary.

I've learned to accept that my personal life and knowledge management is going to be a mess. (I'm also a librarian). I just don't want to do more organizing when I get home. I do also feel the temptation to do it 'right' once in a while, but it never sticks. I'd wager a lot of it has to do with the fact that managing an ontology completely on your own just sucks.
Library of Congress classifications and subject headings (those are two separate things, for those unfamiliar) are not perfect, but they're pretty good, apply to a huge copus, and to my mind most importantly, have evolved over a bit over a century under numerous circumstances, including an absolute explosion of published materials, substantial changes to understanding organisation and classification of knowledge, and an awareness of the social and cultural aspects of these (as well as the institutional bias that's often embodied within them). That is, they have evolved a change management process.

The Classifications are substantively hierarchical, though that's really an outgrowth of the fact that they're used to locate books within physical shelf space, in which a record must occupy an address (physical space), and given that the Library's settled on subject classification as its storage and retrieval basis, this maps what's effectively a folded linear structure (shelf space) onto the multidimensional subject classification. It's not ideal, but it's workable. And many of the quirks of the LoCCS come out of the fact that it addresses both the composition (comprehensive, but still US-centred) and process (shelving, search, and retrieval) of the Library.

The Subject Headings are not hierarchical, though they're structured. In particular, they're relational, with numerous subject headings referring to others. There's some parent-child relations (though the top level hierarchy is broad), numerous retired classifications, and many "use that instead of this" notes.

(I've made ... some progress ... at a structured parsing of the subject headings, though that work's been stranded Because Reasons.)

The problem isn't knowing what the problem is (taxonomy and ontology), but how to implement it effectively.

I've seen enough of Hillel's posts over the years that I am fairly sure he is aware of taxonomy/ontology too.

To be fair to OP, the biggest hurdle in learning anything is knowing what questions to ask. When you don't have ontology as part of your vocabulary it's hard to find literature regarding, say, "comparison of ontologies for user-generated text content".

I suppose this flows back into library science, which is all about systematizing where to look for answers to questions, but I'm always astonished to find that there's oceans of literature and research in questions I haven't even thought to ask.

I think OP is referring to finding software-engineering related design discussions surrounding tagging systems, but yes, I’m sure there is a great depth of ontology material and librarian knowledge that could add to software system designs.
Librarians are the people that we (technologists) should learn from. But all I see is programmers trying to invent things from first principles.
Eh, as the librarian who wrote the post you're replying to... I am actually ambivalent.

I wish librarianship as a field and industry were more what I'd fantasize it should/could be, but it's not so much.

How so?

What's missing / what would you remove and/or change?

I've been dabbling in personal knowledge bases for a long time now. I remember the when I discovered tags -- thought it was the best thing ever. The first good implementation in the wild (for me) was del.icio.us. Eventually I ran into all the problems that the linked thread describes. "Movie" or "movies"? "Book" or "books"?

In any case, I still think flat tag lists are better than a directory tree structure ("Content/Movies" vs "movies, movie, entertainment, science fiction, space travel, aliens").

A recent innovation that I'm enjoying is backlinks. I believe roam research was the first major player that showed you related entries via the links that you included, even though a similar concept existed forever. Then you can generate clouds of relationships and find concepts visually [0].

0: https://noduslabs.com/cases/visualize-connections-notes-roam...

> backlinks

> recent innovation

Ted Nelson is rolling in his Xanadu

100% there was prior art to this, I was thinking zettelkasten. Didn't know about Xanadu though!
Look into AI systems from the 1960's and you will find Semantic Networks. If you just need categories you can go with taxonomies and folksonomies. If you want to (over?) formalize and describe mainly non-agentive structure you look at ontologies.
I am too but I've given up. I've collected a lot data over the years and spent a lot of time trying to organize it so I can find relevant connections. It's just too time consuming. I've decided discerning relationships in unstructured data is where I want to focus.
I'm largely the same with the exception of music. I don't use online music services, and have had the same (growing) collection of mp3/m4a/flac files since the late 90s. I have a few custom tag fields that I maintain in an ad-hoc fashion. First, I'll add new music to an inbox and give it a few listens. If anything jumps out at me I'll give it a rating, and maybe add some tags under 'mood' and 'instruments'. And that's about it. It doesn't have to be perfect and it doesn't require a lot of time. Maybe I'll spend 30 minutes a week going through my recent play history tagging specific tracks that I like.

It's nice to be able to put on "uplifting saxophone" or "dark dramatic piano"

I’ve written a tagging system from scratch for an existing system and it was one of the most interesting things I’ve worked out. I had total control over how it was implemented and I think I came up with a really nice, minimalist, scalable way to tag things, and to search them.
Care to elaborate? I'm also working on a categorization/tagging system - albeit a simple one - and I find myself in a struggle to keep it accessible enough to use on one hand and advanced enough to actually add value on the other hand.
If you share a brief overview of it, you might receive some good critique of it here (surfacing potential pitfalls others have run into with similar systems). Besides, it might be helpful to others.
The hierarchical nature of the information he's talking about really reminds me of the ontologies and terminologies that are used in healthcare to organize medical information. E.g. Ibuprofen 10mg Tab < Ibuprofen < NSAID < ... < Therapeutic Chemical.

This is a field that I'm only tertiary familiar with but it's a fascinating discipline trying to group, and manage all of the different categories of healthcare data. You can use the RxNav tool to look at the RxNorm terminology which is only 1 of many terminology systems.

https://mor.nlm.nih.gov/RxNav/search?searchBy=String&searchT...

One example of an unexpectedly rich and deep tagging ontology is the Danbooru "Anime" image board [NSFW] https://danbooru.donmai.us/
I know this is not reddit. But why do you know even know this link and its tagging system...
I'm not scared away by things that might offend the puritanically inclined and I'm interested in ontologies and this is a fascinating one.

There was some drama about someone training a Stable-Diffusion-alike by ripping their dataset that brought it to my attention.

Danbooru is one of the most popular anime image board.

Anyone who's into Anime (not just for hentai) probably knows.

There is a safe-for-work, or at least safer-for-work version of the site: https://safebooru.donmai.us/

(It is of course based on the tagging system: every post is tagged by its "safeness" level.)

Yeah, danbooru or similar image boards basically have all the things talked in this tweet thread.

They have tag aliases, meta-tags and so-called "tag implications".

The last one is basically sub-tags but with more flexibility and dead simple to implement: if A implicates B, then tagging an image with A will automatically tag it with B. So you can tag "American Male Novelist", and then the system will automatically add "American", "Male", "Novelist", "Writer", etc. (after such implications were added).

It much easier than Wikipedia's categories, but Wikipedia's way is of course intentional because categories is meant to have a stronger hierarchy than mere tags.

How much content they've actually put in their tagging system is just as interesting as how the tagging system works.
And the content itself, I'd say.

But yeah, I've always been impressed by how detailed and specific their tags were. That's A LOT of work! The power of porn, I guess. And as an added bonus, those tags now power AIs able to generate custom hentai on demand!

Unfortunately, since their tags are so abundant, most of them (mainly the "too specific" ones) are far from exhaustive/complete in term of being actually used. And things like hair colors are extremely subjective so you're not sure if an image is going to be tagged as brown_hair or red_hair.

If you want to find some images by tags, you better stick with more generic ones.

This seems like one of those Eternal Problems that people, whether librarians, programmers, or hobbyists, stumble across, think they'll make headway in, then discover that they've really managed to progress just a few feet across a vast and hostile surface of landmines, pitfalls, and lures. Each "obvious" step (I'll have parent relations to define a context!) is only yet another bargain with the Devil, who laughs at your precautions.
I guess if you're really focused on it. I built a content tagging system for an old employer that would attempt to guess context based on keywords and associations but give the writer of the content the final say in what's actually being tagged.

Sure, I could have spent a thousand hours refining it, but the improvement would have been marginal and it still would need human interaction.

Was it used for content related to that particular business? I think as long as you have relatively limited variety, you can make something that works well enough.
Similarly, I think if you have a limited number of people doing the classification, you can also make a good shot at it.
The content was a publisher. Writers would submit articles, the system would automatically tag them, and the system was good enough that usually the writer or editor would weed out a false positive or two, which is about the same result as all these machine learning use cases with thousands of hours of dev time.

IIRC, terms were weighted, so that some of them needed to have more instances in the articles than others in order to be included in the final tag results.

Locations were one-offs, but specific topical items required more mentions because of false positives. And then there were things we called branch-offs. Branch-off tags occurred when a topic was mentioned enough to be a tag but there's another name that some segment of the population would know it by.

For example, the fish known as the white crappie are known in Louisiana as sac-au-lait, but people would also spell the word sacalait or sac-a-lait. So when we would get an article from an author in the Carolinas, they have no familiarity with a term that is the dominant one in Louisiana, but the software would add the tag anyway, which also exposed it to our site search.

Tagging’s pain is that it’s a problem that is easy enough where you can come up with plenty of ideas without prior knowledge. Its bane is that it is, in this sense, similar to bikeshedding. Everyone can have an opinion about it; Fortunately, it’s only appealing to people who enjoy exploring problems.
A few months ago I worked on some proof-of-concept code for searching tagged data: https://github.com/aaviator42/Cha

I now work full-time in a role where part of my duties is designing a content tagging system and its search functionalities. It's very interesting and fun! Lots of puzzles.

How do you weigh different tags? How do you do fuzzy searching ('city' should match with plural ('cities'), misspellings ('citys'), etc)?

How do you program the system so that 'hotdog' is not matched with 'hot' and 'dog'? What about synonyms? What about regional terminology and synonym tables?

Then there's one-to-one and one-to-many and many-to-one mapping.

As a side project I'm also working on a beta public search engine that I'll launch on HN sometime in the next year or so, where I'm having similar puzzles.

> How do you program the system so that 'hotdog' is not matched with 'hot' and 'dog'?

That sounds like a very good use case for word embeddings.

How do you deal with "hotdog" possibly being a noun (several meanings), or proper noun (several meanings), or verb, or interjection?
e621 frequently has to deal with characters with the same name, or an artist with the same name as a character. they just make ambiguous tags have a special syntax. so if bob was an artist, but also had a character named bob, it would just be bob_(bob) for the character and bob_(artist) for the artist. and if someone tried to tag something as just “bob” they would be told to be more specific. searching for all bobs can be done with bob_(*).

so hotdog could have hotdog_(food), hotdog_(interjection), and hot dogs (the animal) would be two tags: hot and dog.

it’s not the cleanest solution, but it works well enough.

Seems to me like a lot of these are solved by a dedicated search engine?

I see it in this business all the time how people try to reinvent the wheel and end up writing their own search engine, thinking it's just another small in-house project, but they quickly run into the difficult problems like, well, these.

Nice. Your Cha project has the beginnings of a search engine with cosine similarity, even though I don't think you intend to take it there. Tagged items are like a precomputed inverted index, and the matching is a search on that index.
Yep! I'm not planning on working further on Cha at the moment, but I've learnt a lot since I initially wrote the PoC code and that is probably how I'd go about it.
I am endlessly fascinated by how twitter has now become a dumping ground for complex topics that are difficult to read and follow. But what happened to the old blogs?
It's lower effort to make a stream of consciousness post one sentence at a time, and as a bonus, there's a built in audience / discovery network where they're posting.
Lower effort for whom? Back when I were a lad, we were told to write so that our readers did not have to work to understand us. The point of writing is to be understood. Old man yells at cloud.
Lower effort to the writer, obviously.

The point of posting on Twitter is not to be understood, it's to be retweeted.

I think it's helpful to keep in mind that with most of examples that get shared around, the choice for the author was not a string of tweets vs blog post, but rather a string of tweets vs not sharing at all.
How does one go back and edit a stream of consciousness like that into an actual coherent thought later though?

I was just having a conversation similar to this where it was explained "this is just how people my age do things". While attempting to avoid boomer/millennial tropes, this does make me wonder how much different schooling is now vs then (hoping to avoid those memes too).

I was always getting in trouble for just saying whatever came to mind vs slowing down to think if it really needed to be said or more specifically how it was said.

I have a really high standard for my blog posts. They go through several rounds of rewrites, with feedback from friends, before I'm happy with them. That plus the length (median ~2000 words) means that most of my blog posts take weeks or months to write. I can hammer out a tweetstorm in 20 minutes.

(Also, tweets are a fun format! I want each tweet to be a complete idea, which is hard when you have only 280 characters.)

(comment deleted)
Nothing has happened to them. I have a few hundred distinct bookmarked blogs, if not over a thousand, and obviously my bookmark collection is a tiny fraction of what actually exists. They're still there.
"Advice: don't let the tag predicates refer to other tags"

But then how would I search by the tag of all tags that do not tag themselves???

there's a massive difference between tagging-for-self-recall and tagging-for-other-recall. when i invented tagging the first was paramount, but the latter has become dominant and has very different design considerations

one interesting note: you can infer a bunch of hierarchical information since people frequently tag from broader to more specific, topicwise.

some things can be tagged by multiple people and you can thus infer synonyms as well. this can thus be fixed in search.

"When I invited tagging" is such a flex. But creating delicious gives you some credible claims there.
I don't get to use it much these days
Content tagging in online systems has existed since at least the 1970s, with the earliest example I can think of being MEDLINE https://en.wikipedia.org/wiki/MEDLINE
metadata is not is tagging. keywords are not tagging.
Right, MEDLINE's "tagging" system is MeSH, which is a large controlled vocabulary. MEDLINE does contain bibliographic data + journal keywords, but its real value add is MeSH, which is used for search, related publication identification, etc. in PubMed.

https://en.wikipedia.org/wiki/Medical_Subject_Headings

In my app, users apply a set of tags to a note, but then the app automatically creates hierarchical associations in a tree. There are an exponential number of associations between tags (At one point design was failing because it was trying to prebuild 100k+ GUI items for these cross-referenced tags) so I had to virtualize the intersection of tags at the exact moment a user expands a tree item.

You cannot plan what tag search will lead you back to the data you want, so every node in the graph must be bidirectional.

We spent a lot of time building tagging systems to organize technology skills on https://www.moonlightwork.com.

The coolest part was training a collaborative filter on the tags. So, when you add "Django" as a skill, it could recommend "Python" as a related skill. This made for some refined user experiences.

Getting typeahead search right took a lot of refinement. Here is some of the logic we ended up implementing over time:

1. Exact matches get prioritized first (e.g. "Go")

2. Abbreviations support (e.g., "AWS" for "Amazon web services" or "ROR" for "Ruby on Rails")

3. Name that start with query should go before non-leading matches (e.g., "Ru" should return "ruby" before "task runner")

4. We tracked an "Aliases" column for each tag to enhance search. So, "golang" was an alias for "go".

My (Chomskyish)hierarchy of tag systems goes something like.

tagged data

key=value tagged data

hierarchically tagged data (we just found the the unix filesystem!)

hierarchical key = value tagged data (oh damn, it's ldap, we dug too deep.)