Это должно несколько ускорить его -
import spacy
import textacy
nlp = spacy.load('en_core_web_sm')
def extract_SVO(text):
tuples = textacy.extract.subject_verb_object_triples(text)
if tuples:
tuples_to_list = list(tuples)
tuples_list.append(tuples_to_list)
tuples_list = []
sp500news['title'] = sp500news['title'].apply(nlp)
_ = sp500news['title'].apply(extract_SVO)
print(tuples_list)
Пояснение
В реализации OP, nlp = spacy.load('en_core_web_sm')
вызывается так изнутри функции, которую он загружает каждый раз.Я чувствую, что это самое большое узкое место.Это можно убрать, и это должно ускорить его.
Кроме того, tuple
приведение к list
может произойти, только если кортеж не пуст.