【如何成功加载 HuggingFace 数据集】不使用Colab,以ChnSentiCorp数据集为例

【如何成功加载 HuggingFace 数据集】不使用Colab,以ChnSentiCorp数据集为例

  • 前置
  • 加载数据集
    • 尝试一:标准加载数据库代码
    • 尝试二:科学上网
    • 尝试三:把 Huggingface 的数据库下载到本地
    • 尝试3.5 创建 state.json
    • 彩蛋

前置

  • Huggingface ChnSentiCorp
    在这里插入图片描述
    可以看到,该huggingface库中是优测试集,训练集,验证集数据的指针,真正的数据挂载在GoogleDrive

加载数据集

尝试一:标准加载数据库代码

  • 使用如下代码加载,这也是 一些B站博主 视频中的给出的代码
import torch
from datasets import load_datasetclass Dataset(torch.utils.data.Dataset):def __init__(self, split):self.dataset = load_dataset(path = "seamew/ChnSentiCorp",split = split)def __len__(self):return len(self.dataset)def __getitem__(self, i):text = self.dataset[i]["text"]label = self.dataset[i]["label"]return text, labeldataset = Dataset("train")print(len(dataset), dataset[0])

命令台输出:


Using the latest cached version of the module from C:\Users\admin\.cache\huggingface\modules\datasets_modules\datasets\seamew--ChnSentiCorp\1f242195a37831906957a11a2985a4329167e60657c07dc95ebe266c03fdfb85 (last modified on Fri Jul  7 21:11:26 2023) since it couldn't be found locally at seamew/ChnSentiCorp., or remotely on the Hugging Face Hub.
Using custom data configuration default
D:\Softwares\Anaconda3\Anaconda3\lib\site-packages\scipy\__init__.py:155: UserWarning: A NumPy version >=1.18.5 and <1.25.0 is required for this version of SciPy (detected version 1.25.0warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"
Downloading and preparing dataset chn_senti_corp/default to C:\Users\admin\.cache\huggingface\datasets\seamew___chn_senti_corp\default\0.0.0\1f242195a37831906957a11a2985a4329167e60657c07dc95ebe266c03fdfb85...

在运行 train_path = dl_manager.download_and_extract(_TRAIN_DOWNLOAD_URL) 这一行的时候报错
报错 ConnectionError
原因:链接不到谷歌云盘

尝试二:科学上网

  • 使用科学上网
    运行同一份代码
    报错 FileNotFoundError
    原因:什么鬼,莫名奇妙找不到文件,难道是库版本太老了?

尝试三:把 Huggingface 的数据库下载到本地

  • 可以使用 git 命令等方式把这些文件下载本地
    在这里插入图片描述
  • 使用新的加载方式(load_from_disk)加载数据库
import torch
from datasets import load_from_diskclass Dataset(torch.utils.data.Dataset):def __init__(self, split):self.dataset = load_from_disk("E:/Repo/NLP/23.7.7 Huggingface_Learn/ChnSentiCorp")def __len__(self):return len(self.dataset)def __getitem__(self, i):text = self.dataset[i]["text"]label = self.dataset[i]["label"]return text, labeldataset = Dataset("train")print(len(dataset), dataset[0])

再次报错 File Not Found
在这里插入图片描述

尝试3.5 创建 state.json

  • 在刚刚下载的数据集的那个文件夹中创建一个 state.json 文件
    filename 为目录下希望加载的文件,这里加载 train 数据
    _split 也同步改成 train
    其他的东西原样不动,鬼知道 _fingerprint 后面是啥玩意儿…
{"_data_files": [{"filename": "chn_senti_corp-train.arrow"}],"_fingerprint": "24c4fd9824d8b978","_format_columns": null,"_format_kwargs": {},"_format_type": null,"_indexes": {},"_output_all_columns": false,"_split": "train"}
  • 结果,运行成功
    在这里插入图片描述

彩蛋

  • 某博主的教程的 json 文件如下:
{"_data_files": [{# 对应上图中的文件名 "filename": "chn_senti_corp-train.arrow"}],"_fingerprint": "24c4fd9824d8b978","_format_columns": null,"_format_kwargs": {},"_format_type": null,"_indexes": {},"_output_all_columns": false,# 加载训练集数据 若为验证集 'validation' 测试集 'test'"_split": "train"}
  • 我调用之后,产生新的错误
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 43: inv
    且改 vscode 的编码到 gbk 也不管用
  • 摸索之后,发现删除 json 中的中文注释即可…
    顺带一提 ,这已经是我人生中第二次遇到中文注释删掉就能跑的情况了呢,真不错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13200.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL用户管理

目录 用户管理 用户 用户信息 创建用户 删除用户 修改用户密码 数据库的权限 给用户授权 回收权限 用户管理 如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理。 用户 用户信息 MySQL中的用户&#xff0c;都存储…

手写操作系统--进入保护模式的开篇

之前我们讲的主引导扇区以及内核加载器等内容。都是在实模式下运行的。在实模式下寻址范围仅有1M&#xff0c;是远远不够我们用的。我们想要更大的内存空间&#xff0c;就得进入保护模式&#xff0c;实模式是一个历史遗留问题&#xff0c;本身是没有这个名字的。是因为有了保护…

Keil环境下CANopenNode移植到STM32问题记录(一)---printf重定向问题

文章目录 问题描述问题结决思考&#xff1a;相关文章 在直接将CANopenSTM32的示例工程直接移植到Keil环境下。 如果移植工程未实现printf函数重定向&#xff0c;则要注释掉log_printf下面的printf函数&#xff0c;使日志打印失效 /* Printf function of CanOpen app */ #define…

vue3的getCurrentInstance()方法拿到的实例对象中的proxy

getCurrentInstance方法拿到的是当前组件的实例对象 实例对象中的成员proxy是一个代理对象&#xff0c;可以通过访问代理对象来间接访问当前组件的实例对象 这样就不需要this&#xff0c;也可以操作当前组件的实例对象了 proxy对象就相当于当前组件的实例对象 proxy对象会对…

FPGA实验五:信号发生器设计

目录 一、实验目的 二、设计要求 三、实验代码 1.代码原理分析 2.代码设计思路 3.IP核的设计与配置 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 &#xff08;1&#xff09;关于波形一些指标的介绍 &#xff08;2&#xff09;对波形转换功能的验证 &#xf…

【CPU】关于x86、x86_64/x64、amd64和arm64/aarch64

为什么叫x86和x86_64和AMD64? 为什么大家叫x86为32位系统&#xff1f; 为什么软件版本会注明 for amd64版本&#xff0c;不是intel64呢&#xff1f; x86是指intel的开发的一种32位指令集&#xff0c;从386开始时代开始的&#xff0c;一直沿用至今&#xff0c;是一种cisc指令…

Haskell 入门学习(一)之安装试用 Haskell

Haskell 入门学习&#xff08;一&#xff09;之安装试用 Haskell 文章目录 Haskell 入门学习&#xff08;一&#xff09;之安装试用 Haskell前言&#xff1a;安装Windows 安装Linux、MacOs 使用 VSCode 进行代码编写创建一个简单的项目使用 Cabal 管理项目项目大致结构运行项目…

python验证公网ip与内网ip

公网IP和内网IP都是用于标识网络设备的地址&#xff0c;但它们有着不同的作用和特点。 公网IP是由互联网服务提供商&#xff08;ISP&#xff09;分配给用户设备的唯一标识符。它是全球范围内唯一的&#xff0c;并且可以被其他网络设备使用来寻找和连接特定的设备。公网IP通常用…

python_day2

猜数字-while循环 import randomnum random.randint(1, 10) while True:x int(input("输入&#xff1a;"))if x > num:print("大了")elif x < num:print("小了")else:print("猜对了")break打印九九乘法表-while循环 i 1 wh…

MySQL索引优化整合案例实现

目录 1 JOIN优化1.1 JOIN算法原理1.2 in和exists函数 2 order by优化2.1 索引排序2.2 额外排序2.3 排序优化 3 索引单表优化案例3.1. 建表3.2. 单表索引分析3.1.1 需求3.1.2 优化 4 索引多表优化案例 1 JOIN优化 1.1 JOIN算法原理 1) JOIN回顾 JOIN 是 MySQL 用来进行联表操作…

Spring Boot中的Hibernate是什么,如何使用

Spring Boot中的Hibernate是什么&#xff0c;如何使用 Hibernate是一个流行的Java ORM框架&#xff0c;它提供了一种将Java对象映射到关系数据库表的方法。Spring Boot集成了Hibernate&#xff0c;使得在开发Web应用程序时可以轻松地使用Hibernate操作数据库。本文将介绍Sprin…

插值算法

插值法在较少的数据模型的基础上模拟产生新的靠谱数值&#xff0c;可以用来预测。 利用已知的点建立合适的插值函数 f(x) ,未知点 x_i 由插值函数 f(x) 可以求出函数值 f(x_i) &#xff0c;用求得的 (x_i,f(x_i))近似代替未知点。 基本概念&#xff1a; yf(x)在[a,b]上有定义 x…