Я успешно получил свой код для определения правильного намерения, но никакие объекты не появляются, хотя я предоставил некоторые объекты в своих обучающих данных.
data.json:
{ “common_examples”: [
{ “text”:“Hello”,
“intent”:“greeting”,
“entities”:[] },
{ “text”:“Hi”,
“intent”:“greeting”,
“entities”:[] },
{ “text”:“I want a recipe for my lunch”,
“intent”:“get_recipe”,
“entities”:[
{ “start”:22,
“end”: 28,
“value”: “lunch”,
“entity”: “mealtime” }
]
},
{ “text”:“Can you give me a recipe for dinner tonight?”,
“intent”:“get_recipe”,
“entities”:[
{ “start”:29,
“end”:35,
“value”: “dinner”,
“entity”: “mealtime” }
]
},
{ “text”:“I don’t know what to have for lunch”,
“intent”:“get_recipe”,
“entities”:[
{ “start”:31,
“end”: 35,
“value”: “lunch”,
“entity”: “mealtime” }
]
}
},
}
],
"regex_features": [],
"entity_synonyms":[]
}
}
Это всего лишь отрывок. Всего я создал 15 примеров для цели get_recipe. Мне просто нужно, чтобы выбрать «время приема пищи» из сообщения, отправленного боту.
Мой config.yml выглядит следующим образом:
language: “en”
pipeline:
-name: “nlp_spacy”
-name: “tokenizer_spacy”
-name: “intent_entity_featurizer_regex”
-name: “intent_featurizer_spacy”
-name: “ner_crf”
-name: “ner_synonyms”
-name: “intent_featurizer_count_vectors”
-name: “intent_classifier_tensorflow_embedding”
и это код, который я использую для обучения бота:
from rasa_nlu.training_data import load_data
from rasa_nlu.model import Trainer
from rasa_nlu import config
from rasa_nlu.model import Interpreter
def train_bot(data_json,config_file,model_dir):
training_data = load_data(data_json)
trainer = Trainer(config.load(config_file))
trainer.train(training_data)
model_directory=trainer.persist(model_dir,fixed_model_name=‘vegabot’)
Это нормально.
И код, который я запускаю, чтобы предсказать намерение:
def predict_intent(text):
interpreter = Interpreter.load(‘models/nlu/default/vegabot’)
print(interpreter.parse(text))
Что дает результат:
{‘intent’: {‘name’: ‘get_recipe’, ‘confidence’: 0.9701309204101562}, ‘entities’: [], ‘intent_ranking’: [{‘name’: ‘get_recipe’, ‘confidence’: 0.9701309204101562}, {‘name’: ‘greeting’, ‘confidence’: 0.03588612377643585}], ‘text’: ‘can you find me a recipe for dinner’}
Как видите, намерение правильное, но объекты пустые [], и я не могу понять, почему. Кажется, я не получаю никаких ошибок. Все работает нормально, кроме этого!
Я также провел оценку и получил:
- intent examples: 12 (2 distinct intents)
- Found intents: ‘greeting’, ‘get_recipe’
- entity examples: 10 (1 distinct entities)
- found entities: ‘mealtime’ which all looks fine.
Итак, очевидно, что он знает, что нужно высматривать объект приема пищи, но почему он не берет его из моих тестовых сообщений?
например Мне нужен рецепт на обед. Можете ли вы дать мне рецепт на время ужина? так далее
Я использую RASA NLU версии 0.14.
Любая помощь будет принята с благодарностью. Спасибо.
ner_crf
извлекает объекты на основе позиционных подсказок. вы можете попробовать добавить больше примеров аналогичного типа. например> I don’t know what to have for lunch. > I do not know what to have for lunch. > I don't really know what to have for lunch
дайте мне знать, как это происходит. - person mvs   schedule 13.03.2019