我如何处理这个数据集来创建 datasetDict?

Pep*_*e95 17 python dataset nlp-question-answering deep-learning pytorch

我正在尝试构建一个 datasetDictionary 对象来在 PyTorch 上训练 QA 模型。我有这两个不同的数据集:

test_dataset

Dataset({
    features: ['answer_text', 'answer_start', 'title', 'context', 'question', 'answers', 'id'],
    num_rows: 21489
})
Run Code Online (Sandbox Code Playgroud)

train_dataset

Dataset({
    features: ['answer_text', 'answer_start', 'title', 'context', 'question', 'answers', 'id'],
    num_rows: 54159
})
Run Code Online (Sandbox Code Playgroud)

在数据集的文档中我没有找到任何内容。我是个菜鸟,因此解决方案可能非常简单。我希望获得的是这样的:

dataset

DatasetDict({
    train: Dataset({
        features: ['answer_text', 'answer_start', 'title', 'context', 'question', 'answers', 'id'],
        num_rows: 54159
    })
    test: Dataset({
        features: ['answer_text', 'answer_start', 'title', 'context', 'question', 'answers', 'id'],
        num_rows: 21489
    })
})
Run Code Online (Sandbox Code Playgroud)

我真的不知道如何使用两个数据集来创建 dataserDict 或如何设置键。此外,我希望将训练集“切割”为两部分:训练集和验证集,但这段话对我来说很难处理。最终结果应该是这样的:

dataset

DatasetDict({
    train: Dataset({
        features: ['answer_text', 'answer_start', 'title', 'context', 'question', 'answers', 'id'],
        num_rows: 54159 - x
    })
    validation: Dataset({
        features: ['answer_text', 'answer_start', 'title', 'context', 'question', 'answers', 'id'],
        num_rows: x
    })
    test: Dataset({
        features: ['answer_text', 'answer_start', 'title', 'context', 'question', 'answers', 'id'],
        num_rows: 21489
    })
})
Run Code Online (Sandbox Code Playgroud)

预先感谢您,请原谅我是个菜鸟:)

小智 21

要获取验证数据集,您可以这样做:

train_dataset, validation_dataset= train_dataset.train_test_split(test_size=0.1).values()
Run Code Online (Sandbox Code Playgroud)

该函数会将训练数据集的 10% 划分为验证数据集。

要获取“DatasetDict”,您可以这样做:

import datasets
dd = datasets.DatasetDict({"train":train_dataset,"test":test_dataset})
Run Code Online (Sandbox Code Playgroud)


Sah*_*lis 12

对于后代;)添加更多有关答案的信息。

from datasets.dataset_dict import DatasetDict
from datasets import Dataset

d = {'train':Dataset.from_dict({'label':y_train,'text':x_train}),
     'val':Dataset.from_dict({'label':y_val,'text':x_val}),
     'test':Dataset.from_dict({'label':y_test,'text':x_test})
     }

DatasetDict(d)
Run Code Online (Sandbox Code Playgroud)