0

我正在尝试复制示例餐厅搜索。我在 Windows 64 / python 3.6 Anaconda 4.4 上运行它。我的 config.json 看起来像这样。

    {
      "name": null,
      "pipeline": ["nlp_spacy", "tokenizer_spacy", "intent_entity_featurizer_regex", "intent_featurizer_spacy", "ner_crf", "ner_synonyms",  "intent_classifier_sklearn"],
      "language": "en",
      "num_threads": 4,
      "path": "D:/rasa-nlu-working/models",
      "response_log": "logs",
      "config": "config.json",
      "log_level": "INFO",
      "port": 5000,
      "data": null,
      "emulate": null,
      "log_file": null,
      "mitie_file": "data/total_word_feature_extractor.dat",
      "spacy_model_name": null,
      "server_model_dirs": null,
      "token": null,
      "max_number_of_ngrams": 7,
      "duckling_dimensions": ["time", "number", "money","ordinal","duration"],
      "entity_crf_BILOU_flag": true,
      "entity_crf_features": [
        ["low", "title", "upper", "pos", "pos2"],
        ["bias", "low", "word3", "word2", "upper", "title", "digit", "pos", "pos2", "pattern"],
        ["low", "title", "upper", "pos", "pos2"]]
    }

我正在尝试使用 jupyter notebook 进行训练和预测。火车步骤顺利进行。正如预期的那样创建模型。但是当我尝试使用以下代码进行预测时。

from rasa_nlu.model import Metadata, Interpreter

# where `model_directory points to the folder the model is persisted in
interpreter = Interpreter.load('D:/rasa-nlu-working/models/model_20170904-132507', RasaNLUConfig("D:/rasa-nlu-working/config.json"))

我收到以下错误。

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-9f85d157325d> in <module>()
      4 
      5 # where `model_directory points to the folder the model is persisted in
----> 6 interpreter = Interpreter.load('D:/rasa-nlu-working/models/model_20170904-132507', RasaNLUConfig("D:/rasa-nlu-working/config.json"))

D:\Anaconda3\lib\site-packages\rasa_nlu\model.py in load(model_metadata, config, component_builder, skip_valdation)
    206         # Before instantiating the component classes, lets check if all required packages are available
    207         if not skip_valdation:
--> 208             components.validate_requirements(model_metadata.pipeline)
    209 
    210         for component_name in model_metadata.pipeline:

AttributeError: 'str' object has no attribute 'pipeline'

但是当我在 HTTP 服务器模式下运行相同的配置时,它可以正常工作。请帮助我解决问题。

4

2 回答 2

2

我已经在评论中要求进行一些澄清,但我想我还是会开始写一个答案。

您发布的错误实际上不是您的配置文件的问题。看起来 metadata.json 没有被正确加载和/或解析。metadata.json 有点像模型训练时配置文件的快照。

以下是操作顺序:

  1. 每当您调用 Interpreter.load 时,首先要做的事情之一就是加载 metadata.json 文件。看这里。
  2. 接下来在 Metadata.load 中,我们尝试加载和解析该文件。看这里
  3. 回到解释器,我们尝试从返回的元数据中获取管道。看这里。

那就是你的错误发生的地方。由于某种原因, metadata.json 文件加载时没有错误,但未正确解析。

几个可能的错误:

  • metadata.json 是格式不正确的 JSON。不确定这将如何发生,但您能否提供 metadata.json 以便我们查看。
  • 存在未正确处理的 Windows 编码问题。

您还特别提到了http API。http API 可以加载这个模型并用它来解析吗?启动服务器后,您应该可以调用以下命令对其进行测试。

curl -XPOST localhost:5000/parse -d '{"q":"hello there", "model": "model_20170904-132507"}'

如果 HTTP 服务器可以加载/解析它,那么我们知道它很可能是您的 python 代码中的特定内容。

相反,如果可行,那么您应该尝试使用 http API 训练数据,并查看通过 http api 训练 metadata.json 文件与您的 python 实现有什么不同。

随着您提供更多信息,将会有更多信息。

于 2017-09-04T15:14:36.320 回答
0

我在使用 python 中的 rasa 时遇到了同样的问题,并且在谷歌搜索相同的错误时偶然发现了这个线程,但正如 @Caleb Keller 上面提到的,将 rasa 版本从 0.9.0 更改为 0.10.0a5 解决了这个问题。谢谢您的帮助。

于 2017-09-23T11:41:58.300 回答