Мне нужно запустить алгоритм для большого количества текстовых файлов.Чтобы предварительно обработать их, я использую Spacy, который имеет предварительно обученные модели на разных языках.Поскольку предварительно обработанные результаты используются в разных частях алгоритмов, лучше сохранить их на диск один раз и загрузить их много раз.Тем не менее, метод десериализации Spacy делает ошибку.Я написал простой код для отображения ошибки:
de_nlp=spacy.load("de_core_news_sm",disable=['ner', 'parser'])
de_nlp.add_pipe(de_nlp.create_pipe('sentencizer'))
doc = de_nlp(text_file_content)
for ix, sent in enumerate(doc.sents, 1):
print("--Sentence number {}: {}".format(ix, sent))
lemma = [w.lemma_ for w in sent]
print(f"Lemma ==> {lemma}")
#Serialization and Deserilization
doc.to_disk("/tmp/test_result.bin")
new_doc = Doc(Vocab()).from_disk("/tmp/test_result.bin")
for ix, sent in enumerate(new_doc.sents, 1):
print("--Sentence number {}: {}".format(ix, sent))
lemma = [w.lemma_ for w in sent]
print(f"Lemma ==> {lemma}")
Однако в приведенном выше примере кода появляется следующая ошибка:
Traceback (most recent call last): File "/tmp/test_result.bin", line 14, in <module>
for ix, sent in enumerate(new_doc.sents, 1):
File "doc.pyx", line 535, in __get__
ValueError: [E030] Sentence boundaries unset. You can add the 'sentencizer' component to the pipeline with: nlp.add_pipe(nlp.create_pipe('sentencizer')) Alternatively, add the dependency parser, or set sentence boundaries by setting doc[i].is_sent_start.
Используемая версия Spacy - 2.0.18.
Любая информация по этой теме приветствуется.