Learning "good" concept DAGs from binary data by minimum description length — a probabilistic/information-theoretic reworking of Formal Concept Analysis.
Plain FCA maps a binary object×attribute context to a concept lattice, but it is not a probabilistic model: it creates a concept for every random coincidence, so the lattice explodes. This project builds instead the small DAG of concepts that best compresses the data: a concept exists only if it pays for its own description. Concepts can have multiple parents (unlike hierarchical clustering's trees) and are organized hierarchically (unlike flat topic models).
Status: design phase complete, prototype under construction.
- Read
CLAUDE.mdfor orientation and design commitments. - Read
docs/in numeric order for the full design:- background and goal
- model and codelength (the core)
- algorithm (greedy pair-merge constructor + search framework)
- batch vs online
- prototype spec (current build target)
- roadmap
pip install -e ".[test]"
pytest
python examples/run_planted.py