微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

fastai.text NameError: name 'BaseTokenizer' 未定义

如何解决fastai.text NameError: name 'BaseTokenizer' 未定义

我是 fastai 的初学者,正在尝试构建一个参考 Using RoBERTa with fast.ai for NLP 的模型。

我试图自定义标记器(如下面的代码):

from fastai.text import *
from fastai.metrics import *
from transformers import RobertaTokenizer

class FastAiRobertaTokenizer(Basetokenizer):
    """Wrapper around RobertaTokenizer to be compatible with fastai"""
    def __init__(self,tokenizer: RobertaTokenizer,max_seq_len: int=128,**kwargs): 
        self._pretrained_tokenizer = tokenizer
        self.max_seq_len = max_seq_len 
    def __call__(self,*args,**kwargs): 
        return self 
    def tokenizer(self,t:str) -> List[str]: 
        """Adds Roberta bos and eos tokens and limits the maximum sequence length""" 
        return [config.start_tok] + self._pretrained_tokenizer.tokenize(t)[:self.max_seq_len - 2] + [config.end_tok]

但收到一条错误消息:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-6-41070aae72d1> in <module>
----> 1 class FastAiRobertaTokenizer(Basetokenizer):
      2     """Wrapper around RobertaTokenizer to be compatible with fastai"""
      3     def __init__(self,**kwargs):
      4         self._pretrained_tokenizer = tokenizer
      5         self.max_seq_len = max_seq_len

NameError: name 'Basetokenizer' is not defined
  • fastai 版本:2.1.8
  • 火炬版本:1.7.1
  • 变形金刚版本:3.4.0

之前有人遇到过同样的问题吗?

解决方法

哦,我终于知道我应该将 from fastai.text import * 改为 from fastai.text.all import *。没有错误消息 NameError: name 'BaseTokenizer' is not defined

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。