本篇文章向您整体介绍数据集(Dataset)以及数据集仓库(DatasetHub)相关概念及使用。
什么是数据集与数据集仓库?#
-
数据集(Dataset):一个易于共享与访问的数据集合,可用于模型的训练、测试和验证。数据集通常以表格形式呈现,可以是文本、图像、音频、视频或多模态等多种类型。
-
数据集仓库(DatasetHub):集中管理数据集的仓库,支持模型进行训练和预测。提供数据的易访问性、管理与共享。
创建数据集#
前提条件#
您需要拥有一个ModelScope账号。
使用数据集#
DatasetHub上的数据存储在公开地址或ModelScope的数据仓库中。数据集使用git进行版本管理,您可以下载单个文件或整个数据集。通过一个namespace和数据集名称,即可通过SDK从DatasetHub下载数据,以及加载使用。下次您需要相同文件时,它将从您的缓存中加载,无需重新下载。
只需知道以下信息,即可通过代码轻松获取数据集:
dataset_name
数据集名称namespace
命名空间 (默认为modelscope
)subset_name
子数据集名称(默认为default
)version
数据集版本(默认为master
)split
数据集的划分(默认为None
)
以下是一行代码完成下载和加载的示例,除了数据集名称,其他参数可以不填使用默认值:
from modelscope import MsDataset ds_dict = MsDataset.load('squad') print(ds_dict['train'][0]) >>> {'id': '5733be284776f41900661182', 'title': 'University_of_Notre_Dame', 'context': 'Architecturally, the school has a Catholic character. Atop the Main Building\'s gold dome is a golden statue of the Virgin Mary. Immediately in front of the Main Building and facing it, is a copper statue of Christ with arms upraised with the legend "Venite Ad Me Omnes". Next to the Main Building is the Basilica of the Sacred Heart. Immediately behind the basilica is the Grotto, a Marian place of prayer and reflection. It is a replica of the grotto at Lourdes, France where the Virgin Mary reputedly appeared to Saint Bernadette Soubirous in 1858. At the end of the main drive (and in a direct line that connects through 3 statues and the Gold Dome), is a simple, modern stone statue of Mary.', 'question': 'To whom did the Virgin Mary allegedly appear in 1858 in Lourdes France?', 'answers': {'text': ['Saint Bernadette Soubirous'], 'answer_start': [515]}}
如果希望指定其他子数据集,则可以指定subset_name
:
from modelscope import MsDataset ds_dict = MsDataset.load('ceval-exam', subset_name='operating_system') print(ds_dict['test'][0]) >>> {'id': 0, 'question': '用于确定字符串模式的一个规则集称为____。', 'A': '字符串匹配', 'B': '正则表达式', 'C': '文件名匹配', 'D': '过滤器', 'answer': '', 'explanation': ''}
如果希望指定其他组织加载数据集,则可以指定namespace
:
from modelscope import MsDataset ds_dict = MsDataset.load('ceval-exam', namespace='opencompass', subset_name='computer_network') print(ds_dict['test'][0]) >>> {'id': 0, 'question': '计算机网络的资源主要是指____。', 'A': '服务器、路由器、通信线路与用户计算机', 'B': '计算机操作系统、数据库与应用软件', 'C': '计算机硬件、软件与数据', 'D': 'Web服务器、数据库服务器与文件服务器', 'answer': '', 'explanation': ''}
如果希望指定非默认版本,则可以指定version
:
from modelscope import MsDataset ds_dict = MsDataset.load('ceval-exam', subset_name='computer_network', version='v1') print(ds_dict['test'][0]) >>> {'id': 0, 'question': '计算机网络的资源主要是指____。', 'A': '服务器、路由器、通信线路与用户计算机', 'B': '计算机操作系统、数据库与应用软件', 'C': '计算机硬件、软件与数据', 'D': 'Web服务器、数据库服务器与文件服务器', 'answer': '', 'explanation': ''}
如果只想加载指定划分也可以指定split
:
from modelscope import MsDataset ds = MsDataset.load('ceval-exam', subset_name='computer_network', split='dev') print(ds[0]) >>> {'id': 0, 'question': '下列设备属于资源子网的是____。', 'A': '计算机软件', 'B': '网桥', 'C': '交换机', 'D': '路由器', 'answer': 'A', 'explanation': '1. 首先,资源子网是指提供共享资源的网络,如打印机、文件服务器等。\r\n2. 其次,我们需要了解选项中设备的功能。网桥、交换机和路由器的主要功能是实现不同网络之间的通信和数据传输,是通信子网设备。而计算机软件可以提供共享资源的功能。'}
注意事项#
- 数据集英文名称,同一组织账号下唯一;
- 是否公开,用于设置数据集访问权限:
- 当选择公开数据集时,对所有用户均可见;
- 当选择非公开数据集时,仅对当前组织账号下可见;
- 数据集描述
- 数据集描述是数据集的重要组成部分,是数据集的重要信息之一,内容包括数据集的来源、数据集的用途、数据集的格式等;