使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)