<!-- DISABLE-FRONTMATTER-SECTIONS -->

# 章末小测试 [[章末小测验]]

<CourseFloatingBanner
    chapter={5}
    classNames="absolute z-10 right-0 top-0"
/>

本章涵盖了很多方面! 如果你没有掌握所有细节, 不用担心; 在下一章将帮助你了解内部的事情是如何工作的。

不过, 在继续下一章之前, 让我们测试一下你在本章学到的内容。

### 1.🤗 Datasets中的 `load_dataset ()` 函数允许你从下列哪个位置加载数据集？
<Question
	choices={[
		{
			text: "在本地，例如在你的笔记本电脑上",
			explain: "正确！ 你可以将本地文件的路径传递给 <code>load_dataset()</code> 函数的 <code>data_files</code> 参数来加载本地数据集。",
			correct: true
		},
		{
			text: "Hugging Face Hub",
			explain: "正确! 你可以通过提供数据集 ID 在 Hub 上加载数据集, 例如 < code > load _ dataset ('em otion') </code > 。",
			correct: true
		},
		{
			text: "远程服务器",
			explain: "正确！ 你可以将URL传递给 <code>load_dataset()</code> 函数的 <code>data_files</code> 参数来加载远程文件。",
			correct: true
		},
	]}
/>

### 2.假设您加载了 GLUE 任务，如下所示:
```py
from datasets import load_dataset

dataset = load_dataset("glue", "mrpc", split="train")
```

以下哪个命令将从 `dataset` 中生成50个元素的随机样本?

<Question
	choices={[
		{
			text: "< 代码 > dataset.sample (50) </code >",
			explain: "这是不正确的——没有 < code > Dataset.sample () </code > 方法。"
		},
		{
			text: "<code>dataset.shuffle().select(range(50))</code>",
			explain: "正确！ 正如你在本章中看待的, 你首先打乱了数据集, 然后从中选择样本。",
			correct: true
		},
		{
			text: "<code>dataset.select(range(50)).shuffle()</code>",
			explain: "这是不正确的——尽管代码会运行, 但它只会随机处理数据集中的前50个元素。"
		}
	]}
/>

### 3.假设你有一个叫做宠物数据集的家庭宠物数据集，它有一个名字列表示每个宠物的名字。下列哪种方法可以让你过滤所有名字以字母"L"开头的宠物的数据？
<Question
	choices={[
		{
			text: "< code > pets _ dataset. filter (lambda x: x ['name'] . startswith ('L')) </code >",
			explain: "正确! 为这些快速过滤使用 Python lambda 函数是一个好主意。你还能想到其他解决方案吗？",
			correct: true
		},
		{
			text: "< code > pets _ dataset. filter (lambda x ['name'] . startswith ('L') </code >",
			explain: "这是不正确的—— lambda 函数采用通用格式 < code > lambda * arguments * : * expression * </code >, 因此在这种情况下需要提供参数。"
		},
		{
			text: "创建一个类似于 < code > def filter _ names (x) : return x ['name'] . startswith ('L') </code > 的函数并运行 < code > pets _ dataset. filter (filter _ names) </code > 。",
			explain: "正确！就像使用 < code > Dataset.map () </code > 一样，你可以将显式函数传递给 < code > Dataset.filter () </code > 。当你有一些不适合于简短 lambda 函数的复杂逻辑时，这是非常有用的。其他解决方案中还有哪一个可行？",
			correct: true
		}
	]}
/>

### 4.什么是内存映射？
<Question
	choices={[
		{
			text: "CPU 与 GPU RAM 之间的映射",
			explain: "不是这样的---- 再试一次！",
		},
		{
			text: "RAM 和文件系统存储之间的映射",
			explain: "正确！🤗 Datasets 将每个数据集视为一个内存映射文件。这允许库访问和操作数据集的元素，而无需将其完全加载到内存中。",
			correct: true
		},
		{
			text: "🤗 Datasets缓存中两个文件之间的映射",
			explain: "这是不正确的-再试一次！"
		}
	]}
/>

### 5.下列哪一项是内存映射的主要好处？
<Question
	choices={[
		{
			text: "访问内存映射文件比从磁盘读取或写入磁盘更快。",
			explain: "正确! 这使得🤗 Datasets 可以快速传输，但这并不是唯一的好处。",
			correct: true
		},
		{
			text: "应用程序可以访问一个非常大的文件中的数据段，而不必首先将整个文件读入 RAM。",
			explain: "正确! ——这允许🤗Datasets在你的笔记本电脑上加载多个GB的数据集, 而不消耗你的CPU。内存映射还提供了什么其他优势?",
			correct: true
		},
		{
			text: "它消耗更少的能量，所以你的电池持续时间更长。",
			explain: "这是不正确的——再试一次！"
		}
	]}
/>

### 6.为什么下面的代码是错误的？
```py
from datasets import load_dataset

dataset = load_dataset("allocine", streaming=True, split="train")
dataset[0]
```

<Question
	choices={[
		{
			text: "它试图对一个太大而无法放入 RAM 的数据集进行流式处理。",
			explain: "这是不正确的---- 流数据集是动态解压的, 你可以用非常小的RAM处理TB大小的数据集!",
		},
		{
			text: "它尝试访问 < code > IterableDataset </code > 。",
			explain: "正确! < code > IterableDataset </code > 是一个生成器, 而不是一个容器, 因此你应该使用 < code > next (iter (dataset)) </code > 来访问它的元素。",
			correct: true
		},
		{
			text: "数据集 < code > allocine </code > 没有分割< code >训练集</code >。",
			explain: "这是不正确的---- 查看 Hub 上的[ < code > allocine </code > dataset card ]( https://huggingface.co/datasets/allocine ), 看看它包含哪些拆分。"
		}
	]}
/>

### 7.创建数据集卡的主要好处是什么？
<Question
	choices={[
		{
			text: "它提供了关于数据集的预期用途和支持的任务的信息，以便社区中的其他人可以对使用它做出明智的决定。",
			explain: "正确！ 未记录的数据集可用于训练可能无法反映数据集创建者意图的模型, 或者如果对违反隐私或许可限制的数据进行训练, 则可能会产生法律状态模糊的模型。不过, 这并不是唯一的好处!",
			correct : true
		},
		{
			text: "它有助于引起人们对语料库中存在的偏见的注意。",
			explain: "正确！ 几乎所有数据集都存在某种形式的偏差, 这可能会产生负面的后果。了解它们有助于模型构建着了解如何解决固有的偏见。数据集卡还有什么帮助？",
			correct : true
		},
		{
			text: "它提高了社区中其他人使用我的数据集的机会。",
			explain: "正确！一个编写良好的数据集卡片会带来更高的宝贵的数据集使用率。它还提供什么其他好处？",
			correct: true
		},
	]}
/>


### 8.什么是语义搜索？
<Question
	choices={[
		{
			text: "一种在查询中的单词和语料库中的文档之间搜索精确匹配的方法",
			explain: "这是不正确的---这种类型的搜索被称为“词汇搜索”，这是你通常在传统搜索引擎中可以看到的。"
		},
		{
			text: "一种通过理解查询的上下文含义来搜索匹配文档的方法",
			explain: "正确！ 语义搜索使用嵌入向量来表示查询和文档，并使用相似度度量来衡量它们之间的重叠量。你还能怎么形容它？",
			correct: true
		},
		{
			text: "一种提高搜索准确性的方法",
			explain: "正确！语义搜索引擎能够比关键字匹配更好地捕获查询意图，并且通常能够以更高的精度检索文档。但这不是唯一正确的答案——语义搜索还能提供什么？",
			correct: true
		}
	]}
/>

### 9.对于非对称语义搜索，通常有:
<Question
	choices={[
		{
			text: "一个简短的查询和一个较长的段落回答查询",
			explain: "正确！",
			correct : true
		},
		{
			text: "相同长度的查询和段落",
			explain: "这实际上是一个对称语义搜索的例子——再试一次！"
		},
		{
			text: "一个较长的查询和一个较短的段落来回答查询",
			explain: "这是错误的---- 再试一次！"
		}
	]}
/>

### 10.我可以使用数据集加载数据用于其他领域，如语音处理？
<Question
	choices={[
		{
			text: "没有",
			explain: "正确！🤗 Datasets目前支持表格数据、音频和计算机视觉。查看[MNIST]( https://huggingface.co/datasets/allocine )数据集以获取计算机视觉示例。"
		},
		{
			text: "是的",
			explain: "正确！查看令人兴奋的发展与语音和视觉在🤗 Transformers库，看看🤗 Datasets是如何使用这些领域。",
			correct : true
		},
	]}
/>
