You can not train a Rasa model using spacy

1

I tried to create my first chatbot on my own with the help of Rasa and this tutorial .

p>

He proposes to use Spacy , a library for advanced processing of natural language in Python

mike@mike-thinks:~/Programing/Rasa_tutorial/rasa_nlu$ python -m rasa_nlu.train -c config_spacy.json
usage: train.py [-h] [-o PATH] (-d DATA | -u URL) -c CONFIG [-t NUM_THREADS]
                [--project PROJECT] [--fixed_model_name FIXED_MODEL_NAME]
                [--storage STORAGE] [--debug] [-v]
train.py: error: one of the arguments -d/--data -u/--url is required
mike@mike-thinks:~/Programing/Rasa_tutorial/rasa_nlu$ python3 -m rasa_nlu.train -c config_spacy.json
Traceback (most recent call last):
  File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/mike/Programing/Rasa_tutorial/rasa_nlu/rasa_nlu/train.py", line 14, in <module>
    from rasa_nlu import utils, config
  File "/home/mike/Programing/Rasa_tutorial/rasa_nlu/rasa_nlu/utils/__init__.py", line 19, in <module>
    from future.utils import PY3
ImportError: No module named 'future'

While trying to analyze my problem very "veterinary clinic" I looked at the file train.py of rasal_nlu

from __future__ import a...

import argparse
import logging

import typing
from typing ...

from rasa_nlu import ...

...

def create_argument_parser():
    parser = argparse.ArgumentParser(
            description='train a custom language parser')

    parser.add_argument('-o', '--path',
                        default=None,
                        help="Path where model files will be saved")

    group = parser.add_mutually_exclusive_group(required=True)

    group.add_argument('-d', '--data',
                       default=None,
                       help="Location of the training data. For JSON and "
                            "markdown data, this can either be a single file "
                            "or a directory containing multiple training "
                            "data files.")

    group.add_argument('-u', '--url',
                       default=None,
                       help="URL from which to retrieve training data.")

    parser.add_argument('-c', '--config',
                        required=True,
                        help="Rasa NLU configuration file")

    ...
    return parser


class TrainingException(Exception):
        ...

        return self.message


def create_persistor(persistor):
        ...

        return None


def do_train_in_worker(cfg,  # type: RasaNLUModelConfig
                       data,  # type: Text
                       path,  # type: Text
                       project=None,  # type: Optional[Text]
                       fixed_model_name=None,  # type: Optional[Text]
                       storage=None,  # type: Text
                       component_builder=None
                       # type: Optional[ComponentBuilder]
                       ):
        ...


def do_train(cfg,  # type: RasaNLUModelConfig
             data,  # type: Text
             path=None,  # type: Optional[Text]
             project=None,  # type: Optional[Text]
             fixed_model_name=None,  # type: Optional[Text]
             storage=None,  # type: Optional[Text]
             component_builder=None,  # type: Optional[ComponentBuilder]
             url=None,  # type: Optional[Text]
             **kwargs  # type: Any
        ...

    return trainer, interpreter, persisted_path


if __name__ == '__main__':
    cmdline_args = create_argument_parser().parse_args()

    utils.configure_colored_logging(cmdline_args.loglevel)

    do_train(config.load(cmdline_args.config),
             cmdline_args.data,
             cmdline_args.path,
             cmdline_args.project,
             cmdline_args.fixed_model_name,
             cmdline_args.storage,
             url=cmdline_args.url,
             num_threads=cmdline_args.num_threads)
logger.info("Finished training")

I came to the conclusion that I had to give .JSON to the train.py file as an argument. However, when I gave him a complete file:

mike@mike-thinks:~/Programing/Rasa_tutorial/rasa_nlu/data/test$ ls
demo-rasa-noents.json  dialogflow_en_converted_to_rasa.json  luis_converted_to_rasa.json  multiple_files_json
demo-rasa-small.json   dialogflow_es_converted_to_rasa.json  markdown_single_sections     multiple_files_markdown
demo-rasa-zh.json      json_converted_to_md.md               md_converted_to_json.json    wit_converted_to_rasa.json

he did not accept it:

mike@mike-thinks:~/Programing/Rasa_tutorial/rasa_nlu$ python -m rasa_nlu.train -d/--data ~/Programing/Rasa_tutorial/rasa_nlu/data/test/*.json -c config_spacy.json 
usage: train.py [-h] [-o PATH] (-d DATA | -u URL) -c CONFIG [-t NUM_THREADS]
                [--project PROJECT] [--fixed_model_name FIXED_MODEL_NAME]
                [--storage STORAGE] [--debug] [-v]
train.py: error: unrecognized arguments: /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/demo-rasa-noents.json /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/demo-rasa-small.json /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/demo-rasa-zh.json /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/dialogflow_en_converted_to_rasa.json /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/dialogflow_es_converted_to_rasa.json /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/luis_converted_to_rasa.json /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/md_converted_to_json.json /home/mike/Programing/Rasa_tutorial/rasa_nlu/data/test/wit_converted_to_rasa.json
    
asked by ThePassenger 11.05.2018 в 01:19
source

1 answer

2

As fedorqui said, there are typographical errors in the tutorial. It is best to follow the official tutorial .

To train a rasa model it is necessary to give:

python -m rasa_nlu.train \
    --config #configuración del modelo de aprendizaje automático \
    --data # archivo o carpeta que contiene los datos de entrenamiento.
           # También puede extraer datos de entrenamiento de una URL usando --url en su lugar\
    --path # ruta de salida donde el modelo persiste para

For example the following works for me:

python -m rasa_nlu.train \
    --config sample_configs/config_spacy.yml \
    --data data/examples/rasa/demo-rasa.json \
    --path projects
    
answered by 11.05.2018 / 14:10
source