2017-06-20 2 views
0

Je suis en train de construire un bot avec Messenger botkit et le traitement du langage se fait via api.ai.Comment extraire uniquement les entités non intentes en chaîne à l'aide de NLP?

Les intentions d'Apiai sont un excellent moyen de guider l'utilisateur à travers l'expérience du bot. J'utilise des intentions prédéfinies pour comprendre ce que l'utilisateur veut faire et commencer une conversation avec lui en utilisant l'objet convo de botkit. À ce stade, j'ai des questions prédéfinies auxquelles l'utilisateur doit répondre.

Par exemple l'une des questions est "Quand est-ce arrivé?" et l'utilisateur peut répondre en texte brut. Je n'ai pas besoin d'apiai pour me dire l'intention (et je ne veux pas passer de temps à m'entraîner pour ça) parce que je sais déjà à quoi m'attendre. Donc je cherche un moyen d'extraire simplement le système et les entités définies par le développeur en chaîne. Donc, si l'utilisateur fournit la réponse "Je suis arrivé hier", je pourrais valider que j'ai des entités de date mais l'entité de temps est vide, donc je vais me promettre de donner aussi du temps.

J'ai lu des documents d'experts et d'autres concurrents et je n'ai trouvé aucun moyen de le faire. Il s'agit toujours de définir des intentions. Donc, fondamentalement - trouver et extraire des entités de la chaîne. Est-il possible et si - comment? Actuellement apiai est mon outil mais je suis prêt à le changer si nécessaire.

+0

Avez-vous vérifié cela? https://docs.api.ai/docs/concept-entities#section-date-and-time est-ce que c'est ce que vous cherchez, ou a-t-il des restrictions qui ne fonctionnent pas pour vous? – jgranstrom

+0

Oui, il y a des restrictions. L'utilisateur peut répondre de plusieurs façons différentes comme "hier", "j'étais hier", "c'est arrivé hier", .... Et former ce que je comprends, je suis obligé de créer l'intention pour cette question et former l'agent pour toutes ces réponses possibles des utilisateurs. Mais cela me semble stupide parce que je connais déjà l'intention. Ces entités du système sont très puissantes, donc je me demande pourquoi un développeur ne peut pas simplement chercher une chaîne pour lui. –

+0

Je vois, vous cherchez un service hébergé pour ce faire, ou est-ce une option pour configurer vos propres API en utilisant des outils open source? – jgranstrom

Répondre

1

Vous pouvez utiliser les paramètres requis pour vous assurer d'obtenir les informations nécessaires auprès de l'utilisateur. Pour faire un paramètre, il suffit de cocher la case à gauche du nom du paramètre dans l'intention ci-dessous la section Action (pointé avec une flèche dans la capture d'écran ci-dessous). Pour créer une invite personnalisée pour le paramètre (« quelle heure est-il arrivé » ie) cliquez à droite du nom de paramètre dans l'en-tête de colonne invites (dans une boîte rouge dans la capture d'écran ci-dessous):

Si vous avez besoin d'une validation supplémentaire, vous devez configurer un webhook d'exécution pour Api.ai. Api.ai enverra des requêtes à votre webhook qui contiendra des données JSON incluant les valeurs pour les entités (ceci est dans l'attribut parameters de l'objet résultat inclus dans la requête à votre webhook). Vous pouvez ensuite valider toutes les données nécessaires et répondre à l'utilisateur en conséquence. La documentation pour les webhooks d'accomplissement sont ici: https://docs.api.ai/docs/webhook#webhook-requirements