Skip to content

Kan133/logic-benchmark-maker

Repository files navigation

Logic Benchmark Maker

逻辑公式到自然语言基准数据集生成器,用于评估大语言模型(LLM)的逻辑推理能力。

功能特性

核心功能

  • 逻辑公式解析 - 支持命题逻辑公式解析,运算符包括:

    • & / - 合取(AND)
    • | / - 析取(OR)
    • -> / - 蕴含(IMPLIES)
    • <-> / - 双条件(IFF)
    • ~ / ¬ - 否定(NOT)
  • AST 可视化 - 将解析后的逻辑公式以交互式树形结构展示

  • 真值表生成 - 自动生成公式的完整真值表,支持逻辑等价性验证

  • 自然语言生成 - 通过 LLM API(OpenAI / Anthropic)将逻辑公式转换为自然语言描述

高级特性

  • 三维语境矩阵 - 通过「领域 × 关系 × 语气」的组合确保生成样本的多样性,避免单一语境下的模式重复

  • 语义验证 - 使用真值表比较等方法验证生成的自然语言是否与原始逻辑公式保持语义等价

  • 鲁棒性增强(可选)- 对生成的自然语言进行多种变换以增强数据集多样性:

    • 概念替换:同义词替换,保持逻辑结构不变
    • 句式冗余:插入不改变真值条件的修饰成分
    • 语序重组:在保持逻辑等价的前提下调整语序
    • 噪声注入:插入无关但不改变真值条件的噪声信息
  • 工作流管理 - 支持批量生成任务的暂停、恢复、取消和断点续传

  • 本地数据持久化 - 使用 IndexedDB 存储数据集和配置,数据保存在浏览器本地

技术栈

  • 前端框架: React 18 + TypeScript 5
  • 构建工具: Vite 5
  • 状态管理: Zustand 4
  • 样式: Tailwind CSS + CSS Variables
  • 图标: Lucide React
  • 存储: IndexedDB

项目结构

src/
├── components/          # UI 组件
│   ├── ui/             # 基础 UI 组件(Button, Card, Input 等)
│   └── visualization/  # 可视化组件(AST 树、真值表)
├── core/               # 核心逻辑模块
│   ├── ast/            # AST 工具函数
│   ├── parser/         # 词法/语法分析器
│   ├── llm/            # LLM Provider(OpenAI/Anthropic)
│   ├── transformer/    # 语义转换器(自然语言生成)
│   ├── validator/      # 验证器(真值表验证)
│   ├── robustness/     # 鲁棒性增强
│   ├── storage/        # IndexedDB 存储
│   └── types/          # 类型定义
├── pages/              # 页面组件
├── services/           # 业务服务(工作流、生成服务)
├── stores/             # Zustand 状态管理
└── utils/              # 工具函数

开发环境

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 运行测试
npm test

# 构建生产版本
npm run build

# 预览生产构建
npm run preview

使用说明

1. 公式解析

在首页输入逻辑公式,点击「解析」按钮:

  • 支持的变量名格式:[a-z][0-9]*(如 p, q, r, a1, b2)
  • 支持括号分组:((p -> q) & (q -> r)) -> (p -> r)

2. 生成自然语言数据集

  1. 进入「生成」页面
  2. 输入多个逻辑公式(每行一个)
  3. 配置 LLM API 密钥和模型参数
  4. 可选:启用三维语境矩阵以获得更丰富的语境变化
  5. 点击「开始生成」

3. 配置 LLM

支持以下 LLM Provider:

  • OpenAI: GPT-4, GPT-3.5-turbo 等
  • Anthropic: Claude 3 系列(Haiku/Sonnet/Opus)
  • 自定义: 支持自定义 API 端点(兼容 OpenAI API 格式)

在「设置」页面配置 API 密钥和模型参数。

4. 鲁棒性测试

在「鲁棒性」页面可以对已生成的数据集进行鲁棒性增强:

  • 选择要测试的数据集
  • 配置变换类型和参数
  • 查看变换结果和有效性验证

5. 数据集管理

  • 数据集以 JSON 格式存储在浏览器本地(IndexedDB)
  • 支持导出为 JSON 文件
  • 支持从 JSON 文件导入
  • 支持数据集的重命名、删除

数据格式

生成的基准数据集格式示例:

{
  "id": "dataset-xxx",
  "name": "蕴含推理数据集",
  "entries": [
    {
      "id": "entry-xxx",
      "originalFormula": "p -> q",
      "ast": { /* AST 节点 */ },
      "variableMapping": { "p": "下雨", "q": "地湿" },
      "naturalLanguageVariants": [
        {
          "id": "variant-xxx",
          "text": "如果下雨,那么地就会湿",
          "validationResult": { "isValid": true, "confidenceScore": 0.95 }
        }
      ],
      "robustnessVariants": [ /* 鲁棒性变换变体 */ ],
      "metadata": {
        "createdAt": 1234567890,
        "generationDuration": 2500
      }
    }
  ],
  "statistics": { /* 统计信息 */ },
  "metadata": {
    "createdAt": 1234567890,
    "version": "1.3.0"
  }
}

浏览器兼容性

  • Chrome 90+
  • Firefox 90+
  • Safari 14+
  • Edge 90+

需要支持 IndexedDB 和 ES2020 的现代浏览器。

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors