0

我只是想按照Spacy 的文档将文档的子部分标记为跨度

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)

doc.spans['remove_parts'] = [doc[2:6], doc[9:12]]
doc.spans['remove_parts']

这看起来很简单,但是 Spacy 返回以下错误(并将其归因于第二行,即赋值):

AttributeError: 'spacy.tokens.doc.Doc' object has no attribute 'spans'

我根本看不到发生了什么。这是 Spacy 的错误吗?spans即使它仍在文档中,它是否已被删除?如果不是,我错过了什么?

PD:我正在为此使用 Colab。并spacy.info显示:

spaCy version    2.2.4                         
Location         /usr/local/lib/python3.7/dist-packages/spacy
Platform         Linux-4.19.112+-x86_64-with-Ubuntu-18.04-bionic
Python version   3.7.10                        
Models           en    
4

1 回答 1

1

这段代码:

nlp = English()
text = "The car with the white wheels was being confiscated by the police when the owner returns from robbing a bank"
doc = nlp(text)
doc.spans['remove_parts'] = [doc[2:6], doc[9:12]]
doc.spans['remove_parts']

从 spaCy v3.0 开始应该可以正常工作。如果没有 - 您能否验证您实际上是从 colab 中正确的虚拟环境(而不是使用 spaCy v2 的不同环境)运行代码?我们之前已经看到 Colab 仍然会访问系统上较旧的 spaCy 安装的问题,而不是从正确的 venv 获取代码。要仔细检查,您可以尝试直接在 Python 控制台中运行代码,而不是通过 Colab。

于 2021-05-10T22:00:28.673 回答