山东大学项目实训 第四周个人工作报告

这周工作主要是为微调数据集进行改造,抽取数据集变换格式以适应Xtuner需要的格式。

第二周选择DailyDialog数据集是一个高质量的多回合开放域英语对话数据集。它包含13118个对话,分为11118个对话的训练集和1000个对话的验证和测试集。用python查看数据集的一行内容:

为转化为Xtuner微调框架所需要的规范数据,使用脚本将对话集抽取出来,作为数据集使用

对应的脚本和抽取的规范化数据位于repository的data_processor目录中,以下为关键脚本内容:

import json
from datasets import load_from_disk

# 加载数据集
dataset = load_from_disk("./daily_dialog")

# 获取所有对话数据
all_dialogs = dataset['train']['dialog'] + dataset['test']['dialog'] + dataset['validation']['dialog']

# 将数据转换为需要的JSON格式
formatted_data = []
for dialog in all_dialogs:
    if len(dialog) % 2 != 0:
        # 如果对话数目为奇数,删除最后一个对话
        dialog = dialog[:-1]
    for i in range(0, len(dialog), 2):
        formatted_data.append({
            "conversation": [
            {   
                # 有时候会出现字符’,需要替换
                "input": dialog[i].replace("’", "\'"),
                "output": dialog[i+1].replace("’", "\'")
            }
            ]
        })

# 将格式化后的数据保存为JSON文件
with open('formatted_data.json', 'w', encoding='utf-8') as f:
    json.dump(formatted_data, f, ensure_ascii=False, indent=4)

提取出来的json文件有30多万行:

以上为第一种数据抽取方式,更为方便的,有第二种抽取方式:

期望数据格式为:
 

{"conversation": [{"input": "...", "output": " ..."}, {"input": " ...", "output": " ..."}, {"input": " ... ", "output": " ... "}, ...]}
{"conversation": [{"input": "...", "output": " ..."}, {"input": " ...", "output": " ..."}, {"input": " ... ", "output": " ... "}, ...]}
{"conversation": [{"input": "...", "output": " ..."}, {"input": " ...", "output": " ..."}, {"input": " ... ", "output": " ... "}, ...]}
...

对应脚本可以改成:

import json
from datasets import load_from_disk

# 加载数据集
dataset = load_from_disk("./daily_dialog")

# 获取所有对话数据
all_dialogs = dataset['train']['dialog'] + dataset['test']['dialog'] + dataset['validation']['dialog']

# 将数据转换为需要的JSONL格式
with open('formatted_data2.jsonl', 'w', encoding='utf-8') as f:
    for dialog in all_dialogs:
        conversations = []
        for i in range(len(dialog) - 1):
            conversations.append({
                # 有时候会出现字符’,需要替换
                "input": dialog[i].replace("’", "\'"),
                "output": dialog[i+1].replace("’", "\'") if i != len(dialog) - 1 else ""
            })
        formatted_data = {"conversation": conversations}
        json.dump(formatted_data, f, ensure_ascii=False)
        f.write("\n")

print("数据已成功转换并保存为formatted_data.jsonl文件")

提取出的jsonl文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值