Rasa NLU – 理解训练数据

我在理解rasa nlu中的训练数据时遇到了困难。假设我想创建一些训练数据,内容是关于某人告知他人可以购买的动物。为了清晰起见,我将使用markdown格式:

假设用户是在回答一个问题:

“你想买什么样的动物?”

表达想要购买某物的不同方式是有限的。请看下面的例子:

##intent:inform- [cat](animal)- buy [cat](animal)- 我想要买一只[cat](animal)

我需要为每一种我打算处理的动物重复这个过程吗?就像下面这样?

##intent:inform- [cat](animal)- [dog](animal)- [parrot](animal)- buy [cat](animal)- buy [dog](animal)- buy [parrot](animal)- 我想要买一只[cat](animal)- 我想要买一只[dog](animal)- 我想要买一只[parrot](animal)

另外,我注意到在rasa的餐厅机器人中,他们有时会重复同一个例子,有时甚至重复七次,就像下面这样:

##intent:inform- [cat](animal)- [cat](animal)- [cat](animal)- [cat](animal)- [cat](animal)- buy [cat](animal)- 我想要买一只[cat](animal)

为什么这是必要的?这对理解有什么影响?在同一个位置重复同一个单词多次,为什么会表明这是一个合适的回应,特别是当你有像下面这样的情况时,不同的值在同一个实体中重复了相同次数?

##intent:inform- [cat](animal)- [cat](animal)- [cat](animal)- [cat](animal)- [cat](animal)- buy [cat](animal)- 我想要买一只[cat](animal)- [dog](animal)- [dog](animal)- [dog](animal)- [dog](animal)- [dog](animal)- buy [dog](animal)- 我想要买一只[dog](animal)

谢谢,任何建议都非常受欢迎。


回答:

表达想要购买某物的不同方式是有限的。

你可能会感到惊讶:

  • 我可以买一只狗吗?
  • 我想买一只狗。
  • 我真的想要一只狗。
  • 如果我拥有一只狗会很棒。
  • 我在找一只宠物,可能是一只狗。
  • 购买狗
  • 领养狗
  • 得到一只狗
  • 带一只狗回家

我相信这个列表还会继续增加很多例子。尽管如此,Rasa NLU应该能够从少数几个例子中学习和适应。有一些例外,例如adopt可能与buy没有很强的关联性,因此作为一个例子可能很重要。

我需要为每一种我打算处理的动物重复这个过程吗?就像下面这样?

不需要这样做。每种动物的值都是一个实体,Rasa默认使用CRF进行实体识别,这就是你在这里讨论的内容。CRF更多的是关于句子的结构而不是单词的值。你可以在文档代码中看到CRF查看的特征:

  # 可用的特征包括:  # ``low``, ``title``, ``suffix5``, ``suffix3``, ``suffix2``,  # ``suffix1``, ``pos``, ``pos2``, ``prefix5``, ``prefix2``,  # ``bias``, ``upper`` 和 ``digit``  features: [["low", "title"], ["bias", "suffix3"], ["upper", "pos", "pos2"]]

尽管如此,使用不同值的实体可以是一种获取额外训练数据的好方法。你可以使用像chatito这样的工具从模式中生成训练数据。但要注意重复模式,因为你可能会过拟合模型,使其无法超越你训练的模式进行泛化。

他们有时会重复同一个例子

你在Rasa数据集中看到了这个吗?这是默认的餐厅机器人训练数据,我没有看到任何重复。

重复一个句子会强化模型对格式/单词的重要性,这是过采样的一种形式。如果你有非常少的训练数据或高度不平衡的训练数据,这可能是一件好事。如果你想处理很多不同的购买宠物的方式,这可能是一件坏事,因为它可能会过拟合模型,正如我上面提到的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注