spaCy v3加载'en'模型报错 torchtext调用spacy分词失败如何解决
解决方案
1. 废弃短名的适配处理
spaCy v3及以上版本已经完全废弃en短名模型加载方式,原有python -m spacy download en命令下载的是适配spaCy v2的旧模型,无法在v3版本中使用,需下载完整命名的官方模型。
2. 适配Jupyter环境的模型下载
Jupyter内核使用的Python环境往往和终端默认Python环境不一致,直接在终端执行下载命令无法让Jupyter加载到模型,需在Jupyter单元格中执行对应下载命令:
!python -m spacy download en_core_web_sm
执行下载命令后必须重启Jupyter内核,否则新安装的模型不会被当前运行的内核识别。
3. 修正Field初始化代码
有两种写法可选:
写法1:显式自定义分词函数
import spacy from torchtext.data import Field # 如导入Field报错,说明你使用的是新版torchtext,改用legacy导入: # from torchtext.legacy.data import Field # 加载已下载的模型 nlp = spacy.load("en_core_web_sm") def spacy_tokenize(text): return [token.text for token in nlp(text)] text_field = Field(tokenize=spacy_tokenize, lower=True, include_lengths=True, batch_first=True)
写法2:调用torchtext内置工具生成分词器
from torchtext.data.utils import get_tokenizer from torchtext.data import Field # 同上,新版torchtext需导入legacy下的Field tokenizer = get_tokenizer('spacy', language='en_core_web_sm') text_field = Field(tokenize=tokenizer, lower=True, include_lengths=True, batch_first=True)
内容的提问来源于stack exchange,提问作者user17153759
相关产品推荐
相关产品推荐

