Hugging Face Datasets v2.10.0的Features说明,用一份列名与列类型配对的字典描述数据集内部结构,并关联到底层序列化形式。列名回答一列叫什么,类型则说明这列的数据怎样表示。原页的普通值例子中,idx对应int32,两个句子字段对应string;Value记录单项值的类型,而不是通过字段名称猜出其数值或文字含义。
类别标签另由ClassLabel表达。原例有not_equivalent和equivalent两个类别名称,但标签在数据集里存为整数。文档用int2str和str2int这两个方法名说明整数与名称之间的双向转换关系。一个整数属于储存表示,一个名称属于已定义类别;只保留“这一列是整数”,会遗漏这些整数还与哪些类别名称相联的信息。这里解释的是文档所列的对应关系,没有实际调用方法或读取样本。
包含一组对象的字段还会出现Sequence。原例的answers不是一个单独字符串值,它内部有text与answer_start两个子字段,分别是字符串列表和int32列表。answers是外层字段的身份,text与answer_start是它所包含的内部结构;给整列一个名称,与列内仍能区分不同类型的子字段并不矛盾。这也说明,列类型资料可以比“每列只有一个普通值类型”更细。
多维数组又有自己的结构描述。页面从Array2D一直列到Array5D,以二维的一乘三形状为例,并说明数组的第一维可以是动态长度。三维例子将第一维写为None,后两维为五和二。这份形状资料同时保留“有几维”和“哪些维长度固定”两件事:第一维没有固定长度,不会让另外两维的长度规定同时消失,也不表示整个值已经变成一维列表。
Audio类型把一列中的资料分成三个字段:array是一维的已解码音频数据,path是音频文件路径,sampling_rate是采样率。三者分别回答内容以什么数值表示、文件在哪里,以及音频数据的采样尺度。路径文字不是那一维数值数组,采样率也不是路径的一部分。它们可以出现在同一项音频资料中,仍各有自己的字段身份。
当Audio的decode为False,页面描述的返回形态是文件路径或字节内容,不把文件解码为array。于是,“有音频文件的资料”与“有已解码的一维数据”是两种表示条件。这个开关关联的是资料返回形态,而不是据此说明音频的内容主题、可理解性或任何模型结果。
Image的说明采用相似区分:解码后的对象是PIL.Image,decode为False时则给出路径或文件字节,不解码成该图像对象。原页还保留依赖数据集的条件:数据由独立文件组成时可能取得本地文件路径,不是独立文件时则可能取得字节内容。故路径与字节并非所有记录中必然同时齐备的两份副本;它们可以是不同来源结构下提供同一媒体资料的不同形式。
这些定义固定采用v2.10.0页面;导航中的其他版本号不被当作本篇版本。本篇没有下载数据、构造Features或解码音像,文字与数组示例只用于解释字段及表示的身份。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。