5 machine-learning rasa-nlu rasa-core
我很难理解 rasa nlu 中的训练数据。假设我想要获得训练数据,其中有人告知某人他们可以购买的动物。为了清楚起见,我将使用 Markdown 格式:
假设用户正在回答一个问题:
“你想买什么动物?”
表达你想买东西的方式有很多种。就看下面的例子:
##intent:inform
- [cat](animal)
- buy [cat](animal)
- I would like to buy a [cat](animal)
我需要对我打算处理的每种动物重复此操作吗?像下面这样?
##intent:inform
- [cat](animal)
- [dog](animal)
- [parrot](animal)
- buy [cat](animal)
- buy [dog](animal)
- buy [parrot](animal)
- I would like to buy a [cat](animal)
- I would like to buy a [dog](animal)
- I would like to buy a [parrot](animal)
另外,我注意到在 rasa 的餐厅机器人中,他们有时会一遍又一遍地重复相同的示例,有时多达七次,如下所示:
##intent:inform
- [cat](animal)
- [cat](animal)
- [cat](animal)
- [cat](animal)
- [cat](animal)
- buy [cat](animal)
- I would like to buy a [cat](animal)
为什么有必要?这对理解有什么影响?在同一位置多次出现同一个单词如何表明这是一个适当的响应,特别是如果您有类似下面的内容,其中同一实体的不同值重复了相同的次数?
##intent:inform
- [cat](animal)
- [cat](animal)
- [cat](animal)
- [cat](animal)
- [cat](animal)
- buy [cat](animal)
- I would like to buy a [cat](animal)
- [dog](animal)
- [dog](animal)
- [dog](animal)
- [dog](animal)
- [dog](animal)
- buy [dog](animal)
- I would like to buy a [dog](animal)
谢谢您,如有任何建议,我们将不胜感激。
表达你想买东西的方式有很多种。
你可能会感到惊讶:
我相信这个列表还会有更多的例子。话虽这么说,Rasa NLU 应该能够学习和适应少数示例。除某些例外情况外,adopt可能与示例没有很强的关系buy,但作为示例可能很重要。
我需要对我打算处理的每种动物重复此操作吗?像下面这样?
不,那没有必要。每个动物值都是一个实体,Rasa 默认使用 CRF 进行实体识别,这就是您在这里讨论的内容。CRF 更多的是关于句子的结构而不是单词的值。您可以在文档和代码中查看 CRF 的功能:
  # Available features are:
  # ``low``, ``title``, ``suffix5``, ``suffix3``, ``suffix2``,
  # ``suffix1``, ``pos``, ``pos2``, ``prefix5``, ``prefix2``,
  # ``bias``, ``upper`` and ``digit``
  features: [["low", "title"], ["bias", "suffix3"], ["upper", "pos", "pos2"]]
话虽这么说,为实体使用不同的值可能是获取额外训练数据的好方法。您可以使用chatito等工具从模式生成训练数据。但要小心重复模式,因为您可能会过度拟合模型,使其无法泛化到您训练的模式之外。
他们有时一遍又一遍地重复同一个例子
您在 Rasa 数据集中看到过这个吗?这是默认的餐厅机器人训练数据,我没有看到任何重复。
一遍又一遍地重复单个句子将强化模型的格式/单词的重要性,这是一种过采样的形式。如果您的训练数据很少或训练数据高度不平衡,这可能是一件好事。如果您想要处理多种不同的购买宠物的方式,这可能是一件坏事,因为它可能会过度拟合模型,正如我上面提到的。