如何从LUIS 中的实体列表中获取键/值

我试图让我的机器人破解各种缩写词的定义。 我把他们都join了实体列表,同义词是我想要显示的值。 我想知道如何处理这个JSON数据,并调用正确的信息,以便在这种情况下,首字母缩写WWW将导致“万维网”

例如,我想要WWW的定义应该是万维网。

在这里输入图像说明

我想接收规范forms并输出“万维网”的同义词。 我只是不明白如何在node.js中做到这一点。 有人可以澄清在什么对象,我可以从这个列表中find一个search实体的同义词。

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

但是…我想你可能会错误地设置你的列表实体,如果我正确理解你的话。 或者从概念上讲,你可能会以不同的意义思考你的名单实体。

规范forms是您希望代码处理的值。 假设我想为纽约纽约成立一个名单实体。 我们会说"New York, New York"是规范的forms。 我们会收集纽约,纽约的同义词,因为说实话,这是一个不断input/写出或大声说出的痛苦。

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

| 规范forms| 同义词|

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

我将这个被认可的实体提交给一个数据库,我不想有一个"New York City"参赛作品,两个参赛作品"NYC"还有一个参赛作品"New York, New York" 。 处理这将是一场噩梦,至less是非常低效的。

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

这一切都表示,在代码中,您可以执行以下操作来处理列表实体。

下面是从"Industry Acronyms"识别的实体中提取规范forms"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; } }) 

但是如果你想在实体中获得每一个规范的forms,你可以这样做:

 var canonicalForms = []; yourEntity.resolution.values.forEach(function (canonical_form) { canonicalForms.push(canonical_form); }) 

如果我理解正确…你想访问的同义词,但他们不被发送在JSON?

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