2

是否有人已经想出如何获取用户在 Watson 的对话 API 中输入的日期?在 Dialog API 中,我们可以使用标准实体,例如 DATE_TIME_RANGE 和 FROM_DATE,但我找不到任何方式不会结束自己添加新的自定义实体。我想在 Dialog API 上创建一个这样的验证:

<input>
<grammar>
    <item>$ (IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2}</item>
    <item>$ (IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2} *</item>
    <item>(IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2} *</item>
    <item>(IATA)={var-from} * (IATA)={var-to} * (DATE_TIME_RANGE)={var-date1} * (DATE_TIME_RANGE)={var-date2}</item>
</grammar>  
<output id="itinerario">
    <action varName="var-from" operator="SET_TO">{var-from.value:main}</action>
    <action varName="var-to" operator="SET_TO">{var-to.value:main}</action>
    <action varName="var-date1" operator="SET_TO">{var-date1.value:FROM_DATE}</action>
    <action varName="var-date2" operator="SET_TO">{var-date2.value:FROM_DATE}</action>
    <prompt>
        <item>{var-from} {var-to} {var-date1} {var-date2}</item>
    </prompt>
</outputt>

4

2 回答 2

2

对话 API 还没有该功能。在短期内,一种解决方法可能是使用正则表达式在客户端应用程序中提取日期,并将它们作为上下文变量传递给 API。

于 2016-08-08T07:40:45.077 回答
2

您可以使用条件访问特殊节点

input.text.matches( '[0-9]+' )

(在里面添加任何你想要的正则表达式) http://www.ibm.com/watson/developercloud/doc/conversation/expression-language.html

要提取要提取值的节点中的值。在上下文变量中添加类似

"context": {
    "number_extract": "<? input.text.extract('[\\d]+',0) ?>"
}

(您可以将任何您想要的正则表达式放入提取物中)

这是您目前使用 watson 对话所能做的最好的事情。所以你必须制作自己的正则表达式来解析日期。

我个人使用另一种解决方案,即制作一个在 watson 之前的自定义解析器。这家伙详细说明了如何使用 alchemyAPI

https://kozhayasite.wordpress.com/2016/08/27/watson-conversation-with-alchemy-entity-extraction/

于 2016-11-23T01:07:56.113 回答