我已经用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'}
它与我试图在上面的代码和下面的代码中推断的样本相同,但是我可以对上面的代码有信心,即在训练之前,而不是在保存的模型上进行推断时。
有人可以帮我解决我所做的错误,并在这方面帮助我。
谢谢。
答案 0 :(得分:0)
在第二个代码段中,您应该从第一个代码段中创建的model_directory加载解释器,但是通过在该代码段中保留未训练的Trainer来覆盖model_directory的未训练模型。因此,您应该从第二个代码段中删除培训师,并直接从路径中加载解释器