如何从LUIS [botframework]

时间:2017-06-19 13:05:21

标签: node.js botframework luis

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

For example I want the definition of WWW which should be world wide web.

enter image description here

我希望收到规范表格并输出同义词"万维网"。我只是不明白如何在node.js中这样做。有人可以澄清我可以从这个列表中找到被搜索实体的同义词的对象。

2 个答案:

答案 0 :(得分:1)

如果我理解正确...您想要访问同义词,但它们不是在JSON中发送的吗?

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

答案 1 :(得分:0)

如果您确实需要同义词,则可以导出LUIS model并从那里提取"closedLists" kvp。然后将其映射到对象并从代码中访问该对象。

但是......如果我理解正确的话,我认为您可能错误地设置了列表实体。或者从概念上讲,您可能会考虑不同意义上的列表实体。

规范表单是您想要代码要处理的值。假设我想为纽约纽约设置一个列表实体。我们会说"New York, New York"是规范形式。我们将收集纽约纽约的同义词,因为老实说,不断打字/写出或大声说出是一种痛苦。

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

|规范形式|同义词|

| “纽约,纽约” | “纽约市”,“纽约市”,“大苹果”,“纽约,纽约” |

我将已识别的实体提交到数据库,我不希望有"New York City"的条目,"NYC"的两个条目和"New York, New York"的一百个条目。处理这将是一场噩梦,尤其是效率极低。

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

所有人都说,在代码内部,您可以执行以下操作来处理列表实体。

以下是从"WWW"认可的实体中提取规范表单"Industry Acronyms"的摘要。

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);
})