torchtext 踩坑

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安装包,在进行安装。

  • 注意,spacy 及其语言包(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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容