Создание текстовых объектов с пространством занимает слишком много времени - PullRequest
0 голосов
/ 22 мая 2019

Я извлекаю текстовые функции, такие как количество существительных из текста. Следующая функция отнимает слишком много времени. Как я могу оптимизировать это?

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()

Время, которое потребовалось (около 23 минут для 130000 строк)

1415.4789326190948

1 Ответ

1 голос
/ 25 мая 2019

Кажется, единственное, что вам нужно от spacy - это POS-теги.Вы можете выиграть некоторое время, если отключите распознавание и распознавание объектов.

В Spacy 1.x:

nlp = spacy.load('en', parser=False, entity=False)

В Spacy 2.x:

nlp = spacy.load('en', disable=['ner', 'parser'])

Iне знаю, какова структура данных вашего df и что делает .apply, но вы, конечно, можете попытаться получить некоторое ускорение с помощью некоторого распараллеливания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...