torchtext 踩坑

2021-11-29  本文已影响0人  QXPLUS
torchtext源码路径

NLP入门遇到的一些坑(持续更新 ……)

1. 安装spacy和en_core_web_sm

python -m spacy download en_core_web_sm
python -m spacy download en
安装spacy和en_core_web_sm的时候基本都会出错,这事,可以考虑直接下载en_core_web_sm安装包,在进行安装。

!pip install spacy==3.0.6 -U
!wget https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz
!pip install en_core_web_sm-3.0.0.tar.gz

2. torchtext.leagcy 遗留包导致的问题

from torchtext import data, datasets
TEXT = data.Field(tokenize='spacy')
LABEL = data.LabelField(dtype=torch.float)
会提示,torchtext.data 没有Field函数的问题,去打开源码,发现确实没有,

torchtext.data

但是发现这个功能存在于torchtext.legacy.data.field中


torchtext.legacy.data

torchtext.legacy.data.init 源码的倒入模块行可以看出,在这里具有常用的Field 和 LabelField函数

torchtext.legacy.data.__init__

于是,将导入模块的代码,修改为:
from torchtext.legacy import data, datasets
接下来继续跑上面的代码,还是报错,OSError: [E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.
于是去查了下torchtext.legacy.data.field.Field. _init_ 函数,发现tokenizer_language默认设置为“en”,而我们安装的是en_core_web_sm, 所以需要指定tokenizer_language = “en_core_web_sm”,

1638169986(1).png
于是,下面的代码就可以正常运行了。
from torchtext.legacy import data, datasets
# from torchtext import data,datasets

TEXT = data.Field(tokenize='spacy',
                  tokenizer_language='en_core_web_sm')
LABEL = data.LabelField(dtype=torch.float)
上一篇 下一篇

猜你喜欢

热点阅读