【问题标题】:Is there a way to apply Spacy en_core_web_sm to data in chunks?有没有办法将 Spacy en_core_web_sm 应用于块数据?
【发布时间】:2021-10-30 11:14:48
【问题描述】:

我有这个包含 300.000 篇文章的庞大数据集,我想使用 Spacy 的 en_core_web_sm 进行标记化、POS 标记、词形还原、句法依赖和 NER。但是我的电脑总是用完内存。有没有办法可以更改我的代码以分块处理数据?

这是数据集:https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/ULHLCB

这是我正在使用的:

df_2018 = pd.read_csv("2018_articles.csv")
import spacy
nlp_spacy_core_web_sm = spacy.load("en_core_web_sm")
df_18_salon["spacy_sm"] = df_18_salon["content"].apply(lambda x: nlp_spacy_core_web_sm(x))

大约 30 分钟后,我收到内存不足错误。

【问题讨论】:

    标签: python pandas performance out-of-memory spacy


    【解决方案1】:

    问题是您无法同时将所有文档(spaCy 输出)保存在内存中,因此您不能只将输出放在数据框的列中。另请注意,这不是 spaCy 问题,而是编程问题。

    您需要编写一个 for 循环并将您的处理放入其中:

    for text in texts:
        doc = nlp(text)
        ... do something with the doc ...
    

    如果你这样做,那么文档将在 for 循环的下一次迭代中被清理,所以它不会占用内存。

    您可能还想查看spaCy speed FAQ

    【讨论】:

      猜你喜欢
      • 2019-11-15
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 2021-03-27
      相关资源
      最近更新 更多