繁体   English   中英

Rasa NLU - 了解培训数据

[英]Rasa NLU - Understanding Training Data

我很难理解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数据集中看到过这个? 这是默认的餐厅机器人训练数据 ,我没有看到任何重复。

一遍又一遍地重复一个句子将重新强制格式/单词很重要的模型,这是一种过采样的形式。 如果您的训练数据非常少或训练数据非常不平衡,这可能是一件好事。 如果你想要处理许多不同的购买宠物的方式,这可能是一件坏事,因为它可以像我上面提到的那样套装模型。

我是否需要为我打算处理的每种动物重复这一点? 如下?

不,您不需要指定每种类型的动物。 但是尝试为每个意图添加几种类型的动物。 例如,您的训练样本包含以下内容:

 - [cat](animal)
 - [dog](animal)
 - [parrot](animal)
 - buy [cat](animal)
 - I would like to buy a [parrot](animal)

当你有一些背景,例如: I would like to buy a [animal]没有必要定义每种类型的动物。 相似度算法基于其他关键词查找项目。 但是当上下文较少时(单个单词)有必要定义不同类型的用户输入。

Rasa使用StarSpace分类器 建议每个意图使用~10-25个用户样本 ,以便从ChatBot获得合理的响应。

您还可以修改Rasa分类器以添加单词矢量功能(Word2vec或Glove)。 在这种情况下,一些通用性将添加到模型中。 并且可以更容易地检测到类似的概念,例如狗猫。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM