TorchText Vocab TypeError: Vocab.__init__() got an unexpected keyword argument 'min_freq'

问题描述 投票:0回答:3

我正在研究 CNN 情感分析机器学习模型,该模型使用 Torchtext 库提供的 IMDb 数据集。 在我的一行代码中

vocab = Vocab(counter, min_freq = 1, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))

我收到 min_freq 参数的 TypeError,尽管我确定它是该函数可接受的参数之一。我还收到 UserWarning Lambda 函数不支持 pickle,请改用常规 python 函数或 functools partial。完整代码

from torchtext.datasets import IMDB
from collections import Counter
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import Vocab
tokenizer = get_tokenizer('basic_english')  
train_iter = IMDB(split='train')
test_iter = IMDB(split='test')
counter = Counter()
for (label, line) in train_iter:
    counter.update(tokenizer(line))
vocab = Vocab(counter, min_freq = 1, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))

来源链接 走向数据科学 github 从旧到新

我尝试删除 min_freq 参数并使用默认函数如下

vocab = Vocab(counter, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))

然而,我最终得到了相同类型的错误,但对于 specials 参数而不是 min_freq。

任何帮助将不胜感激

谢谢。

python conv-neural-network tokenize imdb torchtext
3个回答
4
投票

https://github.com/pytorch/text/issues/1445所述,您应该将“Vocab”更改为“vocab”。我认为他们错过了旧笔记本到新笔记本的类型。

正确代码:

from torchtext.datasets import IMDB
from collections import Counter
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import vocab
tokenizer = get_tokenizer('basic_english')  
train_iter = IMDB(split='train')
test_iter = IMDB(split='test')
counter = Counter()
for (label, line) in train_iter:
    counter.update(tokenizer(line))
vocab = vocab(counter, min_freq = 1, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))

我的环境:

  • 蟒蛇 3.9.12
  • 火炬文本 0.12.0
  • 火炬 1.11.0

1
投票

您可以尝试使用 torchtext.legacy.vocab 而不是 torchtext.vocab,这可能会解决问题。这对我有用:

from torchtext.datasets import IMDB
from collections import Counter
from torchtext.data.utils import get_tokenizer
from torchtext.legacy.vocab import vocab

0
投票

对不起,这对我不起作用。 :( Vocab 是对象的正确名称,而 vocab 不是。

我找到的简单解决方案是:“特价”元组已从实验性 Vocab 中删除,不再使用!就是这样。

https://github.com/pytorch/text/issues/890

我的环境:

python 3.8.16
torchtext 0.15.1
pytorch 2.0.0
© www.soinside.com 2019 - 2024. All rights reserved.