使用 torchtext.data.TabularDataset 将存储在 G 盘中的 csv 数据加载到 torchtext 格式时出现“没有这样的文件”,

Posted

技术标签:

【中文标题】使用 torchtext.data.TabularDataset 将存储在 G 盘中的 csv 数据加载到 torchtext 格式时出现“没有这样的文件”,【英文标题】:"No such file" when loading csv data stored in G drive to torchtext format using torchtext.data.TabularDataset, 【发布时间】:2020-07-18 22:30:48 【问题描述】:

我在 G 盘中存储了一个 csv 文件,并尝试将其加载到 torchtext data.TabularDataset。错误信息是“FileNotFoundError: [Errno 2] No such file or directory: 'https://.....'”

g盘中的csv文件不能直接加载到torchtext TabularDataset吗?

这里是代码。我还公开了colab notebook,并公开了数据。

import torch
from torchtext import data, datasets

!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

TEXT = data.Field(tokenize = 'spacy', batch_first = True, lower=False)  
LABEL = data.LabelField(sequential=False, dtype = torch.float) 

train = data.TabularDataset(path = 'https://drive.google.com/open?id=1eWMjusU3H34m0uml5SdJvYX6gQuB8zta', 
                            format = 'csv', 
                            fields = [('Insult', LABEL), (None, None), ('Comment', TEXT)], 
                            skip_header=False)

【问题讨论】:

【参考方案1】:

假设您有能力下载此 CSV 文件。我建议您在 torchtext 上使用内置功能:download_from_url

import os
import torch
from torchtext import data, datasets
from torchtext.utils import download_from_url

# download the file
CSV_FILENAME = 'data.csv'
CSV_GDRIVE_URL = 'https://drive.google.com/uc?export=download&id=1eWMjusU3H34m0uml5SdJvYX6gQuB8zta'
download_from_url(CSV_GDRIVE_URL, CSV_FILENAME)

TEXT = data.Field(tokenize = 'spacy', batch_first = True, lower=False)  #from torchtext import data
LABEL = data.LabelField(sequential=False, dtype = torch.float) 

# if you're on Colab, you'll need this /content
train = data.TabularDataset(path=os.path.join('/content', CSV_FILENAME),
                            format='csv',
                            fields = [('Insult', LABEL), (None, None), ('Comment', TEXT)],
                            skip_header=False )

请注意,Google Drive 链接不应是带有open?id 的链接,而是将其更改为uc?export=download&id

【讨论】:

谢谢贝瑞尔。您的代码可以正常工作而不会出现错误消息。但是当我尝试使用 '''print(vars(train[0]),vars(train[1]),vars(train[2])) ''' 打印零和第一个示例时,它打印出:'Insult': 'null', 'Comment': ['null'] 'Insult': 'null', 'Comment': ['1'] 'Insult': '6', '评论':['1']。此外,当尝试在其上构建 vob 时,会出现错误消息 AttributeError: 'Example' object has no attribute 'Comment'。我在之前分享过的colab notebook上试过了。 @CassZhao 但这是一个不同的问题,应该在不同的问题中提出。如果这个答案有帮助,请考虑投票。请注意,定义了skip_header=False。我不知道您的 CSV 格式。最初的问题是关于从谷歌驱动器读取 csv。 @CassZhao 不确定您为什么删除了已接受的答案...您提供了错误的 CSV 文件链接。我现在给你修好了。而不是open 应该是uc?export=download 感谢您的回答,它仅适用于该文件。如果更改 id(仅更改 id,这意味着,如您所说,使用 uc?export=download&id 而不是 open?id),它会再次获取 html。 csv 文件有什么需要我注意的吗? @CassZhao 如果我没记错的话,链接共享应该是公开活动的。除此之外,我认为此选项不适用于目录。

以上是关于使用 torchtext.data.TabularDataset 将存储在 G 盘中的 csv 数据加载到 torchtext 格式时出现“没有这样的文件”,的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)