执行.spans赋值时SpaCy报错'Doc对象无spans属性'是什么原因?
问题根因
你使用的spaCy 2.2.4属于v2版本分支,Doc.spans属性是spaCy v3.0及以上版本才新增的接口,旧版本不存在该属性,所以会触发AttributeError。该问题既不是spaCy漏洞,也不是文档内容过时,只是你查看的是最新版官方文档,和当前环境安装的版本不匹配导致的。
解决方案
方案1:升级spaCy到v3及以上版本
Colab默认预装的spaCy版本较低,直接执行以下命令升级即可:
pip install -U spacy # 升级后需要重新下载对应版本的预训练模型 python -m spacy download en_core_web_sm
升级完成后你原有代码可直接正常运行。
方案2:spaCy v2版本兼容写法
如果暂时不想升级版本,可以用Doc.user_data容器存储自定义span,参考写法如下:
import spacy nlp = spacy.load('en_core_web_sm') sentence = "The car with the white wheels was being confiscated by the police when the owner returns from robbing a bank" doc = nlp(sentence) # v2版本无spans属性,用user_data存储自定义span分组 if 'spans' not in doc.user_data: doc.user_data['spans'] = {} doc.user_data['spans']['remove_parts'] = [doc[2:6], doc[9:12]] print(doc.user_data['spans']['remove_parts'])
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

