如何加速 Python Dataframe 中系列的词形还原

问题描述 投票:0回答:1

我得到了这一行,它在 python 中对一系列 pandas DataFrame 进行了词形还原。

 res = serie.parallel_apply(lambda x :' '.join([d.lemma_ for d in self.nlp_spacy(x)]))

我在这个数据框中得到了 200 000 行数据,并对这个系列进行了其他处理。而且所有这些治疗时间都很长。有没有办法加速这种特定的治疗。

我听说 DataFrame 的矢量化操作更快。有办法这样做吗? apply 方法也很长,因为它检查所有值。我怎样才能避免使用它?

python dataframe optimization series lemmatization
1个回答
0
投票

我知道两种加速此类操作的策略。

  1. 使用Dask。 Dask 是一个 Python 并行计算库,与 pandas 集成得很好。

  2. 批处理。您不必逐字词形还原,您可以批量处理它们。

这样的代码可以帮助你:

import dask.dataframe as dd
from dask.diagnostics import ProgressBar
import spacy

nlp = self.nlp_spacy

def lemmatize_text(text):
    return ' '.join([token.lemma_ for token in nlp(text)])

# pandas series --> dask series
# You have to adjust npartions as needed based on your machine
ddf = dd.from_pandas(serie, npartitions=4)

# parallel function
with ProgressBar():
    res = ddf.map_partitions(lambda series: series.apply(lemmatize_text)).compute(scheduler='processes')
© www.soinside.com 2019 - 2024. All rights reserved.