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

时间:2019-07-09 14:03:05

标签: nlp rasa-nlu rasa-core

我已经用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'}

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

有人可以帮我解决我所做的错误,并在这方面帮助我。

谢谢。

1 个答案:

答案 0 :(得分:0)

在第二个代码段中,您应该从第一个代码段中创建的model_directory加载解释器,但是通过在该代码段中保留未训练的Trainer来覆盖model_directory的未训练模型。因此,您应该从第二个代码段中删除培训师,并直接从路径中加载解释器