Как ускорить вызов Spacy nlp? - PullRequest
0 голосов
/ 28 мая 2020

Мне нужно обработать сотни тысяч текстов. Я обнаружил, что дольше всего длится следующее:

nlp = English()
ruler = EntityRuler(nlp)
patterns = [...]
ruler.add_patterns(patterns)
nlp.add_pipe(ruler)
...
#This line takes longer than I would like
doc = nlp(whole_chat)

Конечно, у меня много шаблонов. Но есть ли способ ускорить это? У меня только трубка-линейка сущностей, других нет.

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

По умолчанию Spacy применяет к вашему документу множество моделей: POS tagger, синтаксический анализатор c, NER, классификатор документов и, возможно, что-то еще.

Возможно, вам не нужны некоторые из них модели. Если это так, вы можете отключить их, что ускорит ваш конвейер. Вы делаете это при создании конвейера, например:

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

Или, следуя ответу @ oleg-ivanytskiy, вы можете отключить эти модели в вызове nlp.pipe():

nlp = spacy.load("en_core_web_sm")
for doc in nlp.pipe(texts, disable=["tagger", "parser"]):
    # Do something with the doc here
    print([(ent.text, ent.label_) for ent in doc.ents])
0 голосов
/ 29 мая 2020

Используйте nlp.pipe() для обработки нескольких текстов. Это быстрее и эффективнее ( документация )

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