如何从 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);
})
我想让我的机器人分解各种首字母缩略词的定义。我将它们全部添加到一个实体列表中,同义词是我想要显示的值。我想知道如何处理此 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);
})