Как указать, какие пары ключ / значение следует исключить в DoC * Do c .to_disk (path, exclude = ['user_data'])? - PullRequest
0 голосов
/ 14 января 2020

Мой конвейер nlp имеет некоторые расширения do c, в которых хранятся 3 элемента (строка для имени файла и два запроса, которые отображают несериализуемые объекты). Я хотел бы только исключить несериализуемые пары ключ / значение в пользовательских данных, но сохранить имя файла.

doc.to_disk(path, exclude=['user_data']) 

работает как положено, за исключением всех пользовательских данных. Очевидно, есть варианты вместо этого исключить либо user_data_keys, либо user_data_values, но я не нахожу объяснения их использования, и, кроме того, я не могу придумать вескую причину для хранения всех ключей без значений или всех значений без keys!

Я бы хотел исключить ключи и значения только определенных полей в do c .user_data. Если это возможно, как это сделать?

1 Ответ

0 голосов
/ 15 января 2020

Вам нужно будет указать, какие ключи или значения вы хотите исключить.

https://spacy.io/api/doc#serialization -поля

data = doc.to_bytes(exclude=["text", "tensor"])
doc.from_disk("./doc.bin", exclude=["user_data"])

По этой теме здесь , вы можете попробовать следующую работу:

    def remove_unserializable_results(doc):
        doc.user_data = {}
        for x in dir(doc._):
            if x in ['get', 'set', 'has']: continue
            setattr(doc._, x, None)
        for token in doc:
            for x in dir(token._):
                if x in ['get', 'set', 'has']: continue
                setattr(token._, x, None)
        return doc

nlp.add_pipe(remove_unserializable_results, last=True)
...