Результаты десериализации Spacy - PullRequest
0 голосов
/ 22 марта 2019

Мне нужно запустить алгоритм для большого количества текстовых файлов.Чтобы предварительно обработать их, я использую 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.

Любая информация по этой теме приветствуется.

...