Methodology
Overview
To classify the 2500 nicknamed fighters, I used Claude Code to provide an initial draft, but many iterations and rounds of human review and intervention were required.
I first used a main script which would start claude code, and use it to divide my list of ~2500 nicknames into the main categories you see. After that, I had another script which would take every nickname with a particular category (physical characteristics, provenance, etc.) and put batches of these into claude code to determine the subcategories. In retrospect, this would have been a perfect use case for dynamic workflows: since I could have used a separate agent for each subcategory, and have these run concurrently instead of sequentially. The data I used came from this github repo, which scraped it from UFCStats.com
Once Claude calculated the categories and subcategories and put them in a JSON file, I could use that as a data store for the majority of the subcategories pages. I used a couple of other scripts following a similar process (batched input to Claude) in order to label different nicknames as puns, divide them into different languages, and provide translations if necessary.
Edge cases and categorization
The biggest recurring question was whether a nickname should be classified by the literal meaning of a word, or its connotations. For example, take Derrick Lewis's nickname: "The Black Beast". Obviously this has "Black" which is a color, but it also uses the term "Beast". Now... how do we classify beast? Beast is clearly an animal (and gets that category), but there are also many other connotations beyond the literal. Does Beast also belong in the physical traits category, since it has connotations of size? What about in personality, since it implies viciousness and ferocity, like a wild animal? It could also have demonic or supernatural meanings (the mark of the beast), etc. This was a big consideration for this project because I allowed each nickname to have multiple categories, so it's not like I could just pick the strongest category - I had to consider whether each one of them would be viable or not.
This problem was present in many nicknames. "Assassin" is clearly in the professions/roles category, but should it also be in the weapons + destruction category? Should nicknames with "Golden" be a part of precious metals, and also in the color category? Should Ironman be a part of iron/steel due to the inclusion of iron in the name (even though it's not literal), a part of namesakes (named after the superhero), and a part of personality (referring to a person's toughness)?
To (imperfectly) solve this issue, I settled on a policy of parsimony and literalness. If a word only had connotations of a particular category, I would likely not include it. Although "beast" may have connotations of size, strength, and personality, the literal meaning at the end of the day is an animal, so it would solely belong in the "animals" category. If, however, there is another word in the nickname that pertained to a different category, I would add that category as well. So for example, "Black Beast" would have animals + color, "Big Beast" would have animals + size, "Crazy Beast" would have animals + personality, etc.
This meant I had to lay out clear instructions for the LLM, and make a lot of exceptions or handle edge cases myself. For a lot of words, it might be ambiguous what is the primary, literal definition and what is a connotation. I had to explicitly define in the prompt that a term like "gentleman" should refer principally to the personality side of the fighter, and NOT treat gentleman like a royal title such as "king" or "prince" that could land it in the professions category.
My exact prompts are available in the Github repo.