Python spaCy:尝试加载序列化文档时出错

Python spaCy:尝试加载序列化文档时出错,python,nlp,spacy,Python,Nlp,Spacy,我正在尝试序列化/反序列化spaCy文档(安装程序是Windows 7,Anaconda),但出现错误。我找不到任何解释。下面是一段代码及其生成的错误: import spacy nlp = spacy.load('en') text = 'This is a test.' doc = nlp(text) fout = 'test.spacy' # <-- according to the API for Doc.to_disk(), this needs to be a director

我正在尝试序列化/反序列化spaCy文档(安装程序是Windows 7,Anaconda),但出现错误。我找不到任何解释。下面是一段代码及其生成的错误:

import spacy
nlp = spacy.load('en')
text = 'This is a test.'
doc = nlp(text)
fout = 'test.spacy' # <-- according to the API for Doc.to_disk(), this needs to be a directory (but for me, spaCy writes a file)
doc.to_disk(fout)
doc.from_disk(fout)
Traceback (most recent call last):

  File "<ipython-input-7-aa22bf1b9689>", line 1, in <module>
    doc.from_disk(fout)

  File "doc.pyx", line 763, in spacy.tokens.doc.Doc.from_disk

  File "doc.pyx", line 806, in spacy.tokens.doc.Doc.from_bytes

ValueError: [E033] Cannot load into non-empty Doc of length 5.
你知道为什么会这样吗

doc.to_disk(fout)
一定是

目录的路径,如果目录不存在,将创建该路径。 路径可以是字符串或类似路径的对象

作为中spaCy状态的文档

尝试将
fout
更改为一个目录,这可能会奏效

编辑: spacy文档中的示例:

对于
文件到磁盘

doc.to_disk('/path/to/doc')
对于磁盘上的
文档

from spacy.tokens import Doc
from spacy.vocab import Vocab
doc = Doc(Vocab()).from_disk('/path/to/doc')

谢谢你指出这一点-我已经相应地更新了我的帖子-不幸的是,我仍然有问题。我可能应该在另一台机器上测试。这就是说,与文档中所述相反,当我运行此代码时,spaCy会编写一个文件而不是一个目录。@ongenz我看到您使用的是anaconda,您得到了PermissionError。我在我的linux机器上遇到了这样一个问题。我的解决方案是删除conda并手动安装和下载所有内容;在我的例子中,pip命令来自命令行。我建议尝试在没有anaconda的机器上运行此代码,或者尝试在您当前的机器上删除anaconda,这取决于您。我尝试在我的Mac/Python 3.6/spaCy 2.012上运行此代码,但得到了相同的错误。您能运行此代码而不出错吗?
doc.to_disk(fout)
doc.to_disk('/path/to/doc')
from spacy.tokens import Doc
from spacy.vocab import Vocab
doc = Doc(Vocab()).from_disk('/path/to/doc')