如何加载 rasa 模型并在其之上进行 运行 推理

how to load rasa model and run inference on top of it

我已经用 100 条正确标记的记录训练了我的 rasa 模型,示例代码如下所示。

from rasa_nlu.training_data  import load_data
from rasa_nlu.config import RasaNLUModelConfig
from rasa_nlu.model import Trainer
from rasa_nlu import config
from rasa_nlu.model import Metadata, Interpreter

train_data = load_data('rasa_dataset.json')
trainer = Trainer(config.load("config_spacy.yaml"))

trainer.train(train_data)
model_directory = trainer.persist('projects/')
interpreter = Interpreter.load(model_directory)
print(interpreter.parse(u"ji bilkul han ji bilkul isliye payment nahi kara tha humne kitne mein likha aapko this rupay discount de dia to phir aap jama kar dena"))

当我执行此操作时,我得到类似这样的输出

{'intent': None, 'entities': [{'start': 93, 'end': 108, 'value': 'discount de dia', 'entity': 'Waiver else Wont Pay', 'confidence': 0.4628098345881119, 'extractor': 'CRFEntityExtractor'}], 'intent_ranking': [], 'text': 'ji bilkul han ji bilkul isliye payment nahi kara tha humne kitne mein likha aapko this rupay discount de dia to phir aap jama kar dena'}

但是当 运行 只是在我执行以下代码时对模型进行推断时。

$ cat inference_rasa.py
from rasa_nlu.training_data  import load_data
from rasa_nlu.config import RasaNLUModelConfig
from rasa_nlu.model import Trainer
from rasa_nlu import config
from rasa_nlu.model import Metadata, Interpreter

trainer = Trainer(config.load("config_spacy.yaml"))
model_directory = trainer.persist('/home/vz/goutham_Openseq/ner/rasa/projects/default/model_20190706-004103/')
interpreter = Interpreter.load(model_directory)
print(interpreter.parse(u"ji bilkul han ji bilkul isliye payment nahi kara tha humne kitne mein likha aapko this rupay discount de dia to phir aap jama kar dena"))

我得到如下输出。

(gp) vz@andromeda:~/goutham_Openseq/ner/rasa$ python inference_rasa.py
{'intent': None, 'entities': [], 'intent_ranking': [], 'text': 'ji bilkul han ji bilkul isliye payment nahi kara tha humne kitne mein likha aapko this rupay discount de dia to phir aap jama kar dena'}

它与我在上面的代码和下面的代码中试图推断的样本相同,但我可以对上面的代码有信心,即在训练之前,而不是当我只是 运行 对保存的推断时型号。

任何人都可以帮助我解决我正在犯的错误并在这方面帮助我。

提前致谢。

在第二个代码段中,您应该从第一个代码段中创建的 model_directory 加载解释器,但是您通过在其中保留未经训练的 Trainer 来使用未经训练的模型覆盖 model_directory。所以你应该从第二个片段中删除训练器并直接从路径加载解释器