spacy - 如何在 spaCy 的 Doc.to_disk(path, exclude=['user_data']) 中指定要排除的键/值对?
问题描述
我的 nlp 管道有一些存储 3 个项目的文档扩展名(一个文件名字符串和两个映射不可序列化对象的字典)。我只想排除用户数据中不可序列化的键/值对,但保留文件名。
doc.to_disk(path, exclude=['user_data'])
按预期工作,不包括所有用户数据。显然有一些选项可以排除 'user_data_keys' 或 'user_data_values' 但我找不到它们的用法的解释,而且我想不出任何好的理由来存储没有值的所有键或没有值的所有值钥匙!
我想排除 doc.user_data 中某些字段的键和值。如果这是可能的,它是如何完成的?
解决方案
您需要指定要排除的键或值。
https://spacy.io/api/doc#serialization-fields
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)
推荐阅读
- javascript - 通过检查两个元素从数组中获取重复值
- parallel-processing - 流 API Java 8 并行处理
- c++ - Qt - 右键单击编辑按钮文本
- angular - Ionic 3 - 在第一次加载应用程序时从服务器端数据设置全局变量
- android - AutoCompleteTextView 设置高度以填充父级
- spring - Spring 集成 - 通道适配器与网关 (AMQP)
- apache - 本地主机网站/虚拟主机强制 www 前缀
- python - Virtualenv - IOError:[Errno 1] 不允许操作:'/bin/easy_install'
- php - 如何正确编号表中指示列中的行
- mysql - 通过掩码(正则表达式)从 MySQL 中获取 Substr