小编Gab*_*ela的帖子

为大文档批量运行 spaCy nlp() 管道

我正在尝试在一系列总计 20,211,676 个字符的成绩单上运行 nlp() 管道。我在一台 8GB RAM 的机器上运行。我对 Python 和 spaCy 都很陌生,但是语料库比较工具和句子分块功能非常适合我现在正在处理的论文。

我试过的

我已经开始导入英语管道并删除 'ner' 以获得更快的速度

nlp = spacy.load('en_core_web_lg', disable = ['ner'])
Run Code Online (Sandbox Code Playgroud)

然后我将语料库分解为 800,000 个字符,因为 spaCy 建议每 GB 100,000 个字符

split_text = [text[i:i+800000] for i in range(0, len(text), 800000)]
Run Code Online (Sandbox Code Playgroud)

通过管道循环这些片段并创建一个 nlp 对象列表

nlp_text = []
for piece in split_text:
    piece = nlp(piece)
    nlp_text.append(piece)
Run Code Online (Sandbox Code Playgroud)

经过长时间的等待后才有效。注意:我尝试通过“nlp.max_length”提高阈值,但任何高于 1,200,000 的值都会中断我的 Python 会话。

现在我已经通过管道传输了所有内容,我需要将所有内容连接回去,因为我最终需要将整个文档与另一个文档(大小大致相同)进行比较。此外,我有兴趣在整个文档中找到最常用的名词短语,而不仅仅是在人为的 800,000 个字符中。

nlp_text = ''.join(nlp_text)
Run Code Online (Sandbox Code Playgroud)

但是我收到错误消息:

类型错误:序列项 0:预期的 str 实例,找到了 spacy.tokens.doc.Doc

我意识到我可以转向字符串和连接,但这会破坏使用“令牌”对象的目的。

我需要的

我可以做些什么(除了使用 AWS 昂贵的 CPU …

nlp python-3.x spacy

5
推荐指数
1
解决办法
2100
查看次数

标签 统计

nlp ×1

python-3.x ×1

spacy ×1