1

ボット スキル用に作成された Luis モデルがあります。日付には事前構築済みのdatetimeエンティティを使用しています。

Luis ポータルのテスト ツールで、「今週末 [専門用語] で 5,000 [専門用語] を販売する」などのサンプル発話をすると、期待どおりの応答が得られます (以下を参照)。timex は2020-W02-WE1/11 - 1/13 に解決されます。

以下の例では、クエリとして「今週末」を使用しましたが、スキルの意図に一致する発話を入力したかどうかに関係なく、同じように解決されることに注意してください。この例では、わかりやすくするために「今週末」が使用されています。

期待される:

{
  "query": "this weekend",
  "prediction": {
    "normalizedQuery": "this weekend",
    "topIntent": "None",
    "intents": {
      "None": {
        "score": 0.8771556
      }
    },
    "entities": {
      "datetimeV2": [
        {
          "type": "daterange",
          "values": [
            {
              "timex": "2020-W02-WE",
              "start": "2020-01-11",  *** Saturday ***
              "end": "2020-01-13"     ***  Monday  ***
            }
          ]
        }
      ],
      "$instance": {
        "datetimeV2": [
          {
            "type": "builtin.datetimeV2.daterange",
            "text": "this weekend",
            "startIndex": 0,
            "length": 12,
            "modelTypeId": 2,
            "modelType": "Prebuilt Entity Extractor",
            "recognitionSources": [
              "model"
            ]
          }
        ]
      }
    }
  }
}

問題は、同じ発話をローカルで使用すると、2020 年 1 月 6 日から 2020 年 1 月 13 日 (月曜日から月曜日) の 1 週間全体を表す日付範囲が取得されることです。タイメックスも同じです。ただし、解決すると、別の値が得られます。

「今週末」という発話を使用したエミュレータに対するルイスの応答:

{
  "recognizerResult": {
    "alteredText": null,
    "entities": {
      "$instance": {
        "datetime": [
          {
            "endIndex": 12,
            "startIndex": 0,
            "text": "this weekend",
            "type": "builtin.datetimeV2.daterange"
          }
        ]
      },
      "datetime": [
        {
          "timex": [
            "2020-W02-WE"
          ],
          "type": "daterange"
        }
      ]
    },
    "intents": {
      "None": {
        "score": 0.8771556
      }
    },
    "text": "this weekend"
  }
}
// 2020-W01-WE - This should resolve to weekend; doesn't work locally, works on Luis. 
Resolution resolution = 
  TimexResolver.Resolve(((List<string>)options.Entities.datetime[0].Expressions).ToArray());

var start = resolution.Values?[0].Start; // 01/06/2020
var end = resolution.Values?[0].End;     // 01/13/2020

私がそれを解決する方法で間違っていることについてのアイデアはありますか?

4

1 に答える 1