我正在尝试将 Spacy NLP(自然语言处理)管道应用于像 Wikipedia Dump 这样的大文本文件。这是我基于 Spacy文档示例的代码:
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 上执行此操作的说明。