Bounded formal concept analysis, concept lattices and attribute implication discovery in pure MoonBit
moon new consumer
cd consumer
moon add Zh666-lab/moonconcept@0.1.1import {
"Zh666-lab/moonconcept" @fca,
}fn main {
let labels = try {
let data = @fca.context_from_sets(
["phone", "tablet", "desktop"],
["touch", "portable", "keyboard"],
[[0, 1], [0, 1], [2]],
)
data.attribute_labels(data.closure([0]))
} catch {
_ => abort("invalid incidence data")
}
// 在这份数据中,touch 的闭包包含 touch 和 portable。
println(labels)
}| 功能 | 主要入口 |
|---|---|
| 具备数据所有权的上下文 | context、context_from_sets、objects、attributes、rows、has |
| Galois 导出与闭包 | intent、extent、closure、object_closure,名称与索引查找 |
| 概念枚举 | concept_for、valid_concept、next_intent、concepts、frequent_concepts |
| 概念格 | lattice、covers、leq、meet、join、上下界、区间、to_dot |
| Horn 蕴含推理 | implication、rule_system、closure、trace、entails、equivalent |
| 精确依赖发现 | canonical_basis、minimal_generators、generator_rules |
| 规则分析 | counterexamples、valid_implication、rule_metrics、filter_rules |
| 规则理论变换 | irredundant、reduce_premises、split_conclusions、with_rule |
| 上下文变换 | dual、project、不可变观测更新、clarify、横向合并 apposition / 纵向合并 subposition |
| 专家审阅 | exploration、next_question;通过一致性校验的不可变接受 / 反例拒绝操作 |
| 数据交换 | 严格二元 CXT、关联矩阵 CSV、带版本的类型化 JSON |
| 分析报告 | 概念 / 格 JSON、带反例的规则审计、推理 JSON,以及仅使用数字标签的 DOT |
moon run examples/features
moon run examples/roles
moon run examples/catalog| 操作 | 明确限制 |
|---|---|
| 上下文 | 最多 4096 对象、128 属性;名称唯一、非空,最多 4096 个 UTF-16 单元 |
| 文本解析 | 最多 32 Mi 个 UTF-16 单元;CSV 字段最多 4096;JSON 嵌套深度最多 16 |
| 概念枚举 | 默认最多 4096 个概念;调用方上限最多 65536;失败时不返回部分结果 |
| 实体化概念格 | 最多 256 个概念;cover 关系约简采用立方级算法 |
| 规则理论 | 最多 4096 条蕴含、128 属性;规则约简最多 512 条规则 |
| 规范蕴含基 | 最多 16 属性、65536 个子集候选;默认 100 万工作单元,最多 1000 万 |
| 最小生成元 | 目标最多含 16 属性;最多 65536 个候选,默认最多 4096 个结果 |
| 专家提问 | 最多 16 属性;执行完整但有界的子集扫描 |
moon info && moon fmt
moon fmt --check
moon check --deny-warn
moon test --deny-warn
moon build --deny-warn
python scripts/measure.py
# Bash/Linux:分别验证 wasm-gc / wasm / js / native。
bash scripts/verify.sh jsfn Clarification::expand_extent(self : Clarification, extent : Array[Int]) -> Array[Int] raise FcaErrorfn Clarification::expand_intent(self : Clarification, intent : Array[Int]) -> Array[Int] raise FcaErrorfn Context::canonical_basis(self : Context, candidate_limit? : Int, work_limit? : Int) -> RuleSystem raise FcaErrorfn Context::counterexample_labels(self : Context, rule : Implication) -> Array[String] raise FcaErrorfn Context::filter_rules(self : Context, rules : Array[Implication], min_support? : Double, min_confidence? : Double) -> Array[ScoredRule] raise FcaErrorfn Exploration::next_question(self : Exploration, candidate_limit? : Int) -> Implication? raise FcaErrorfn Exploration::reject(self : Exploration, question : Implication, object_name : String, attributes : Array[Int]) -> Exploration raise FcaErrorfn implication(premise : Array[Int], conclusion : Array[Int], dimension : Int) -> Implication raise FcaErrorInstall
Download zipBounded formal concept analysis, concept lattices and attribute implication discovery in pure MoonBit