python - 多个 SpaCy 文档对象并希望将它们组合成一个对象
问题描述
我正在尝试标记詹姆士国王圣经的文本文件,但是当我尝试它时出现内存错误。所以我把文本分成了多个对象。现在我想使用 spaCy 对对象进行标记,然后将它们重新组合成一个 doc 对象。我看到其他人谈论类似的问题并转换为数组,然后在组合数组后返回文档。这是否可以解决我的问题或以后创建新问题?
我尝试运行它,但 colab 和我的计算机都没有支持它的 RAM。
nlp_spacy = spacy.load('en')
kjv_bible = gutenberg.raw('bible-kjv.txt')
#pattern for bracketed text titles
bracks = "[\[].*?[\]]"
kjv_bible = re.sub(bracks, "", kjv_bible)
kjv_bible = ' '.join(kjv_bible.split())
len(kjv_bible)
kjv_bible_doc = nlp_spacy(kjv_bible)
ValueError Traceback (most recent call
last)
<ipython-input-19-385936fadd40> in <module>()
----> 1 kjv_bible_doc = nlp_spacy(kjv_bible)
/usr/local/lib/python3.6/dist-packages/spacy/language.py in
__call__(self, text, disable, component_cfg)
378 if len(text) > self.max_length:
379 raise ValueError(
--> 380 Errors.E088.format(length=len(text),
max_length=self.max_length)
381 )
382 doc = self.make_doc(text)
ValueError: [E088] Text of length 4305663 exceeds maximum of 1000000.
The v2.x parser and NER models require roughly 1GB of temporary memory
per 100,000 characters in the input. This means long texts may cause
memory allocation errors. If you're not using the parser or NER, it's
probably safe to increase the `nlp.max_length` limit. The limit is in
number of characters, so you can check whether your inputs are too
long by checking `len(text)`.
nlp.max_length = 4305663
kjv_bible_doc = nlp_spacy(kjv_bible)
由于 RAM 内存导致笔记本电脑崩溃
这行得通吗
np_array = doc.to_array([LOWER, POS, ENT_TYPE, IS_ALPHA])
np_array.extend(np_array2)
doc2.from_array([LOWER, POS, ENT_TYPE, IS_ALPHA], np_array)
解决方案
如果增加max_length
,它将崩溃,除非您明确禁用使用大量内存的组件(解析器和 NER)。如果您只使用分词器,则可以在加载模型时禁用除分词器之外的所有内容:
nlp = spacy.load('en', disable=['tagger', 'parser', 'ner'])
推荐阅读
- c# - 如何在 SOAP 请求中设置对象的值之前检查对象是否存在于数组中?
- tailwind-css - 使用 postcss-import 将 tailwindcss v1 添加到基本的 react-static 站点
- javascript - 反应谷歌地图标记删除
- php - 重新索引数组值
- c# - Plugin.InAppBilling.PurchaseAsync 永远不会返回
- spring - spring-session 与 hazelcast-wm 兼容吗?
- amazon-web-services - 购买 AWS 预留实例时如何选择区域/可用区?
- web - 须藤 npm 安装 webpack -g
- javascript - 如何在 PrestaShop 1.7 中使用 javascript 更改当前产品封面照片
- jquery - 仅在 navbar-collapse 显示时使引导导航栏保持粘性