请看下面的代码。在读取了5000行的csv文件后,我得到了错误消息:
nlp = spacy.blank("en")
nlp.max_length = 3000000
nlp.add_pipe(
"text_categorizer",
config={
"data": data,
"model": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
"device": "cpu"
}
) ValueError:长度为2508705的E088文本超过最大值1000000。解析器和NER模型在输入中每10万个字符需要大约1GB的临时内存。这意味着长文本可能会导致内存分配错误。如果您没有使用解析器或NER,那么增加
nlp.max_length限制可能是安全的。限制是以字符数为限的,因此可以通过检查len(text)来检查输入是否太长。
有什么办法解决这个问题吗?
提前感谢!
发布于 2022-07-21 13:39:24
设置nlp.max_length通常可以工作(直到内存用完为止):
import spacy
nlp = spacy.blank("en")
nlp.max_length = 10_000_000
doc = nlp("a " * 2_000_000)
assert len(doc.text) == 4_000_000但是,我怀疑sentence-transformers模型是否能够处理这么长的文本?就语言注释而言,使用这么长的单个文档是不太可能的。
https://stackoverflow.com/questions/73064081
复制相似问题