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

问题描述 投票:0回答:4

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

test_dataset

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

train_dataset

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

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

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
    })
})

我真的不知道如何使用两个数据集来创建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
    })
})

提前感谢您,请原谅我是个菜鸟:)

python deep-learning pytorch dataset nlp-question-answering
4个回答
16
投票

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

train_dataset, validation_dataset= train_dataset.train_test_split(test_size=0.1).values()

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

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

import datasets
dd = datasets.DatasetDict({"train":train_dataset,"test":test_dataset})

10
投票

为了子孙后代;) 添加有关答案的更多信息。

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)

3
投票

我在创建直接从 csv 文件加载数据的 DatasetDict 时解决了类似的问题。 正如文档所述,只需要像这样加载文件:

from datasets import load_dataset
dataset = load_dataset('csv', data_files='my_file.csv')

如果有人需要加载多个 csv 文件也是可能的。

之后,按照@Lin的建议,通过训练集和验证集进行分割的简单方法如下

train_dataset, validation_dataset= dataset['train'].train_test_split(test_size=0.1).values()

最后,像这样设置DatasetDict:

dataset = DatasetDict({'train': train_dataset, 'val': validation_dataset})

0
投票

根据@Saha Millis的回答,我设法将两个不同的jsonl文件组合成一个DatasetDict,如下所示:

test = load_dataset('json', data_files='file1.jsonl')
train = load_dataset('json', data_files='file2.jsonl')
dataset = DatasetDict({'train':train['train'], 'test':test['train']})
© www.soinside.com 2019 - 2024. All rights reserved.