Python 带空间管的多螺纹NLP

Python 带空间管的多螺纹NLP,python,multithreading,nlp,pipeline,spacy,Python,Multithreading,Nlp,Pipeline,Spacy,我正在尝试将Spacy NLP(自然语言处理)pipline应用于像Wikipedia Dump这样的大型文本文件。以下是我基于Spacy示例的代码: Spacy同时应用所有nlp操作,如词性标记、柠檬化等。它就像一条NLP管道,一步到位就能满足您的所有需求。应用管道方法tho,通过对管道中昂贵的部分进行多线程处理,可以大大加快处理速度。但我看不到速度有什么大的提高,我的CPU使用率在25%左右(只有4个内核中的一个在工作)。我还尝试在多个Chunck中读取文件,并增加输入文本的批次: out

我正在尝试将Spacy NLP(自然语言处理)pipline应用于像Wikipedia Dump这样的大型文本文件。以下是我基于Spacy示例的代码:

Spacy同时应用所有nlp操作,如词性标记、柠檬化等。它就像一条NLP管道,一步到位就能满足您的所有需求。应用管道方法tho,通过对管道中昂贵的部分进行多线程处理,可以大大加快处理速度。但我看不到速度有什么大的提高,我的CPU使用率在25%左右(只有4个内核中的一个在工作)。我还尝试在多个Chunck中读取文件,并增加输入文本的批次:

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

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

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

n_线程
做什么?是否有原因将其设置为小于0?它设置要使用的线程数。我猜-1意味着它将被自动指定,并且不会强制执行特定的数字。您是否尝试将其设置为正数?是的,但否luck@AkshatMahajan
-1
意味着使用所有可用的CPU。嗨,SJ,你知道如何把句子从管道中释放出来吗。我有一个像你这样的大医生。文本字符串。我不知道nlp.pipe(txt)。现在我希望我可以简单地使用。Sent,但它不起作用。如何从管道生成器中提取nlp片段新版本Spacy中的语法已更改。首先加载语言模型,然后将nlp应用于文本。默认模型使用的管道由标记器、解析器和实体识别器组成。每个管道组件返回已处理的文档,然后将其传递给下一个组件
out = nlp.pipe([part1, part2, ..., part4], n_threads=-1)