（空气呼啸） (air whooshing)
- 如何对数据集进行切片和切块？ - How to slice and dice the dataset?
大多数时候，你使用的数据 Most of the time, the data you work with
不会为训练模型做好充分准备。 won't be perfectly prepared for training models.
在本视频中，我们将探索各种功能 In this video, we'll explore various features
数据集库提供的用于清理数据的数据集。 that the datasets library provides to clean up your data.
数据集库提供了几种内置方法 The datasets library provides several built-in methods
允许你以各种方式处理数据。 that allow you to wrangle your data in various ways.
在本视频中，我们将了解如何随机播放 In this video, we'll see how you can shuffle
并拆分你的数据，选择你感兴趣的行， and split your data, select the rows you're interested in,
调整列， tweak the columns,
并使用 map 方法应用处理函数。 and apply processing functions with the map method.
让我们从洗牌开始。 Let's start with shuffling.
这通常是个好主意 It is generally a good idea
将改组应用于你的训练集 to apply shuffling to your training set
这样你的模型就不会学习 so that your model doesn't learn
任何人工排序数据。 any artificial ordering the data.
如果你想洗牌整个数据集， If you wanna shuffle the whole dataset,
你可以应用适当命名的 shuffle 方法。 you can apply the appropriately named shuffle method.
你可以在这里看到这个方法的一个例子， You can see an example of this method in action here,
我们在哪里下载了训练拆分 where we've downloaded the training split
小队数据集并随机打乱所有行。 of the squad dataset and shuffled all the rows randomly.
另一种打乱数据的方法 Another way to shuffle the data
是创建随机训练和测试拆分。 is to create random train and test splits.
如果你必须创建，这将很有用 This can be useful if you have to create
你自己的测试从原始数据中分离出来。 your own test splits from raw data.
为此，你只需应用 train_test_split 方法 To do this, you just apply the train_test_split method
并指定测试拆分应该有多大。 and specify how large the test split should be.
在这个例子中，我们指定测试集应该是 10% In this example, we specify that the test set should be 10%
总数据集大小。 of the total dataset size.
可以看到 train_test_split 方法的输出 You can see that the output of the train_test_split method
是一个 DatasetDict 对象 is a DatasetDict object
其键对应于新的拆分。 whose keys correspond to the new splits.
现在我们知道如何打乱数据集了， Now that we know how to shuffle the dataset,
让我们来看看返回我们感兴趣的行。 let's take a look at returning the rows we're interested in.
最常见的方法是使用 select 方法。 The most common way to do this is with the select method.
此方法需要一个列表 This method expects a list
或数据集索引的生成器， or a generator of the datasets indices,
然后将返回一个新的数据集对象 and will then return a new dataset object
只包含那些行。 containing just those rows.
如果你想创建一个随机的行样本， If you wanna create a random sample of rows,
你可以通过链接洗牌来做到这一点 you can do this by chaining the shuffle
并一起选择方法。 and select methods together.
在这个例子中， In this example,
我们创建了一个包含五个元素的样本 we've created a sample of five elements
来自小队数据集。 from the squad dataset.
在数据集中挑选特定行的最后一种方法 The last way to pick out specific rows in a dataset
是通过应用过滤器方法。 is by applying the filter method.
此方法检查每一行是否 This method checks whether each row
是否满足某种条件。 fulfills some condition or not.
例如，这里我们创建了一个小的 lambda 函数 For example, here we've created a small lambda function
检查标题是否以字母 L 开头。 that checks whether the title starts with the letter L.
一旦我们用 filter 方法应用这个函数， Once we apply this function with the filter method,
我们得到仅包含这些行的数据子集。 we get a subset of the data just containing these rows.
到目前为止，我们一直在谈论数据集的行， So far, we've been talking about the rows of a dataset,
但是列呢？ but what about the columns?
数据集库有两个主要方法 The datasets library has two main methods
用于转换列， for transforming columns,
用于更改列名称的 rename_column 方法 a rename_column method to change the name of the column
以及删除它们的 remove_columns 方法。 and a remove_columns method to delete them.
你可以在此处查看这两种方法的示例。 You can see examples of both these methods here.
一些数据集有嵌套的列， Some datasets have nested columns,
你可以通过应用展平方法来扩展它们。 and you can expand these by applying the flatten method.
例如，在小队数据集中， For example, in the squad dataset,
answers 列包含文本和 answer_start 字段。 the answers column contains a text and answer_start field.
如果我们想将它们提升到各自的专栏中， If we wanna promote them to their own separate columns,
我们可以应用扁平化，如图所示。 we can apply flatten as shown here.
当然，现在不讨论数据集库 Now of course, no discussion of the datasets library
不提著名的 map 方法就完整了。 would be complete without mentioning the famous map method.
此方法应用自定义处理功能 This method applies a custom processing function
到数据集中的每一行。 to each row in the dataset.
比如这里我们先定义 For example, here we first define
小写标题函数， a lowercase title function,
这只是将标题列中的文本小写。 that simply lowercases the text in the title column.
然后我们将该函数提供给 map 方法， And then we feed that function to the map method,
瞧，我们现在有了小写标题。 and voila, we now have lowercase titles.
map 方法也可用于批量输入行 The map method can also be used to feed batches of rows
到处理函数。 to the processing function.
这对于标记化特别有用 This is especially useful for tokenization
其中分词器由分词器库支持， where the tokenizer is backed by the Tokenizers library,
他们可以使用快速多线程 and they can use fast multithreading
并行处理批次。 to process batches in parallel.
（空气呼啸） (air whooshing)