'Undefined' 使用 EntityRecognizer.resolveTime 时的值
'Undefined' value when using EntityRecognizer.resolveTime
我正在使用 LuisRecognizer.recognize() 方法在我的机器人的瀑布对话框中查找 datetimeV2 实体,并使用 EntityRecognizer.resolveTime() 解析答案如下:
builder.LuisRecognizer.recognize(results.response, process.env.LUIS_MODEL_URL, function (err, intents, entities) {
console.log(entities);
if (entities) {
var entity = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.date');
var resolvedTime = builder.EntityRecognizer.resolveTime(entities);
console.log(entity);
console.log(resolvedTime);
}
});
当我测试它时,console.log(entity)
打印以下内容 json:
{ entity: 'mañana',
type: 'builtin.datetimeV2.date',
startIndex: 0,
endIndex: 5,
resolution: { values: [Object] } }
但是第二个 console.log(resolvedTime) 打印 undefined
值。
我也尝试了 builder.EntityRecognizer.parseTime(entities);
,结果相同。
我能够从响应中的解析字段中提取日期,但该解决方案不适用于更复杂的话语(如范围日期)。
从resolveTime function的源码可以看出,这个函数并没有对datetimeV2
数据类型进行转换。所以你得到了 undefined
.
但是,您仍然可以利用 entity.resolution
获取 datetimeV2
的日期。
对于 builtin.datetimeV2.date
日期类型:
var date = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.date');
console.log(date.resolution.values[0].value);
对于builtin.datetimeV2.daterange
:
var daterange = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.daterange');
console.log(daterange.resolution.values[0]);
谁的对象应该是这样的:
{end:"2018-01-10"
start:"2018-01-09"
timex:"(2018-01-09,2018-01-10,P1D)"
type:"daterange"}
我正在使用 LuisRecognizer.recognize() 方法在我的机器人的瀑布对话框中查找 datetimeV2 实体,并使用 EntityRecognizer.resolveTime() 解析答案如下:
builder.LuisRecognizer.recognize(results.response, process.env.LUIS_MODEL_URL, function (err, intents, entities) {
console.log(entities);
if (entities) {
var entity = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.date');
var resolvedTime = builder.EntityRecognizer.resolveTime(entities);
console.log(entity);
console.log(resolvedTime);
}
});
当我测试它时,console.log(entity)
打印以下内容 json:
{ entity: 'mañana',
type: 'builtin.datetimeV2.date',
startIndex: 0,
endIndex: 5,
resolution: { values: [Object] } }
但是第二个 console.log(resolvedTime) 打印 undefined
值。
我也尝试了 builder.EntityRecognizer.parseTime(entities);
,结果相同。
我能够从响应中的解析字段中提取日期,但该解决方案不适用于更复杂的话语(如范围日期)。
从resolveTime function的源码可以看出,这个函数并没有对datetimeV2
数据类型进行转换。所以你得到了 undefined
.
但是,您仍然可以利用 entity.resolution
获取 datetimeV2
的日期。
对于
builtin.datetimeV2.date
日期类型:var date = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.date'); console.log(date.resolution.values[0].value);
对于
builtin.datetimeV2.daterange
:var daterange = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.daterange'); console.log(daterange.resolution.values[0]);
谁的对象应该是这样的:
{end:"2018-01-10" start:"2018-01-09" timex:"(2018-01-09,2018-01-10,P1D)" type:"daterange"}