Regex внутри Entity (IBM-WATSON) - PullRequest
       21

Regex внутри Entity (IBM-WATSON)

0 голосов
/ 13 ноября 2018

Можно ли поместить сущность в регулярное выражение? например, учитывая, что сущность "@pizza-toppings" содержит начинки:

"topping": "<? input.text.extract('(?i)\.+(@pizza-toppings)(?-i)', 1) ?>"

Итак, если @pizza-toppings соответствует "луку", то "(?i)\.+(@pizza-toppings)(?-i)" будет "(?i)\.+(onion)(?-i)". Если оно соответствует "cheese", тогда оно будет "(?i)\.+(cheese)(?-i)" и т. Д. И т. П.

Я пытался найти решение, но пока ничего не нашел.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Как правило, когда вы используете объект шаблона, он будет соответствовать шаблону и добавит объект с жестко заданным значением из определения объекта. Но если вы хотите, чтобы значение было сопоставлено, вы должны сделать, как предлагает документация (https://console.bluemix.net/docs/services/conversation/entities.html#creating-entities)), и добавить в раздел ответа узла оператор, который создает переменную контекста и присваивает значение биту сопоставления с шаблоном этому контексту переменная:

{
    "context" : {
        "topping": "<? @pizza-toppings.literal ?>"
    }
}

Так что, если ваша пицца соответствует луку, ваша контекстная переменная будет иметь значение "лук".

Например, в этом примере https://github.com/IBM/watson-assistant-app-connect есть один объект @customerId, который сопоставляется с идентификатором клиента "[a-zA-Z \ d] {15,18}".

В диалоговом узле AppConnect в разделе «Затем проверьте:» он проверяет сущность @customerId. В «Затем установите контекст:» он устанавливает $ id в «», и именно здесь значение, соответствующее @customerId, устанавливается в контекстной переменной $ id.

0 голосов
/ 13 ноября 2018

Без тестирования, после того как я заметил, что вы включили ссылку на сущность в строку. Попробуйте сделать что-то вроде этого:

"topping": "<? input.text.extract('(?i)\.+('+@pizza-toppings+')(?-i)', 1) ?>"
...