← 文档中心首页

QEntL彝文数据处理管道

// QEntL 彝文数据处理管道 // 从原始彝文数据到训练样本的完整处理流程 // 彝文字符集 常量 彝文字符集 = [ "\uf2710", "\uf2711", "\uf2712", "\uf2713", "\uf2714", "\uf2715", "\uf2716", "\uf2717", "\uf2718", "\uf2719", // ... 4120个彝文字符 ] // 字符编码 函数 编码_字符(字符 c) -> 整数 { 对于 i 从 0 到 彝文字符集长度-1 { 如果 (c == 彝文字符集[i]) { 返回 i } } 返回 -1 // 未知字符 } // 字符解码 函数 解码_字符(整数 idx) -> 字符 { 如果 (idx >= 0 且 idx < 彝文字符集长度) { 返回 彝文字符集[idx] } 返回 "?" // 未知字符 } // 文本分词 函数 分词_彝文(文本) -> 字符[] { tokens = [] 对于 i 从 0 到 文本长度-1 { c = 文本[i] 如果 (c 在 彝文字符集中) { tokens.添加(c) } } 返回 tokens } // 构建训练样本 函数 构建_样本(输入文本, 输出文本) -> 样本 { 输入 tokens = 分词_彝文(输入文本) 输出 tokens = 分词_彝文(输出文本) 输入编码 = [] 对于 token 在 输入 tokens 中 { 输入编码.添加(编码_字符(token)) } 输出编码 = [] 对于 token 在 输出 tokens 中 { 输出编码.添加(编码_字符(token)) } 返回 { "输入": 输入编码, "输出": 输出编码, "输入文本": 输入文本, "输出文本": 输出文本 } } // 数据加载器 函数 加载_彝文数据(数据目录) -> 样本[] { 所有样本 = [] 对于 文件 在 列出文件(数据目录) 中 { 如果 (文件以 ".jsonl" 结尾) { 数据 = 读取_文件(文件) 对于 行 在 数据.split("\n") 中 { 如果 (行 不为空) { json_obj = 解析_JSON(行) 样本 = 构建_样本(json_obj["user"], json_obj["assistant"]) 所有样本.添加(样本) } } } } 返回 所有样本 } // 数据增强 函数 数据增强(样本) -> 样本[] { 增强样本 = [样本] // 字符交换增强 交换样本 = 复制(样本) 交换样本.输入 = 随机打乱(样本.输入) 增强样本.添加(交换样本) // 字符删除增强 删除样本 = 复制(样本) 删除样本.输入 = 删除随机字符(样本.输入) 增强样本.添加(删除样本) 返回 增强样本 } // 主程序 主程序() { // 加载彝文数据 训练数据 = 加载_彝文数据("/root/.openclaw/workspace/QSM/data/") // 数据增强 增强数据 = [] 对于 样本 在 训练数据 中 { 增强样本 = 数据增强(样本) 增强数据.添加全部(增强样本) } // 保存处理后的数据 保存_数据(增强数据, "/root/.openclaw/workspace/QSM/data/processed_training_data.jsonl") 返回 "彝文数据处理完成,样本数:" + 增强数据长度 }