当我将 displacy.render(doc, style="dep") 的输出保存到 svg 文件时,有一个 TypeError: write() 参数必须是 str,而不是 None

mm6*_*666 5 python spacy

我想用 spaCy 在此处提供的代码保存 spaCy 的可视化:https ://spacy.io/usage/visualizers

这是我的代码:

nlp = spacy.load("en_core_web_sm")
doc = nlp(u"Autonomous cars shift insurance liability toward manufacturers")
svg = spacy.displacy.render(doc, style="dep")
output_path = Path(os.path.join("./", "sentence.svg"))
output_path.open('w', encoding="utf-8").write(svg)
Run Code Online (Sandbox Code Playgroud)

但是当我执行这段代码时,有一个错误:TypeError: write() 参数必须是 str,而不是 None

那么如何保存 spacy.displacy.render 的输出呢?我该如何解决这个错误?

Sof*_* VL 7

在像 PyCharm 这样的 IDE 中执行时,问题中提供的代码工作正常。

但是,displacy.render()在 Jupyter 笔记本中的工作方式略有不同,请参阅此处此处的文档:

如果您正在运行 Jupyter 笔记本,displaCy 将检测到这一点并以准备呈现和导出的格式返回标记。

您可以通过jupyter=Falserender()调用中显式设置来覆盖此自动检测。

  • 官方文档在这里用这个答案解决了这个问题 - [示例:导出依赖解析的 SVG 图形](https://spacy.io/usage/visualizers#examples-export-svg) (我使用了 jupyter 笔记本,这对我有用) (2认同)