处理文本 nlp.pipe 需要几个小时
processing text with nlp.pipe taking hours
我的数据集中有 300.000 篇新闻文章,我正在使用 en_core_web_sm 进行 POS 标记、解析和 ner 提取。但是,这需要花费数小时,而且似乎永远无法完成。
代码运行正常,但速度很慢。当我对我的数据集 650 篇文章进行采样时,需要 37 秒,而 6500 篇文章需要 6 分钟。但是我真的需要在合理的时间内完成我的 300.000 篇文章的完整数据集...
texts = df["content"]
for doc in nlp.pipe(texts, n_process=2, batch_size=100, disable=["senter","attribute_ruler" "lemmatizer"]):
df["spacy_sm"] = texts
有没有办法显着加快速度,还是我遗漏了什么?
在 CPU 上,您通常可以使用更大的批量大小,并且可以使用更多的进程,具体取决于您的 CPU。 sm
/md
/lg
模型的默认批量大小当前为 256
,但只要您不 运行内存。对于许多任务,1000
或更高的批量大小在 CPU 上是完全合理的,但这实际上取决于管道组件和文本长度。
只要您的文本长度变化不大,您就可以计算出一个进程给定批量大小所需的大致 RAM,然后您可以估计可用 RAM 可以容纳多少个进程批量大小。
我的数据集中有 300.000 篇新闻文章,我正在使用 en_core_web_sm 进行 POS 标记、解析和 ner 提取。但是,这需要花费数小时,而且似乎永远无法完成。
代码运行正常,但速度很慢。当我对我的数据集 650 篇文章进行采样时,需要 37 秒,而 6500 篇文章需要 6 分钟。但是我真的需要在合理的时间内完成我的 300.000 篇文章的完整数据集...
texts = df["content"]
for doc in nlp.pipe(texts, n_process=2, batch_size=100, disable=["senter","attribute_ruler" "lemmatizer"]):
df["spacy_sm"] = texts
有没有办法显着加快速度,还是我遗漏了什么?
在 CPU 上,您通常可以使用更大的批量大小,并且可以使用更多的进程,具体取决于您的 CPU。 sm
/md
/lg
模型的默认批量大小当前为 256
,但只要您不 运行内存。对于许多任务,1000
或更高的批量大小在 CPU 上是完全合理的,但这实际上取决于管道组件和文本长度。
只要您的文本长度变化不大,您就可以计算出一个进程给定批量大小所需的大致 RAM,然后您可以估计可用 RAM 可以容纳多少个进程批量大小。