Taxonomy and Categorization — Complete Guide
In this tutorial, you will learn about Taxonomy and Categorization. We cover key concepts, practical examples, and best practices to help you master this topic.
Taxonomy defines how content is categorized and classified. Learn controlled vocabularies, faceted classification, and designing categorization systems that match user mental models.
What You'll Learn
You will learn the difference between taxonomy and folksonomy, how to design controlled vocabularies, and how to apply faceted classification to documentation.
Why It Matters
Consistent categorization makes content predictable. Users learn your taxonomy and can navigate confidently. Inconsistent categorization confuses and frustrates.
Real-World Use
DodaTech uses a taxonomy with categories like programming-languages, security, web-development, and tools. Each category has consistent subcategories and tags.
flowchart LR A[Taxonomy] --> B[Controlled Vocabulary] A --> C[Faceted Classification] A --> D[Tags] B --> E[Preferred Terms] B --> F[Synonyms] C --> G[Category: Language] C --> H[Category: Difficulty] C --> I[Category: Topic] D --> J[User-Generated] D --> K[System-Generated] E:::current classDef current fill:#f90,color:#fff,stroke:#333,stroke-width:2px
Controlled Vocabulary
A controlled vocabulary is a predefined list of terms used for categorization.
# controlled-vocabulary.yaml
categories:
- id: programming-languages
label: Programming Languages
description: Tutorials about programming languages
synonyms: [languages, coding languages]
subcategories:
- python
- javascript
- go
- rust
- id: security
label: Security
description: Security and cybersecurity tutorials
synonyms: [cybersecurity, infosec]
subcategories:
- authentication
- encryption
- scanning
- monitoring
def validate_taxonomy(taxonomy, content):
errors = []
for page in content:
if page['category'] not in taxonomy:
errors.append(f"Unknown category: {page['category']}")
return errors
taxonomy = ['programming-languages', 'security']
pages = [
{'title': 'Python Basics', 'category': 'programming-languages'},
{'title': 'Network Security', 'category': 'networking'}, # error
]
print(validate_taxonomy(taxonomy, pages))
Expected output:
['Unknown category: networking']
Faceted Classification
Faceted classification uses multiple dimensions to categorize content.
| Facet | Values |
|---|---|
| Language | Python, JavaScript, Go, Rust |
| Difficulty | Beginner, Intermediate, Advanced |
| Content Type | Tutorial, Reference, How-To |
| Topic | Variables, Functions, Security, Deployment |
def filter_by_facets(pages, facets):
results = pages
for facet, value in facets.items():
results = [p for p in results if p.get(facet) == value]
return results
pages = [
{'title': 'Python Variables', 'language': 'python', 'difficulty': 'beginner'},
{'title': 'Python Decorators', 'language': 'python', 'difficulty': 'advanced'},
{'title': 'Go Concurrency', 'language': 'go', 'difficulty': 'advanced'},
]
filtered = filter_by_facets(pages, {'language': 'python', 'difficulty': 'advanced'})
for p in filtered:
print(p['title'])
Expected output:
Python Decorators
Taxonomy vs. Folksonomy
| Aspect | Taxonomy | Folksonomy |
|---|---|---|
| Who creates | Designers | Users |
| Consistency | High | Low |
| Scalability | Controlled | Open-ended |
| Example | Category tree | User tags |
| Best for | Navigation | Discovery |
Designing a Taxonomy
Steps
- Content inventory: List all content
- User research: Understand how users categorize
- Card sorting: Validate categories with users
- Draft taxonomy: Create category structure
- Test: Validate with tree testing
- Iterate: Refine based on feedback
def create_taxonomy(content_list, user_groups):
# Identify common themes
themes = set()
for item in content_list:
themes.add(item['theme'])
# Map to user group terminology
taxonomy = {}
for theme in themes:
taxonomy[theme] = {
'label': user_groups.get(theme, theme),
'children': []
}
return taxonomy
content = [{'theme': 'authentication'}, {'theme': 'encryption'}]
users = {'authentication': 'Login & Security', 'encryption': 'Data Protection'}
print(create_taxonomy(content, users))
Expected output:
{'authentication': {'label': 'Login & Security', 'children': []}, 'encryption': {'label': 'Data Protection', 'children': []}}
Common Mistakes
1. Too Many Categories
More than 7-10 top-level categories overwhelm users. Group related topics under broader categories.
2. Overlapping Categories
If content could fit in multiple categories, the taxonomy is ambiguous. Make categories mutually exclusive.
3. Using Internal Jargon
Naming categories after internal team names confuses users. Use terms they understand.
4. No Synonym Mapping
If users call it "authentication" but your category is "login," they may not find it. Map synonyms in search.
5. Static Taxonomy
Taxonomies should evolve as content grows. Review and update the taxonomy annually.
Practice Questions
1. What is the difference between taxonomy and folksonomy?
Taxonomy is a controlled system created by designers. Folksonomy is user-generated tagging with less consistency.
2. What is faceted classification?
Using multiple dimensions (language, difficulty, topic) to categorize content, allowing filtering along any dimension.
3. What is a controlled vocabulary?
A predefined list of terms used for categorization. It ensures consistency by limiting which terms can be used.
4. How many top-level categories should a taxonomy have?
7-10 maximum. More than that overwhelms users.
5. Challenge: Design a taxonomy for a documentation site with 50 pages. Define 5-7 top-level categories, create subcategories, and map 50 pages to the taxonomy.
FAQ
Mini Project
Design a taxonomy for a documentation site. Define 5-7 top-level categories with subcategories, create a controlled vocabulary with synonyms, and map 20 sample pages to the taxonomy.
What's Next
Now that you understand taxonomy, learn Hierarchy Structure for organizing pages. Then study Navigation Design.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro