我正在从文本中提取诸如名词计数之类的文本特征。以下功能消耗太多时间。我该如何优化呢?
import spacy
nlp = spacy.load('en')
def get_numeric_features(df):
df['NOUN_COUNT'] = df.apply(lambda x: len([token.pos_ for token in nlp(x['TITLE_TEXT']) if token.pos_ == 'NOUN']),axis=1)
return df
start = time.time()
df1 = get_numeric_features(df1)
end = time.time()
print(end - start)
df1.head()
花费的时间(大约13分钟,共130000行)
1415.4789326190948
答案 0 :(得分:1)
您似乎想从spacy中获得的唯一一件事就是POS标记。如果您禁用配对和实体识别功能,则可以获得一些时间。
在Spacy 1.x中:
nlp = spacy.load('en', parser=False, entity=False)
在Spacy 2.x中:
nlp = spacy.load('en', disable=['ner', 'parser'])
我不知道您的df
是什么数据结构,.apply
是什么,但是您当然可以尝试通过并行化来提高速度。