gpt4 book ai didi

python - 带 Spacy 管道的多线程 NLP

转载 作者:太空狗 更新时间:2023-10-30 02:28:34 25 4
gpt4 key购买 nike

我正在尝试将 Spacy NLP(自然语言处理)管道应用于维基百科转储等大文本文件。这是我基于 Spacy 的 documentation 的代码示例:

from spacy.en import English

input = open("big_file.txt")
big_text= input.read()
input.close()

nlp= English()

out = nlp.pipe([unicode(big_text, errors='ignore')], n_threads=-1)
doc = out.next()

Spacy 一次应用所有 nlp 操作,如 POS 标记、词形还原等。它就像 NLP 的管道,一步处理你需要的一切。应用管道方法应该通过对管道的昂贵部分进行多线程处理来使过程更快。但我没有看到速度有很大提高,我的 CPU 使用率约为 25%(只有 4 个内核中的一个在工作)。我还尝试分块读取文件并增加输入文本的批处理:

out = nlp.pipe([part1, part2, ..., part4], n_threads=-1)

但还是一样的表现。有什么办法可以加快这个过程吗?我怀疑应该启用 OpenMP 功能来编译 Spacy 以利用多线程功能。但是没有关于如何在 Windows 上执行此操作的说明。

最佳答案

我想出了问题所在。 OpenMP 是用于为 spacy pipe() 方法实现多线程的包。默认情况下,MSVC 编译器禁用此选项。在我用 openmp 支持编译源代码后,它工作得很好。我还做了一个 pull request在下一个版本中启用它。因此,对于 0.100.7(最新版本)之后的版本,使用 pipe() 的多线程应该可以在 Windows 上正常工作。

关于python - 带 Spacy 管道的多线程 NLP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36509825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com