Как десериализовать данные тега с помощью нового класса DocBin () spaCy - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь сохранить данные и атрибуты Doc в двоичном виде, используя новый класс DocBin () в spacy

Ранее я сохранял данные с использованием pickle, но ищу более эффективный метод.

def serialize_to_disk ():

doc_bin = DocBin(attrs=["LEMMA", "ENT_IOB", "ENT_TYPE", "POS", "TAG"], store_user_data=True)
for doc in nlp.pipe(ff):
    # print(doc.is_parsed) this DOES produce parsed docs
    doc_bin.add(doc)
bytes_data = doc_bin.to_bytes()
print(type(bytes_data))
with open("bytes/test", "wb") as binary_file:
    binary_file.write(bytes_data)

def deserialize_from_disk ():

nlp = spacy.blank("en")
with open("bytes/test", "rb") as f:
    data = f.read()
doc_bin = DocBin().from_bytes(data)
docs = list(doc_bin.get_docs(nlp.vocab))
# this list does not have the tag data. Why?
return docs

когда я вызываю doc.is_parsed в десериализованном списке, он возвращает False. Перед сериализацией возвращается True

1 Ответ

0 голосов
/ 31 октября 2019

Он помечается как проанализированный, только если атрибуты для анализа зависимостей (HEAD и / или DEP) включены в список атрибутов. is_parsed только для анализа зависимостей, а не для всего анализа. Для тегера также есть is_tagged, если вы ищете.

...