如何使用Hugging Face中的datasets

2021-08-10 10:02:43 浏览数 (3)

安装相关包

代码语言:javascript复制
pip install datasets, transformers

去官网看看有什么数据集

https://huggingface.co/datasets 我们选择其中的一个数据集:cail2018

代码语言:javascript复制
from datasets import load_dataset
datasets = load_dataset('cail2018')
datasets
代码语言:javascript复制
DatasetDict({
    exercise_contest_train: Dataset({
        features: ['fact', 'relevant_articles', 'accusation', 'punish_of_money', 'criminals', 'death_penalty', 'imprisonment', 'life_imprisonment'],
        num_rows: 154592
    })
    exercise_contest_valid: Dataset({
        features: ['fact', 'relevant_articles', 'accusation', 'punish_of_money', 'criminals', 'death_penalty', 'imprisonment', 'life_imprisonment'],
        num_rows: 17131
    })
    exercise_contest_test: Dataset({
        features: ['fact', 'relevant_articles', 'accusation', 'punish_of_money', 'criminals', 'death_penalty', 'imprisonment', 'life_imprisonment'],
        num_rows: 32508
    })
    first_stage_train: Dataset({
        features: ['fact', 'relevant_articles', 'accusation', 'punish_of_money', 'criminals', 'death_penalty', 'imprisonment', 'life_imprisonment'],
        num_rows: 1710856
    })
    first_stage_test: Dataset({
        features: ['fact', 'relevant_articles', 'accusation', 'punish_of_money', 'criminals', 'death_penalty', 'imprisonment', 'life_imprisonment'],
        num_rows: 217016
    })
    final_test: Dataset({
        features: ['fact', 'relevant_articles', 'accusation', 'punish_of_money', 'criminals', 'death_penalty', 'imprisonment', 'life_imprisonment'],
        num_rows: 35922
    })
})

我们发现datasets里面是一个字典,每个字典里面是一个Dataset类,Dataset类里面有两个属性:features和num_rows,features是一个字典:

代码语言:javascript复制
datasets['exercise_contest_train'].features.keys()
dict_keys(['fact', 'relevant_articles', 'accusation', 'punish_of_money', 'criminals', 'death_penalty', 'imprisonment', 'life_imprisonment'])

我们可以随机选取10条来看看数据:

代码语言:javascript复制
from datasets import ClassLabel
import random
import pandas as pd
# from IPython.display import display, HTML

def show_random_elements(dataset, num_examples=10):
    assert num_examples <= len(dataset), "Can't pick more elements than there are in the dataset."
    picks = []
    for _ in range(num_examples):
        pick = random.randint(0, len(dataset)-1)
        while pick in picks:
            pick = random.randint(0, len(dataset)-1)
        picks.append(pick)
    
    df = pd.DataFrame(dataset[picks])
    for column, typ in dataset.features.items():
        print(column, typ)
        if isinstance(typ, ClassLabel):
            df[column] = df[column].transform(lambda i: typ.names[i])
    # display(HTML(df[:2].to_html()))
    return df
df = show_random_elements(datasets["exercise_contest_train"])
print(df)
代码语言:javascript复制
fact Value(dtype='string', id=None)
relevant_articles Sequence(feature=Value(dtype='int32', id=None), length=-1, id=None)
accusation Sequence(feature=Value(dtype='string', id=None), length=-1, id=None)
punish_of_money Value(dtype='float32', id=None)
criminals Sequence(feature=Value(dtype='string', id=None), length=-1, id=None)
death_penalty Value(dtype='bool', id=None)
imprisonment Value(dtype='float32', id=None)
life_imprisonment Value(dtype='bool', id=None)
                                                fact  ... life_imprisonment
0  蓬莱市人民检察院指控,一、贩卖毒品罪被告人杨某于2015年5月6日,经杨某甲介绍,在蓬莱市紫...  ...             False
1  经审理查明:(一)××罪上诉人姚某在担任德清县看守所副所长期间,利用职务便利,自2009年4...  ...             False
2  经审理查明,2008年4月,被告人刘某甲向李某赊账购买化肥,并于同年4月20日向李某出具一份...  ...             False
3  朔州市平鲁区人民检察院指控,被告人孟某某作为浙江中矿建设集团有限公司驻平鲁区兰花永胜煤业有限...  ...             False
4  经审理查明:2017年6月13日14时40分许,被告人苏某某驾驶重型自卸货车沿省道331线(...  ...             False
5  公诉机关指控:一、××2014年6月至8月期间,被告人刘某甲化名刘某,谎称自己有能力给被害人...  ...             False
6  经审理查明,2015年4月初至2015年4月21日期间,被告人郭某租用位于肃宁县城关镇玉皇庙...  ...             False
7  晋江市人民检察院指控:2017年3月至6月期间,被告人陈某经预谋,准备手机、手机卡、银行卡、...  ...             False
8  益阳市赫山区人民检察院指控:一、××罪2015年4月25日晚8时许,被告人盛某与周某等人在谢...  ...             False
9  公诉机关指控,(一)××罪2015年2月18日,被告人杨某某驾车至沂水县高庄镇王家庄子村时,...  ...             False

[10 rows x 8 columns]

需要注意不同的datasets可能组成的结构不一样,需要自己看看。

0 人点赞