构造自己的jsonl数据集

本文介绍了如何将魔塔社区的数据集从JSONL文件格式转换为HuggingFace支持的格式,包括使用Python的json_lines库逐行读取和处理数据,以及将处理后的数据写回JSONL文件,以适应后续的数据处理和分析需求。
摘要由CSDN通过智能技术生成

有一个需求,就是将魔塔社区的数据集搬到huggingface上来用,并且转换格式。所以需要将jsonl文件进行一下变换。

jsonl按照一个数据行,加载数据文件

使用的是json_lines库

with json_lines.open(file_path) as file:
	for i,data in enumerate(file):
		pass

通过上面的方式就可以单个数据加载数据了。

将单个数据写入文件

在jsonl中,单个数据是被{}用字典包裹起来的,同时行与行之间是没有间隔符号的。

{
    "instruction": "我们如何在日常生活中减少用水?",
    "input": "",
    "output": "1. 使用节水装置,如节水淋浴喷头和水龙头。 \n2. 使用水箱或水桶收集家庭废水,例如洗碗和洗浴。 \n3. 在社区中提高节水意识。 \n4. 检查水管和灌溉系统的漏水情况,并及时修复它们。 \n5. 洗澡时间缩短,使用低流量淋浴头节约用水。 \n6. 收集雨水,用于园艺或其他非饮用目的。 \n7. 刷牙或擦手时关掉水龙头。 \n8. 减少浇水草坪的时间。 \n9. 尽可能多地重复使用灰水(来自洗衣机、浴室水槽和淋浴的水)。 \n10. 只购买能源效率高的洗碗机和洗衣机。"
}

{
    "instruction": "编辑文章,使其更吸引读者。",
    "input": "自主机器人是计算机控制的机器,被编程执行特定任务而不需要任何人类输入。自主机器人在各个行业中被越来越广泛地应用,从制造业到医疗保健再到安全。",
    "output": "自主机器人是计算机控制的机器,被编程执行特定任务而不需要任何人类输入,从而实现了新的效率、精确度和可靠性水平。自主机器人在各个行业中被越来越广泛地应用,从制造业,它们可以使用精度和一致的质量组装复杂的组件,到医疗保健,可以协助进行医疗测试和处理,再到安全,可以监控大面积地区,保障人们和财产的安全。自主机器人还可以减少在危险或有害环境中的错误和增加安全,在工业流程的检查或维修期间等。由于其多样性,自主机器人将彻底改变我们工作方式的方式,使任务变得更加简单、快速,最终更加愉悦。"
}

针对于处理好的数据,需要将数据转换成json对象,然后存入jsonl中。以上面的数据为例子。jsonl的第一行数据在python中使用dict对象存储的。dict对象中有三个键值对,分别是instruction,input,output。这些都是python对象(字典,字符串)。

#首先是构造数据
data_dict = {}
data_dict['instruction'] = "我们如何在日常生活中减少用水?"
data_dict['input'] = ''
data_dict['output'] = "1. 使用节水装置,如节水淋浴喷头和水龙头。 \n2. 使用水箱或水桶收集家庭废水,例如洗碗和洗浴。 \n3. 在社区中提高节水意识。 \n4. 检查水管和灌溉系统的漏水情况,并及时修复它们。 \n5. 洗澡时间缩短,使用低流量淋浴头节约用水。 \n6. 收集雨水,用于园艺或其他非饮用目的。 \n7. 刷牙或擦手时关掉水龙头。 \n8. 减少浇水草坪的时间。 \n9. 尽可能多地重复使用灰水(来自洗衣机、浴室水槽和淋浴的水)。 \n10. 只购买能源效率高的洗碗机和洗衣机。"

#将python对象转换成json对象
data_json = json.dumps(data_dict)

#写入文件,这里不需要用json_lines打开文件
with open(file_path,'a+') as file:
	file.write(data_json + '\n')

通过上面构成的数据,就可以使用load_datase()方法进行加载了。
其中还有一个细节,加载本地数据集的时候,要显示的指明路径:

dataet = load_dataset('json',  data_files=file_path)

如果使用dataet = load_dataset(‘json’,file_path)会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值