我有這個包含 300.000 篇文章的龐大資料集,我想使用 Spacy 的 en_core_web_sm 來進行標記化、詞性標注、詞形還原、句法依賴和 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 分鐘后,我收到記憶體不足錯誤。
uj5u.com熱心網友回復:
問題是您無法同時將所有檔案(spaCy 輸出)保存在記憶體中,因此您不能將輸出放在資料幀的一列中。另請注意,這不是 spaCy 問題,這是編程問題。
您需要撰寫一個 for 回圈并將您的處理放入其中:
for text in texts:
doc = nlp(text)
... do something with the doc ...
如果你這樣做,那么檔案將在 for 回圈的下一次迭代中被清理,所以它不會占用記憶體。
您可能還想查看spaCy 速度常見問題解答。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346078.html
