pytorch 使用HuggingFace的数据集库加载数据集

vvppvyoh  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(254)

我使用huggingface库中的load_dataset来加载jsonline数据集。下面是jsonline文件中的数据点示例:

{"tokens": ["На", "місці", "трагедії", "Безсмертний", "заявив", ",", "що", "«", "нелюдські", "вчинки", "можуть", "оцінюватися", "лише", ",", "як", "звірство", "»", ".", "Нагадаємо", ",", "11", "квітня", "на", "станції", "метро", "«", "Жовтнева", "»", "у", "Мінську", "стався", "вибух", ",", "в", "результаті", "якого", "загинули", "12", "людей", ",", "більше", "150", "отримали", "поранення", ".", "13", "квітня", "Лукашенко", "заявив", "про", "розкриття", "теракту", ".", "Інша", "справа", ",", "що", "немає", "ясності", ",", "хто", "за", "цим", "стоїть", ".", "Багато", "хто", "звертає", "увагу", "на", "те", ",", "що", "вибух", "скоєно", "неподалік", "адміністрації", "президента", ".", "Сам", "Олександр", "Лукашенко", "учора", "увечері", "провів", "термінову", "нараду", "і", "наказав", "знайти", "тих", ",", "кому", "потрібно", "зруйнувати", "стабільність", "."], "source_start": 31, "source_end": 31, "target_start": 73, "target_end": 73, "topic_id": "255715", "source_id": "T10", "target_id": "T129", "doc_ids": [0, 1], "label": 1}

我得到这个错误:

ValueError: Couldn't cast
tokens: list<item: string>
  child 0, item: string
source_start: int64
source_end: int64
target_start: int64
target_end: int64
label: int64
to
{'tokens': Sequence(feature=Value(dtype='string', id=0), length=-1, id=None), 'label': Value(dtype='int32', id=1), 'source_start': Value(dtype='int32', id=2), 'source_end': Value(dtype='int32', id=3), 'target_start': Value(dtype='int32', id=3), 'target_end': Value(dtype='int32', id=4), 'topic_id': Value(dtype='string', id=5), 'doc_id': Sequence(feature=Value(dtype='int32', id=6), length=-1, id=None), 'source_id': Value(dtype='string', id=7), 'target_id': Value(dtype='string', id=8)}
because column names don't match

下面是加载数据的代码:

custom_features = Features(
    {
        "tokens": Sequence(Value("string", id=0)),
        "label": Value("int32", id=1),
        "source_start": Value("int32", id=2),
        "source_end": Value("int32", id=3),
        "target_start": Value("int32", id=3),
        "target_end": Value("int32", id=4),
        'topic_id': Value("string", id=5),
        'doc_id': Sequence(Value("int32", id=6)),
        'source_id': Value("string", id=7),
        'target_id': Value("string", id=8),
    }
)

raw_datasets = load_dataset('json', data_files={
    'train': args.train_file,
    'dev': args.dev_file,
    'test': args.test_file
},features=custom_features)

如果我删除字段“topic_id,doc_id,source_id,target_id”,数据集将正确加载。但是,我更喜欢将它们保存在jsonfile中,而在数据集的处理版本中忽略它们。有什么解决办法吗?

fcg9iug3

fcg9iug31#

您可以通过将'doc_ids': Sequence(Value("32", id=9))添加到custom_features来解决问题。

相关问题