使用Python进行形式概念分析
项目描述
Concepts是形式概念分析(FCA)的一个简单Python实现。
FCA 提供了一个数学模型来描述一组具有一系列属性的对象(例如,亚瑟王、罗宾爵士和圣杯)及其属性(例如,人类、骑士、国王和神秘)。一个称为“形式上下文”的表格定义了哪些对象具有特定的属性,反之亦然。
链接
安装
此软件包在 Python 2.7 和 3.5+ 下运行,使用 pip 进行安装
$ pip install concepts
这将还安装所需的依赖项 bitsets 和 graphviz 软件包。
渲染格状图需要 Graphviz 软件。确保其 dot 可执行文件在您的系统路径上。
快速入门
创建一个定义哪些对象具有哪些属性的 形式上下文,例如,从简单的 ASCII-art 风格交叉表,其中包含 对象 行和 属性 列(或者加载 CXT 或 CSV 文件)
>>> 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...>
查询对象或属性的 共同属性 或 共同对象(推导)
>>> c.intension(['King Arthur', 'Sir Robin'])
('human', 'knight')
>>> c.extension(['knight', 'mysterious'])
()
获取对象或属性的最近匹配的 对象-属性对(形式概念)
>>> c['Sir Robin', 'holy grail']
(('King Arthur', 'Sir Robin', 'holy grail'), ())
>>> c['king',]
(('King Arthur',), ('human', 'knight', 'king'))
遍历所有对象-属性对的 概念格
>>> 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') ()
制作格状的 Graphviz 可视化(使用 .graphviz(view=True) 直接渲染并显示结果 PDF)
>>> c.lattice.graphviz() # doctest: +ELLIPSIS
<graphviz.dot.Digraph object at 0x...>
进一步阅读
概念格的生成基于 C. Lindig 的算法。 快速概念分析。在 Gerhard Stumme 编著的《使用概念结构工作 - ICCS 2000 贡献》中,Shaker Verlag,德国亚琛,2000 年。
包含的示例 CXT 文件取自 Uta Priss 的 FCA 主页
另请参阅
该实现基于以下 Python 软件包
以下软件包基于 concepts 构建
features - 语言学特征集代数
许可证
Concepts 在 MIT 许可证 下分发。
项目详情
下载文件
下载适用于您平台的应用程序文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。
源代码分发
concepts-0.9.2.zip (240.5 kB 查看哈希值)
构建分发
concepts-0.9.2-py2.py3-none-any.whl (31.4 kB 查看哈希值)