看起来之前声明字段、示例和使用 BucketIterator 的范式已被弃用,并将在 0.8 中转移到旧版。但是,我似乎无法找到不使用 Field 的自定义数据集的新范式示例(例如,不是 torch.datasets 中包含的那些)。谁能给我指出一个最新的例子?
弃用参考:
torchtext.data.TabularDataset可以从 TSV/JSON/CSV 文件创建,然后它可以用于从 Glove、FastText 或任何其他嵌入构建词汇表。但我的要求是torchtext.data.TabularDataset从 alist或 a直接创建一个dict。
通过读取 TSV 文件当前实现的代码
self.RAW = data.RawField()
self.TEXT = data.Field(batch_first=True)
self.LABEL = data.Field(sequential=False, unk_token=None)
self.train, self.dev, self.test = data.TabularDataset.splits(
path='.data/quora',
train='train.tsv',
validation='dev.tsv',
test='test.tsv',
format='tsv',
fields=[('label', self.LABEL),
('q1', self.TEXT),
('q2', self.TEXT),
('id', self.RAW)])
self.TEXT.build_vocab(self.train, self.dev, self.test, vectors=GloVe(name='840B', dim=300))
self.LABEL.build_vocab(self.train)
sort_key = lambda x: data.interleave_keys(len(x.q1), len(x.q2))
self.train_iter, self.dev_iter, self.test_iter = \
data.BucketIterator.splits((self.train, self.dev, self.test),
batch_sizes=[args.batch_size] * 3,
device=args.gpu,
sort_key=sort_key)
Run Code Online (Sandbox Code Playgroud)
这是从文件中读取数据的当前工作代码。所以,为了直接从列表/快译通我创建数据集试图像内置的功能Examples.fromDict或Examples.fromList但随后当来到最后一个for循环,它抛出一个错误AttributeError: 'BucketIterator' object has no attribute 'q1'
这不是一个新问题,我找到了没有任何解决方案的参考文献first和second。我是 PyTorch 的新手,AttributeError: 'Field' object has no attribute 'vocab'在PyTorch使用torchtext.
继本书之后,Deep Learning with PyTorch我编写了与书中解释的相同的示例。
这是片段:
from torchtext import data
from torchtext import datasets
from torchtext.vocab import GloVe
TEXT = data.Field(lower=True, batch_first=True, fix_length=20)
LABEL = data.Field(sequential=False)
train, test = datasets.IMDB.splits(TEXT, LABEL)
print("train.fields:", train.fields)
print()
print(vars(train[0])) # prints the object
TEXT.build_vocab(train, vectors=GloVe(name="6B", dim=300),
max_size=10000, min_freq=10)
# VOCABULARY
# print(TEXT.vocab.freqs) # freq
# print(TEXT.vocab.vectors) # vectors
# print(TEXT.vocab.stoi) # Index
train_iter, test_iter …Run Code Online (Sandbox Code Playgroud) torchtext 0.4.0 库存在(可以通过 pip 下载),但conda install torchtext=0.4.0不起作用。如何将 torchtext 下载到 anaconda 环境?
我正在尝试在 colab 中运行本教程。
但是,当我尝试导入一堆模块时:
import io
import torch
from torchtext.utils import download_from_url
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator
Run Code Online (Sandbox Code Playgroud)
它给我的错误extract_archive和build_vocab_from_iterator:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-5-a24e72502dbc> in <module>()
1 import io
2 import torch
----> 3 from torchtext.utils import download_from_url, extract_archive
4 from torchtext.data.utils import get_tokenizer
5 from torchtext.vocab import build_vocab_from_iterator
ImportError: cannot import name 'extract_archive'
ImportError Traceback (most recent call last)
<ipython-input-4-02a401fd241b> in <module>()
3 from torchtext.utils import download_from_url
4 …Run Code Online (Sandbox Code Playgroud) 我有64位Windows 10操作系统,我已经安装了python 3.6.8,我已经使用pip安装了torch和torchtext。火炬版本为1.2.0
我正在尝试使用以下代码加载AG_NEWS数据集:
import torch
import torchtext
from torchtext.datasets import text_classification
NGRAMS = 2
import os
if not os.path.isdir('./.data'):
os.mkdir('./.data')
train_dataset, test_dataset = text_classification.DATASETS['AG_NEWS'](root='./.data', ngrams=NGRAMS, vocab=None)
Run Code Online (Sandbox Code Playgroud)
在上述代码的最后一条语句中,我得到以下错误:
---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
<ipython-input-1-7e8544fdaaf6> in <module>
6 if not os.path.isdir('./.data'):
7 os.mkdir('./.data')
----> 8 train_dataset, test_dataset = text_classification.DATASETS['AG_NEWS'](root='./.data', ngrams=NGRAMS, vocab=None)
9 # BATCH_SIZE = 16
10 # device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
c:\users\pramodp\appdata\local\programs\python\python36\lib\site-packages\torchtext\datasets\text_classification.py in AG_NEWS(*args, **kwargs)
168 """
169
--> 170 return _setup_datasets(*(("AG_NEWS",) + args), **kwargs) …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中有两列(评论和情感)。我正在使用pytorch和torchtext库预处理数据。是否可以使用数据帧作为源以torchtext读取数据?我正在寻找类似但不是的东西
data.TabularDataset.splits(path='./data')
Run Code Online (Sandbox Code Playgroud)
我已经对数据执行了一些操作(干净,更改为所需的格式),最终数据在数据框中。
如果不是torchtext,那么您建议使用什么其他软件包来帮助预处理dataram中存在的文本数据。我在网上找不到任何东西。任何帮助都会很棒。

据我所知,从torchtext 0.9.0开始,torchtext.data和torchtext.dataset被移至torchtext.legacy
但我的 0.12.0 torchtext 不能,import torchtext.legacy
但它可以import torchtext.data
我尝试是否再次移动到 torchtext.data 但我找不到任何文档
I am working on a CNN Sentiment analysis machine learning model which uses the IMDb dataset provided by the Torchtext library. On one of my lines of code
vocab = Vocab(counter, min_freq = 1, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))
I am getting a TypeError for the min_freq argument even though I am certain that it is one of the accepted arguments for the function. I am also getting UserWarning Lambda function is not supported for pickle, please use regular python function …
我正在尝试使用 torchtext 来处理测试数据,但是,当我运行以下代码时,出现错误:“AttributeError:模块‘torchtext’没有属性‘legacy’”。谁能指导我这里的问题是什么?我正在使用 python 3.10.4。谢谢
import pandas as pd
import torch
import torchtext
import spacy
def prep_data(file_path):
TEXT=torchtext.legacy.data.Field(tokenize='spacy', tokenizer_language='en_core_web_sm')
LABEL=torchtext.legacy.data.LabelField(dtype=torch.long)
fields=[('clean_text', TEXT), ('label',LABEL)]
dataset = torchtext.legacy.data.TabularDataset(
path=file_path, format='csv',
skip_header=True, fields=fields)
print(dataset.examples[0])
if __name__=="__main__":
train_path='./data/train.csv'
test_path='./data/test.csv'
prep_data(train_path)
Run Code Online (Sandbox Code Playgroud)