2

Watson の Conversation API でユーザーが入力した日付を取得する方法を既に理解している人はいますか? Dialog API では、DATE_TIME_RANGE や FROM_DATE などの標準エンティティを使用できますが、自分で新しいカスタム エンティティを追加しない方法はありません。ダイアログ 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

Conversation API にはまだその機能がありません。短期的には、正規表現を使用してクライアント アプリケーションで日付を抽出し、それらをコンテキスト変数として API に渡すことが 1 つの回避策になる可能性があります。

于 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) ?>"
}

(抽出内に任意の正規表現を入れることができます)

それが、ワトソン会話で現在できる最善のことです。したがって、日付を解析するには独自の正規表現を作成する必要があります。

個人的には、ワトソンの前に独自のパーサーを作成するという別のソリューションを使用しています。この男は、alchemyAPI を使用してそれを行う方法を詳しく説明しています

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

于 2016-11-23T01:07:56.113 に答える