0

我正在我的应用程序和Rasa NLU服务器之间构建一个中间件,它可以简化不同的任务,比如创建模型或更新......

我的主要目标是构建一个模型并每次使用一个向旧模型添加一个示例的函数对其进行更新,因此它只需通过添加一个示例来更新旧数据并将其再次提交给 Rasa 服务器。

这是场景:首先,我首先创建一个空模型,因此我 使用此数据
发送一个发布请求localhost:5000/train?project=defaults&fixed_model_name=model1

{
  "rasa_nlu_data": {
    "common_examples": [], 
    "entity_synonyms": [], 
    "regex_features": []
  }
}

所以我得到了这个回应:

“信息”:“训练的新模型:model1”

然后我以相同的请求开始训练,但使用包含新类的新数据greet

{
  "rasa_nlu_data": {
    "common_examples": [
      {
        "text": "hey", 
        "intent": "greet"
      }
    ], 
    "entity_synonyms": [], 
    "regex_features": []
  }
}

这就像我预期的那样工作,如果我添加一个来自同一个班级的例子,培训总是很好

{
  "rasa_nlu_data": {
    "common_examples": [
      {
        "text": "hey", 
        "intent": "greet"
      },{
        "text": "heyy", 
        "intent": "greet"
      }
    ], 
    "entity_synonyms": [], 
    "regex_features": []
  }
}

但是当我尝试以新的不同意图发布其他数据bye

{
  "rasa_nlu_data": {
    "common_examples": [
      {
        "text": "hey", 
        "intent": "greet"
      },
       {
        "text": "heyy", 
        "intent": "greet"
      },
      {
        "text": "goodbye", 
        "intent": "bye"
      }
    ], 
    "entity_synonyms": [], 
    "regex_features": []
  }
}

我收到此错误:

"error": "类的数量必须大于 1;得到 1"

并且如果我通过跳过第二步重做相同的场景,那么我的数据将如下所示:

{
  "rasa_nlu_data": {
    "common_examples": [
      {
        "text": "hey", 
        "intent": "greet"
      },
      {
        "text": "goodbye", 
        "intent": "bye"
      }
    ], 
    "entity_synonyms": [], 
    "regex_features": []
  }
}

提交后我收到此错误:

"error": "n_splits=2 不能大于每个类的成员数。"

我的 Rasa NLU 服务器配置:

我已经检查了那些可能与我的问题相似但不是我要寻找的问题
ValueError: The number of classes have to be greater than one (python)
ValueError: Cannot have number of splits n_splits=3 大于样本数:1

我知道 Rasa 模型需要许多实体来运行解析,但我离我还很远,我只想先构建一个干净的模型

4

1 回答 1

1

Rasa NLU 要求每个意图至少有两个示例。尽管对于任何一种良好的表现,无论如何你都应该拥有更多的东西:)

于 2018-04-13T15:09:13.530 回答