Skip to main content

Latest PyPI Version License Supported Python Versions Format

Travis Codecov Readthedocs stable Readthedocs latest

Concepts is a simple Python implementation of Formal Concept Analysis (FCA).

FCA provides a mathematical model for describing a set of objects (e.g. King Arthur, Sir Robin, and the holy grail) with a set of properties (e.g. human, knight, king, and mysterious) which each of the objects either has or not. A table called formal context defines which objects have a given property and vice versa which properties a given object has.

Installation

This package runs under Python 2.7 and 3.5+, use pip to install:

$ pip install concepts

This will also install the bitsets and graphviz packages from PyPI as required dependencies.

Rendering lattice graphs depends on the Graphviz software. Make sure its dot executable is on your systems’ path.

Quickstart

Create a formal context defining which object has which property, e.g. from a simple ASCII-art style cross-table with object rows and property columns (alternatively load a CXT or CSV file):

>>> from concepts import Context

>>> c = Context.fromstring('''
...            |human|knight|king |mysterious|
... King Arthur|  X  |  X   |  X  |          |
... Sir Robin  |  X  |  X   |     |          |
... holy grail |     |      |     |     X    |
... ''')
>>> c  # doctest: +ELLIPSIS
<Context object mapping 3 objects to 4 properties [dae7402a] at 0x...>

Query common properties of objects or common objects of properties (derivation):

>>> c.intension(['King Arthur', 'Sir Robin'])
('human', 'knight')

>>> c.extension(['knight', 'mysterious'])
()

Get the closest matching objects-properties pair of objects or properties (formal concepts):

>>> c['Sir Robin', 'holy grail']
(('King Arthur', 'Sir Robin', 'holy grail'), ())

>>> c['king',]
(('King Arthur',), ('human', 'knight', 'king'))

Iterate over the concept lattice of all objects-properties pairs:

>>> for extent, intent in c.lattice:
...     print('%r %r' % (extent, intent))
() ('human', 'knight', 'king', 'mysterious')
('King Arthur',) ('human', 'knight', 'king')
('holy grail',) ('mysterious',)
('King Arthur', 'Sir Robin') ('human', 'knight')
('King Arthur', 'Sir Robin', 'holy grail') ()

Make a Graphviz visualization of the lattice (use .graphviz(view=True) to directly render it and display the resulting PDF):

>>> c.lattice.graphviz()  # doctest: +ELLIPSIS
<graphviz.dot.Digraph object at 0x...>
https://raw.github.com/xflr6/concepts/master/docs/holy-grail.png

Further reading

The generation of the concept lattice is based on the algorithm from C. Lindig. Fast Concept Analysis. In Gerhard Stumme, editors, Working with Conceptual Structures - Contributions to ICCS 2000, Shaker Verlag, Aachen, Germany, 2000.

The included example CXT files are taken from Uta Priss’ FCA homepage

See also

The implementation is based on these Python packages:

  • bitsets – Ordered subsets over a predefined domain

  • graphviz – Simple Python interface for Graphviz

The following package is build on top of concepts:

  • features – Feature set algebra for linguistics

If you want to apply FCA to bigger data sets, you might want to consider other implementations based on more sophisticated algorithms like In-Close or Fcbo.

License

Concepts is distributed under the MIT license.

Release files for concepts 0.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for concepts 0.9.2
File Size Uploaded
concepts-0.9.2.zip 240.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for concepts 0.9.2
File Interpreter ABI Platform
concepts-0.9.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 271.8 kB

Release files / concepts-0.9.2.zip

Download URL concepts-0.9.2.zip
Size 240.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8bbfa9ffdf89cc6e13c79a902474086797500b31d043604aa1d63bfe5faada2c
BLAKE2b-256 checksum
How to use checksums
3110c6324c005e0eecacc806f142f3e4a64c42edebe879e3842d2a19be7033b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.2

Release files / concepts-0.9.2-py2.py3-none-any.whl

Download URL concepts-0.9.2-py2.py3-none-any.whl
Size 31.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
4acfb679124f9c58216febf9345c4dbd682f93d8e48f43ce35070c9a8e78db2d
BLAKE2b-256 checksum
How to use checksums
3cde1a2bf3f0f0da48d9e9cc746e550fd7169507fba205184b1af7e940163623
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.2

Release history Release notifications | RSS feed

This release

0.9.2 This release

2 release files

0.9.1

2 release files

0.9

2 release files

0.8.1

2 release files

0.8

2 release files

0.7.14

2 release files

0.7.13

2 release files

0.7.12

2 release files

0.7.11

2 release files

0.7.10

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

1 release file

0.7.1

1 release file

0.7

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page