Сохранить файл пространственного рендеринга как SVG - PullRequest
1 голос
/ 17 мая 2019

У меня есть следующий код:

import spacy
from spacy import displacy
from pathlib import Path

nlp = spacy.load('en_core_web_sm', parse=True, tag=True, entity=True)

sentence_nlp = nlp("John go home to your family")
svg = displacy.render(sentence_nlp, style="dep", jupyter=True)

output_path = Path("/images/dependency_plot.svg")
output_path.open("w", encoding="utf-8").write(svg)

Я пытаюсь записать отрендеренный файл в файл svg в папке images.Однако я получаю сообщение об ошибке:

Traceback (последний вызов был последним):

Файл "", строка 8, в output_path.open ("w", encoding = "utf")-8 "). Write (svg)

Файл" C: \ Users **** \ AppData \ Local \ Continuum \ miniconda3 \ lib \ pathlib.py ", строка 1183, в open opener = self._opener)

Файл "C: \ Users **** \ AppData \ Local \ Continuum \ miniconda3 \ lib \ pathlib.py", строка 1037, в _opener возвращает self._accessor.open (self, flags,mode)

Файл "C: \ Users **** \ AppData \ Local \ Continuum \ miniconda3 \ lib \ pathlib.py", строка 387, в завернутом возвращаемом strfunc (str (pathobj), * args)FileNotFoundError: [Errno 2] Нет такого файла или каталога: '\ images \ dependency_plot.svg'

Каталог существует, и я не совсем уверен, что делаю неправильно.Я также посмотрел на страницу использования Spacy https://spacy.io/usage/visualizers#jupyter и не мог понять, что я делаю неправильно.Я использую Spyder (если эта информация требуется).Пожалуйста, помогите.

1 Ответ

1 голос
/ 17 мая 2019

Я думаю, что у вас есть 2 ошибки там.Сначала вы должны исправить свой путь - добавьте "."

из:

output_path = Path("/images/dependency_plot.svg")

в:

output_path = Path("./images/dependency_plot.svg")

Вторая ошибка в этой строке

svg = displacy.render(sentence_nlp, style="dep", jupyter=True)

Я думаю, вам нужно удалить jupyter=True, чтобы иметь возможность записать его в файл SVG.В противном случае вы получите сообщение об ошибке типа TypeError: write() argument must be str, not None

Это работает для меня:

import spacy
from spacy import displacy
from pathlib import Path

nlp = spacy.load('en_core_web_sm', parse=True, tag=True, entity=True)

sentence_nlp = nlp("John go home to your family")
svg = displacy.render(sentence_nlp, style="dep")

output_path = Path("./images/dependency_plot.svg") # you can keep there only "dependency_plot.svg" if you want to save it in the same folder where you run the script 
output_path.open("w", encoding="utf-8").write(svg)
...