带有杂项生成文本功能会浪费太多时间

时间:2019-05-22 07:41:01

标签: python-3.x feature-extraction spacy natural-language-processing

我正在从文本中提取诸如名词计数之类的文本特征。以下功能消耗太多时间。我该如何优化呢?

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

1 个答案:

答案 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是什么,但是您当然可以尝试通过并行化来提高速度。