Spacy engli sh языковая модель загружается слишком долго - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать чат-бота, используя python, и для этого я использую Spacy для распознавания сущностей, поэтому я установил предварительно построенную языковую модель Spacy engli sh (среду) для извлечения сущностей из высказываний пользователя, но Проблема в том, что когда я загружаю модель для извлечения элементов из высказываний пользователя, загрузка модели занимает 31 секунду, потому что в моем случае время чат-бота действительно имеет значение. Нужен совет от всех вас, есть ли альтернатива? любая помощь будет действительно оценена

Вот код, который извлекает сущности из высказываний пользователя:

import spacy
import time
def extractEntity(userUtterance):
    ''' This funtion returns a list of tuple a tuple contain 
        (entity Name, Entity Type)    
        We use pre build spacy english language model to extract entities
    '''
    start_time = time.process_time()
    nlp = spacy.load("en")
    print(time.process_time() - start_time, "seconds") # prints the time taken to load the model
    docx = nlp(userUtterance)
    listOfTyples = [(word.text, spacy.explain(word.label_)) for word in docx.ents]
    return listOfTyples

if __name__ == "__main__":
    print(extractEntity("I want to go to London, can you book my flight for wednesday"))

Вывод:

31.0 seconds
[('London', 'Countries, cities, states'), ('wednesday', 'Absolute or relative dates or periods')]

1 Ответ

2 голосов
/ 07 мая 2020

Это очень медленно, потому что загружает модель для каждого предложения:

import spacy

def dostuff(text):
    nlp = spacy.load("en")
    return nlp(text)

Это не медленно, потому что загружает модель один раз и повторно использует ее для каждого вызова функции:

import spacy

nlp = spacy.load("en")

def dostuff(text):
    return nlp(text)

Вы должны изменить ваше приложение, чтобы оно выглядело как во втором примере. Это не c специально для spaCy, но будет иметь место для любой модели, которую вы решите использовать.

...