YG_TDGenerator - 数据元素问答生成工具
一款用于企业数据治理领域的问答训练数据生成工具。基于远光数据架构表(逻辑模型表、物理模型表、元素治理模板表)生成标准化的问答对,用于训练领域专用问答系统。
功能特点
- 三表合并:自动合并逻辑模型表、物理模型表、元素治理模板表
- 多种问答类型:支持字段属性查询、定义查询、模型关联查询
- 双版本输出:同时生成训练集和验证集(表达方式不同但语义相同)
- 一体化流程:CSV转换→JSON合并→随机抽取→QA生成,一条命令完成
目录结构
YG_TDGenerator/
├── csv2json.py # 主程序:数据处理一体化工具
├── qa_generator.py # QA问答对生成器
├── config.py # 配置文件
├── requirements.txt # Python依赖
├── Data/ # Excel源数据目录(可选)
├── Data_Export_CSV/ # CSV导出数据目录
├── Data_Export_Json/ # JSON中间数据目录
└── Data_QA_Outputs/ # QA生成结果目录
安装
pip install -r requirements.txt
依赖说明
pandas: 数据处理xlwings: Excel文件读取(可选,用于复杂Excel格式)openpyxl: Excel文件读取(pandas依赖)
使用方法
1. 准备数据
将以下三个CSV文件放入 Data_Export_CSV/ 目录:
远光数据架构逻辑模型表.csv远光数据架构物理模型表.csv远光数据架构元素治理模板表.csv
2. 数据处理流程
运行主程序执行完整的数据处理流程:
python csv2json.py
该命令会执行以下三个步骤:
- CSV/Excel转JSON:将源数据转换为JSON格式
- JSON合并:根据字段英文名合并三张表,生成
final.json - 随机抽取:从合并结果中随机抽取3000条记录,生成
selected.json
3. 生成问答对
python qa_generator.py
生成的文件位于 Data_QA_Outputs/ 目录:
| 文件 | 说明 |
|---|---|
selected_QA.json |
训练集问答对 |
selected_QA_验证集.json |
验证集问答对 |
QA生成报告.json |
训练集生成报告 |
QA生成报告_验证集.json |
验证集生成报告 |
问答类型说明
1. 字段属性查询
根据字段中文名或英文名查询其他属性值:
Q: 请告诉我字段中文名为'客户编号'的字段英文名是什么?
A: 该字段的字段英文名为customer_id。
2. 字段定义查询
根据字段名查询完整定义(所有属性):
Q: 字段中文名为'客户编号'的定义是什么?
A: 客户编号的定义为:字段英文名:customer_id,数据类型:varchar,长度:32...
3. 模型关联查询
根据逻辑模型或物理模型查询关联字段(仅对字段数≥3的模型生成):
Q: 逻辑模型中文名为'客户信息模型'包含哪些字段?
A: 逻辑模型中文名为'客户信息模型'包含以下字段:客户编号、客户名称、联系方式...
配置选项
编辑 config.py 文件可修改以下配置:
class QAConfig:
INPUT_FILE = "selected.json" # 输入文件名
INPUT_DIR = "Data_Export_Json" # 输入目录
OUTPUT_DIR = "Data_QA_Outputs" # 输出目录
RANDOM_SEED = 42 # 随机种子
SHUFFLE_OUTPUT = False # 是否打乱输出顺序
输出格式
训练集/验证集格式
[
{
"问题": "请告诉我字段中文名为'客户编号'的字段英文名是什么?",
"回答": "该字段的字段英文名为customer_id。"
}
]
训练集 vs 验证集区别
| 特性 | 训练集 | 验证集 |
|---|---|---|
| 问句风格 | "请告诉我"、"查询" | "请问"、"想咨询一下" |
| 答句风格 | "该字段的"、"查询结果:" | "根据查询,"、"经核实," |
| 语义 | 相同 | 相同 |
| 表达 | 基础正式 | 正式但有差异 |
完整工作流程示例
# 步骤1:数据处理(CSV转JSON + 合并 + 抽取)
python csv2json.py
# 步骤2:生成问答对(训练集 + 验证集)
python qa_generator.py
注意事项
- 确保源数据文件编码为UTF-8或GBK
- 字段英文名会自动转换为小写
- 模型关联查询仅对字段数≥3的模型生成,避免产生过多低价值问答
- 训练集和验证集使用不同的表达模板,但语义完全相同
- 随机种子固定为42,保证结果可复现
许可证
MIT License
Description
Languages
Python
100%