使用Dialogflow检测任意数量的意图

问题描述

在Dialogflow(ES版)中,我们打算检测产品名称和可选数量。例如。 Do you have PepsiI need 4 apples。我们还有一些培训示例,其中包含多个产品。例如:I need 2 brush and 3 chocolates

总体思路是使实体提取具有通用性,以便我们可以查询n个产品。例如,1 Pepsi,2 eggs,5 ice cream,and 4 tomatoes将正确提取4种不同的产品。

但是我们进行了一些手动测试,发现实体提取通常不会扩展到任意数量的实体。这是Dialogflow的限制吗?还是我们需要调整训练数据以包含4/5 +产品的更多示例?

我正在寻找有关处理任意数量实体的此类查询的建议。

对话框流设置:

ML Threshold: 0.3

实体:

Product: Some product names as training data. **Automated expansion** and **Fuzzy matching** enabled.
Product-count: @sys.number. All options disabled 

Product_Query意向参数:

+----------------+----------------+------+
| Parameter Name |     Entity     | Type |
+----------------+----------------+------+
| products       | @Products      | List |
| product-count  | @Product-count | List |
+----------------+----------------+------+

解决方法

我创建了两个实体:@products和@count:

@products         @count       *it sounds dumb to use this @count but is useful for 
banana            1             this example
apple             2
pepsi             3
cocacola          4 
pear              5
orange            6
juice             7
book              8 

然后,我创建了一个名为products_detection的意图,并添加了训练短语:

I want 1 banana,2 apples,3 juices,4 pear,5 orange,6 book,7 cocacola,8 pepsi

单击后,Dialogflow将句子单词与实体匹配,并为每个实体分配不同的值。他还从applesjuices中抽取了实体,尽管它们在训练短语中是复数。

我只是想尝试一下它是否可以用一个训练语句就能工作,并且效果出奇的好。首先,我尝试使用相同的训练句子,结果是:

"parameters": {
      "count2": "3","count14": "7",<-------------
      "count": "1",| You can see that the product and count
      "products14": "cocacola",<----  matches for all products
      "products13": "book","products12": "orange","count12": "5","count21": "8","count11": "4","count1": "2","products21": "pepsi","count13": "6","products2": "juice","products": "banana","products1": "apple","products11": "pear"
    },

然后我将数字和乘积混合在一起并尝试使用以下短语:

I want 5 banana,8 apples,7 juices,3 pepsi,1 cocacola,2 orange,4 book,6 pear

我得到:

"parameters": {
      "count1": "8","count12": "1","count14": "4","count21": "6","products13": "orange","count11": "3","products14": "book","count": "5","products21": "pear","products12": "cocacola","count2": "7","products11": "pepsi","count13": "2"
    },

您可以看到产品仍与计数匹配,这里有5种以上产品。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...