Luis Test Tool Datetime отличается от локально разрешенного Datetime - PullRequest
1 голос
/ 06 января 2020

У меня есть модель Луиса, созданная для навыка бота. Я использую готовую datetime сущность для дат.

Когда я даю образец высказывания, такого как "Продать 5 тысяч [жаргон] для этих выходных в [жаргон]" на инструменте тестирования портала Luis, я получаю ожидаемый ответ (показан ниже) , Timex 2020-W02-WE и разрешается в 1/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"
            ]
          }
        ]
      }
    }
  }
}

Проблема в том, что когда я использую то же высказывание локально, я получаю дату диапазон, представляющий целую неделю 1/6/2020 - 1/13/2020 (понедельник - понедельник). Timex такой же; однако, когда я разрешаю это, я получаю другое значение.

Ответ Луиса на эмулятор с использованием высказывания «в эти выходные»:

{
  "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

Есть какие-нибудь идеи о том, что я делаю неправильно, и как я это решаю?

1 Ответ

3 голосов
/ 07 января 2020

Вы правы, похоже, это должно сработать. Я думаю, что это ошибка в TimexResolver, поэтому я написал модульный тест и представил PR команде - вы можете увидеть его здесь (по иронии судьбы это PR "2020").

Если вам нужно срочно это исправление, вы можете вытащить мою копию TimexResolver в свой собственный проект и переименовать ее (например, TimexResolve2), пока мы ждем, чтобы PR был рассмотрен и, мы надеемся, принят.

[Update] PR уже был принят и объединен в master (это было быстро!). Вы можете увидеть это здесь - теперь нам просто нужно дождаться следующего релиза Recognizer-Text или просто загрузить / клонировать проект локально, чтобы посмотреть релизы на GH

...