如何识别列表实体中 sub-list 的名称?

How to recognize name of sub-list within list entity?

我有一个由 Microsoft Bot Framework 提供支持的聊天机器人,它使用 LUIS 服务进行自然语言识别。受支持的用例之一是允许用户列出他们的工单。由于可以有多种不同类型的工单,其中一项功能请求是支持按类型过滤这些工单,例如 - ordersincidents,等等


在 LUIS 中,我创建了名为 ticketTypelist 实体,其中 sub-lists 表示各个票证类型及其同义词:


接下来,我创建了名为 listTickets 的意图,我在其中提供了以下样本话语:


最后,我还为 listTickets 创建了模式,以 加强 识别:


现在,在训练和测试我的模型后,一切正常。好吧,几乎...... ticketType 实体被正确识别,但我无法根据我的 sub-lists 区分各个票证类型,如此处的测试结果所示:


问题

如何正确训练我的 LUIS 模型并正确创建 ticketType 实体,以便 LUIS 也正确识别 sub-list?像 ticketType::orderticketType::incident?

我也读过 entity roles,但这似乎不适合我的情况,因为:

我建议您在网络聊天或您将使用的任何渠道中对此进行测试。我根据你的模型创建了一个 LUIS 模型,当 运行 通过网络聊天时,你正在寻找的信息很容易获得。

在我的测试中,我在上一步中将 "Display my request" 作为话语传递给了机器人。如您所见,"request" 是 "order" 的同义词,可在 "ticketType" 中找到(根据您的设计)。我能够从 recognizerResult 以及标准化值(即 "sublists")中提取特定实体。

希望得到帮助!

const recognizerResult = await this.recognizer.recognize(stepContext.context);
let intent = await LuisRecognizer.topIntent( recognizerResult );

console.log('1', intent )
console.log('2', recognizerResult.entities );
console.log('3', recognizerResult.entities.ticketType );
console.log('4', recognizerResult.luisResult.entities );
1 listTicket
2 { '$instance': { ticketType: [ [Object] ] },
  ticketType: [ [ 'order' ] ] }
3 [ [ 'order' ] ]
4 [ { entity: 'request',
    type: 'ticketType',
    startIndex: 11,
    endIndex: 17,
    resolution: { values: [Array] } } ]