如何修改requirements.txt解决profanity-filter无法加载Spacy en模型的问题
问题原因
你的判断是正确的:profanity-filter默认会检索名为en的Spacy模型,你当前安装的en_core_web_sm没有自动注册en别名,因此触发报错。python -m spacy download en的本质就是下载对应版本的en_core_web_sm并自动创建en的别名映射。
解决方案
这里提供两种不需要手动执行spacy download命令的解决方式:
方案1:修改少量初始化代码(最简便,无需调整requirements.txt)
直接在初始化ProfanityFilter时显式指定英文对应的模型名称即可复用已安装的en_core_web_sm:
from profanity_filter import ProfanityFilter # 显式绑定英文语言对应使用en_core_web_sm模型 pf = ProfanityFilter(spacy_models={"en": "en_core_web_sm"}) test = "This is bullshit" test = pf.censor_word(test) print(test)
方案2:仅修改requirements.txt,无需调整业务代码
利用pip的egg别名机制,给已安装的en_core_web_sm额外注册en的别名,将requirements.txt修改为如下内容即可:
spacy>=2.2.0,<3.0.0 https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.1/en_core_web_sm-2.3.1.tar.gz#egg=en_core_web_sm https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.1/en_core_web_sm-2.3.1.tar.gz#egg=en
修改后重新执行pip install -r requirements.txt,即可同时注册en_core_web_sm和en两个模型名称,profanity-filter就能正常检索到英文模型。
内容的提问来源于stack exchange,提问作者Matteo Pinna
相关产品推荐
相关产品推荐

