Обнаружение произвольного количества намерений с помощью Dialogflow

#nlp #dialogflow-es #nlu

#nlp #dialogflow-es #nlu

Вопрос:

В Dialogflow (версия ES) у нас есть намерение обнаруживать названия продуктов и необязательные количества. Например. Do you have Pepsi или I 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 ?

Я ищу предложения по обработке этого типа запросов с произвольным количеством объектов.

Настройка Dialogflow:

 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 |
 ---------------- ---------------- ------ 
  

Комментарии:

1. Привет, Джахирул, не могли бы вы включить несколько скриншотов настройки ваших параметров в dialogflow? Это упрощает ответ на ваш вопрос, если мы узнаем больше о том, как вы настраиваете извлечение сущности.

2. Конечно. Я добавляю свою конфигурацию сущности и намерения в сообщение

3. Привет, @Jordi, я обновил сообщение некоторыми настройками Dialogflow. Дайте мне знать, если требуется дополнительная информация. Спасибо

4. Ах, извините за неправильный ответ, я неправильно понял вопрос. Насколько я знаю, не существует определенного ограничения на количество объектов, которые могут быть включены в список. Вы пробовали тестировать это с помощью простого варианта использования, скажем, пытаясь определить 10 чисел?

5. Не беспокойтесь. Спасибо за усилия. Я попробовал, и результаты были поражены и пропущены. Вот почему я хотел получить совет от других, у кого больше знаний о Dialogflow

Ответ №1:

Я создал две сущности: @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

Как только вы нажмете enter, Dialogflow сопоставляет слова предложения с сущностями и присваивает каждому из них разное значение. Он также берет сущности из apples и juices , хотя они во множественном числе в обучающей фразе.

Я просто хотел попробовать, может ли это работать с одним обучающим предложением, и это сработало на удивление хорошо. Сначала я попробовал с тем же обучающим предложением, и результат:

 "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",
      "products2": "juice",
      "count": "5",
      "products21": "pear",
      "products1": "apple",
      "products12": "cocacola",
      "count2": "7",
      "products": "banana",
      "products11": "pepsi",
      "count13": "2"
    },
  

Как вы можете видеть, продукты по-прежнему соответствуют подсчетам, и здесь их более 5.

Комментарии:

1. Спасибо за ответ. Но будет ли это работать, если продукт не включен в список объектов. Например, если я говорю: «Я хочу 2 биг-мака, 3 фанты и 1 книгу».

2. Я просто указывал пример с более чем 5 извлечениями объектов, но таким образом продукты, не включенные в список объектов, не будут распознаны. Я даже не знаю, сработает ли это, если в запросе будут повторяющиеся числа. Какие обучающие фразы были у вас в вашем первоначальном подходе?