У меня есть модель Луиса, созданная для навыка бота. Я использую готовую 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
Есть какие-нибудь идеи о том, что я делаю неправильно, и как я это решаю?