Using rasa NLU from python¶
Training Time¶
For creating your models, you can follow the same instructions as non-python users. Or, you can train directly in python with a script like the following (using spacy):
import spacy
from rasa_nlu.training_data import TrainingData
from rasa_nlu.trainers.spacy_sklearn_trainer import SpacySklearnTrainer
nlp = spacy.load("en")
training_data = TrainingData('data/examples/rasa/demo-rasa.json', 'spacy_sklearn', nlp)
trainer = SpacySklearnTrainer('en')
trainer.train(training_data)
trainer.persist('./')
Prediction Time¶
You can call rasa NLU directly from your python script.
You just have to instantiate either the SpacySklearnInterpreter or the MITIEInterpreter.
The metadata.json
in your model dir contains the necessary info, so you can just do
from rasa_nlu.interpreters.spacy_sklearn_interpreter import SpacySklearnInterpreter
from rasa_nlu.model import Metadata
import spacy
metadata = Metadata.load("/path/to/model_dir")
nlp = spacy.load("en")
interpreter = SpacySklearnInterpreter.load(metadata, nlp=nlp)
You can then run:
interpreter.parse(u"The text I want to understand")
which returns the same dict
as the HTTP api would (without emulation).