以下问题是关于适用于Python的Spacy NLP库,但是如果其他库的答案有很大不同,我将感到惊讶。
Spacy在合理的内存条件下(例如我的情况下为4 GB VM)可以处理的最大文档大小是多少?我曾希望使用Spacy在书籍大小的文档(超过10万个令牌)中搜索匹配项,但是我反复遇到崩溃,指出内存耗尽是其原因。
我是NLP菜鸟-我在学术上知道这些概念,但实际上我不知道期望从最先进的图书馆中学到什么。因此,我不知道我要图书馆做的事情是荒谬的,还是如此简单,这一定是我在环境中搞砸的。
至于为什么我使用NLP库而不是专门针对文档搜索的内容(例如solr),我之所以使用它是因为我想进行基于引理的匹配,而不是基于字符串的匹配。
小智 7
Spacy的max_length限制为1,000,000个字符。我能够解析包含450,000个单词的文档。该限制可以提高。我会根据总大小将文本分为n个块。
v2.x解析器和NER模型每输入100,000个字符需要大约1GB的临时内存。这意味着长文本可能会导致内存分配错误。如果您不使用解析器或NER,则增加
nlp.max_length限制可能是安全的。限制为字符数,因此您可以通过检查来检查您的输入是否过长len(text)。
https://github.com/explosion/spaCy/blob/master/spacy/errors.py