Получение этой ошибки во время обучения - ValueError: элемент последовательности обновления словаря # 0 имеет длину 1;2 требуется - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь обучить модель для чат-бота и создал следующие файлы.

Файл конфигурации модели config_spacy.json

{
    "pipeline": "spacy_sklearn",
    "path":"./models/nlu",
    "data":"./data/data.json"
}`

Файл обучения nlu_model.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

def train_nlu(data, config, model_dir):
    training_data = load_data(data)
    trainer = Trainer(RasaNLUModelConfig(config))
    trainer.train(training_data)
    model_directory = trainer.persist(model_dir, fixed_model_name = 'weathernlu')

if __name__ == '__main__':
    train_nlu('./data/data.json','config_spacy.json','./models/nlu')

При запуске файла я получаю следующую ошибку.

Traceback (последний вызов был последним): Файл "nlu_model.py", строка 13, в train_nlu ('./ data / data.json', 'config_spacy.json', '. / models / nlu') Файл "nlu_model.py", строка 8, в train_nlu trainer = Trainer (RasaNLUModelConfig (config))) Файл "C: \ anaconda3 \ lib \ site-packages \ rasa_nlu \ config.py", строка 103, в init self.override (значения_конфигурации) Файл "C: \ anaconda3 \ lib \ site-packages \ rasa_nlu \ config.py ", строка 180, в переопределенном self. dict .update (config) ValueError: элемент последовательности обновления словаря # 0 имеет длину 1;Требуется 2

Я много искал, но не могу исправить эту ошибку.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я думаю,

trainer = Trainer(RasaNLUModelConfig(configs))

должно быть

trainer = Trainer(config.load(configs)), потому что load() содержит read_yaml_file(filename), который вы не получите, напрямую позвонив по номеру RasaNLUModelConfig()поправьте меня, если я ошибаюсь, я тоже учусь:)

ваш окончательный код должен выглядеть как

def train_nlu(data, configs, model_dir):
     training_data = load_data(data)
     trainer = Trainer(config.load(configs))
     trainer.train(training_data)
     model_directory = trainer.persist(model_dir, fixed_model_name = 'weathernlu')
0 голосов
/ 21 декабря 2018

Это может быть проблема с данными тренировки, которые вы используете.Убедитесь, что для правильной работы классификатора имеется минимум два намерения, по крайней мере, с двумя примерами в каждом.

...