2017-05-03 2 views
0

Je voudrais savoir comment je peux intégrer un peu de codage (python ou javascript) dans ma boîte de dialogue, afin d'éviter l'interface bluemix très limitée par exemple pour les boucles, ou l'exploration de texte.codage watson conversation pour les entrées complexes?

EX: Je crée une chatbot pizza et je dois être en mesure de traiter ce genre de demande:

I would like 2 margarita whose one with extra cheese and the other with pepperoni and a regina, with 3 diet cokes and two beers

Il est tout simplement impossible de le faire avec bluemix.

Si quelqu'un a une solution, je serais très reconnaissant. Merci

+0

Avez-vous vérifié les boîtes à outils et les SDK pour Watson Conversation? Vous pouvez effectuer des pré et post-traitement d'entrée, utiliser le service NLU et d'autres pour annoter et augmenter l'entrée, passer des variables dans et hors du traitement de dialogue. –

Répondre

0

Donc la première chose à comprendre est que la conversation a de bons et de mauvais cas d'utilisation.

Si votre utilisateur peut entrer des données structurées, il est préférable d'utiliser un formulaire. Que ce soit dans la fenêtre de conversation (comme Watson Virtual Agent), ou un formulaire sur votre site/application. Donc, votre exemple ne ressemble pas à un bon cas d'utilisation.


Cela dit ...

Avec votre exemple, il est possible que si vos éléments principaux sont des entités, et vous Haver entité système @sys-number activé. Vous pouvez ensuite vérifier le tableau entities pour voir la distance entre eux.

Exemple

créé les entités suivantes.

@PizzaType 
@PizzaTopping 
@Drinks 

Quand je demande à votre question, l'objet entities renvoie les éléments suivants:

[ 
    { 
    "entity": "Drinks", 
    "location": [ 
     104, 
     114 
    ], 
    "value": "diet coke", 
    "confidence": 1 
    }, 
    { 
    "entity": "PizzaType", 
    "location": [ 
     72, 
     81 
    ], 
    "value": "Pepperoni", 
    "confidence": 1 
    }, 
    { 
    "entity": "Drinks", 
    "location": [ 
     123, 
     128 
    ], 
    "value": "beer", 
    "confidence": 1 
    }, 
    { 
    "entity": "PizzaType", 
    "location": [ 
     88, 
     94 
    ], 
    "value": "Regina", 
    "confidence": 1 
    }, 
    { 
    "entity": "PizzaTopping", 
    "location": [ 
     46, 
     52 
    ], 
    "value": "cheese", 
    "confidence": 1 
    }, 
    { 
    "entity": "PizzaType", 
    "location": [ 
     15, 
     24 
    ], 
    "value": "Margarita", 
    "confidence": 1 
    }, 
    { 
    "entity": "sys-number", 
    "location": [ 
     13, 
     14 
    ], 
    "value": "2", 
    "confidence": 1, 
    "metadata": { 
     "numeric_value": 2 
    } 
    }, 
    { 
    "entity": "sys-number", 
    "location": [ 
     31, 
     34 
    ], 
    "value": "1", 
    "confidence": 1, 
    "metadata": { 
     "numeric_value": 1 
    } 
    }, 
    { 
    "entity": "sys-number", 
    "location": [ 
     101, 
     102 
    ], 
    "value": "3", 
    "confidence": 1, 
    "metadata": { 
     "numeric_value": 3 
    } 
    }, 
    { 
    "entity": "sys-number", 
    "location": [ 
     119, 
     122 
    ], 
    "value": "2", 
    "confidence": 1, 
    "metadata": { 
     "numeric_value": 2 
    } 
    } 
] 

Un résumé qui est:

enter image description here

Vous pouvez voir tout de suite il y a quelques problèmes là-bas. Si l'utilisateur ne mentionne pas de numéro, vous devez en tenir compte. Aussi quelque chose comme cette question le briserait aussi (à moins que vous ne vous en occupiez).

I would like margarita pizzas (two). 

Mais le point important est de construire votre système avec des questions représentatives. Votre exemple de question ne peut jamais être demandé par un utilisateur final, ou vous pouvez même façonner la conversation pour empêcher une telle entrée.