以下问题是关于Python的Spacy NLP库,但如果其他库的答案存在很大差异,我会感到惊讶。
Spacy在合理的内存条件下可以处理的最大文档大小是多少(例如我的情况下是4 GB VM)?我原本希望使用Spacy来搜索书本大小的文档(100K +令牌)中的匹配,但我反复得到崩溃,指出内存耗尽是原因。
我是一名NLP菜鸟 - 我在学术上了解这些概念,但我真的不知道在实践中对最先进的图书馆有什么期望。所以我不知道我要求图书馆做的事情是非常困难,还是那么容易,我必须在我的环境中搞砸了。
至于为什么我使用NLP库而不是专门针对文档搜索的东西(例如solr),我正在使用它,因为我想做基于引理的匹配,而不是基于字符串的。 / p>
答案 0 :(得分:3)
Spacy的max_length限制为1,000,000个字符。我能够用450,000个单词解析一个文件就好了。可以提高限额。我会根据总大小将文本分成n个块。
v2.x解析器和NER模型需要大约1GB的临时内存 输入中每100,000个字符。这意味着长文本可能会导致 内存分配错误。如果您没有使用解析器或NER,那就是 可能安全地增加
nlp.max_length
限制。限制在 字符数,因此您可以检查您的输入是否也是如此 检查len(text)
。
https://github.com/explosion/spaCy/blob/master/spacy/errors.py