如何从 LUIS [botframework] 中的实体列表中获取 key/value

How do I get key/value from entity list in LUIS [botframework]

我想让我的机器人分解各种首字母缩略词的定义。我将它们全部添加到一个实体列表中,同义词是我想要显示的值。我想知道如何处理此 JSON 数据并调用正确的信息,以便在这种情况下首字母缩略词 WWW 将导致 "world wide web"

我想接收规范形式并输出同义词 "world wide web"。我只是不明白如何在 node.js 中执行此操作。有人可以澄清我可以从这个列表中找到搜索实体的同义词的对象吗?

如果我没理解错的话...您想访问同义词,但它们没有在 JSON 中发送?

如果是这种情况,您可以考虑制作一本字典 public Dictionary<string,List<string>> 如果您有多个同义词,或者 public Dictionary<string,string> 如果每个首字母缩略词只有一个。然后您可以使用实体中的值来查找代码中的同义词。

如果您真的需要同义词,您可以导出 并从那里提取 "closedLists" kvp。然后将其映射到一个对象并从您的代码访问该对象。

但是...如果我理解正确的话,我认为您可能没有正确设置列表实体。或者从概念上讲,您可能会以不同的方式考虑您的列表实体。

规范形式是您希望您的代码处理的值。假设我想为纽约纽约建立一个列表实体。我们会说 "New York, New York" 是规范形式。我们将收集 New York, New York 的同义词,因为老实说,不断地 type/write 出声或大声说出来是一种痛苦。

我们的规范形式:"New York, New York"
我们的同义词是:"New York City", "NYC", "The Big Apple", "NY, NY"

|规范形式 |同义词 |

| "New York, New York" | "New York City", "NYC", "The Big Apple", "NY, NY" |

我正在将已识别的实体提交到数据库,我不想有一个 "New York City" 的条目、两个 "NYC" 的条目和一百个 "New York, New York" 的条目.处理那将是一场噩梦,而且效率极低。

当我将数据提交到数据库时,我忽略了他们的实际话语并使用规范形式,因为通过列表实体我已经标准化了用户输入。

综上所述,在代码中您可以执行以下操作来处理列表实体。

这是从 "Industry Acronyms" 识别的实体中提取规范形式 "WWW" 的片段。

var yourEntity = builder.EntityRecognizer.findEntity('Industry Arconyms', results.response);

var canonicalForm;
var recognizedSynonym;


yourEntity.resolution.values.forEach(function (canonical_form) {
    if (canonical_form == "WWW") {
        recognizedSynonym = yourEntity.entity;
    }
})

但是如果你想接收实体中的每一个规范形式,你会做这样的事情:

var canonicalForms = [];

yourEntity.resolution.values.forEach(function (canonical_form) {
        canonicalForms.push(canonical_form);
})