我正在尝试使用python创建聊天机器人,为此我正在使用Spacy进行实体识别,因此我安装了预构建的Spacy英语模型(中)以从用户话语中提取实体,但是问题是当我加载时从用户话语中提取实体的模型加载模型需要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')]
import spacy
def dostuff(text):
nlp = spacy.load("en")
return nlp(text)
这并不慢,因为它会加载一次模型并在每个函数调用中重新使用它:
import spacy nlp = spacy.load("en") def dostuff(text): return nlp(text)
您应该将应用程序更改为类似于第二个示例。这并非特定于spaCy,但您选择使用的任何类型的模型都是如此。