Метаданные не найдены при использовании Rasa NLU из Python - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь загрузить модель, используя Python 3.7 и Rasa 1.1.4 следующим образом:

from rasa.nlu.model import Interpreter
interpreter = Interpreter.load("./models/generic")

Произошла следующая ошибка:

FileNotFoundError:
[Errno 2] No such file or directory: './models/generic/metadata.json'

Модель обучена с помощью следующей команды:

rasa train nlu --config config.yml
               --nlu data/generic.md
               --out models
               --fixed-model-name generic/model

, который производит только следующий файл, файл метаданных не был создан:

models/generic/model.tar.gz

Какой лучший шаг вперед? Сгенерировать файл метаданных, загрузить модель по-другому?

1 Ответ

1 голос
/ 22 июня 2019

Вы можете распаковать файл model.tar.gz , чтобы предоставить доступ к metadata.json и остальным файлам модели.

Используя образец модели, сгенерированный из rasa init, если я расплачу его:

$ ls models 
20190622-213707.tar.gz
$ cd models
$ mkdir 20190622-213707
$ tar xvf 20190622-213707.tar.gz -C 20190622-213707
$ tree 20190622-213707

Я получу:

20190622-213707
├── core
│   ├── ....
├── fingerprint.json
└── nlu
    ├── checkpoint
    ├── component_1_RegexFeaturizer.pkl
    ├── component_4_CountVectorsFeaturizer.pkl
    ├── component_5_EmbeddingIntentClassifier.ckpt.data-00000-of-00001
    ├── component_5_EmbeddingIntentClassifier.ckpt.index
    ├── component_5_EmbeddingIntentClassifier.ckpt.meta
    ├── component_5_EmbeddingIntentClassifier_encoded_all_intents.pkl
    ├── component_5_EmbeddingIntentClassifier_inv_intent_dict.pkl
    ├── metadata.json
    └── training_data.json

... который показывает metadata.json в папке nlu .
Затем вы можете использовать полный путь к каталогу модели.

interpreter = Interpreter.load("./models/20190622-213707/nlu/")
print(interpreter.parse("hello"))
# {'intent': {'name': 'greet', 'confidence': 0.9470939636230469},  
#  'entities': [], 
#  'intent_ranking': [{'name': 'greet', 'confidence': 0.9470939636230469}, 
#                     {'name': 'deny', 'confidence': 0.17162932455539703}, 
#                     {'name': 'affirm', 'confidence': 0.05398404598236084}, 
#                     {'name': 'mood_great', 'confidence': 0.0}, 
#                     {'name': 'goodbye', 'confidence': 0.0}, 
#                     {'name': 'mood_unhappy', 'confidence': 0.0}], 
#  'text': 'hello'}

Я не очень знаком с rasa, но вы можете смешивать использование командной строки с "ручными" API-интерфейсами Python для написания собственных приложений для тренеров / переводчиков.

Проверьте Trainer класс в rasa.nlu.model. Он имеет метод persist, который сохраняет вашу модель в каталог, но не как tar.gz . Результат Trainer может затем использоваться Interpreter.

...