【发布时间】:2016-09-15 10:51:05
【问题描述】:
我正在使用 Spacy,它是一个 Python 自然语言处理库,将原始文本解析为这种更复杂的面向对象格式,更具体地说是依赖树。
上述操作执行需要一段时间:我需要加载一个非常昂贵的模型,然后解析非常大量的文本。我希望在后续执行中节省一些时间,以便在完成初始解析后更快地迭代处理数据。
如何在第一次运行后“保存”这些结果,然后在后续运行中更快地重新加载这些预处理版本?
PICKLE: 尝试使用 pickle 时,我在反序列化 Docs/Tokens 类时收到以下错误:
File "spacy/tokens/token.pyx", line 56, in spacy.tokens.token.Token.__cinit__ (spacy/tokens/token.cpp:3868)
TypeError: __cinit__() takes exactly 3 positional arguments (0 given)
谢谢。
【问题讨论】:
-
您解决了吗?你能举一个mcve你在做什么的例子吗?我感兴趣;)
-
感谢您的评论...我确实通过大致执行以下操作解决了这个问题:重新实现 Spacy 的 2 个类,Span(用于句子)和 Token 类。解析原始文本后,我将 Spacy Doc 对象转换为 Span 列表。然后我将该列表腌制到磁盘。有趣的是我还实现了迭代器,因此它是“透明的”,因为我不必更改处理这些对象的其余代码。
-
可能很快就会按照 mcve 原则写出正确的答案。
-
是的,我想看看,如果你愿意,我肯定会投赞成票
标签: python serialization nlp pickle spacy