如果你真的需要同义词,你可以导出你的LUIS model 并从那里提取"closedLists" kvp。然后将其映射到一个对象并从您的代码中访问该对象。
但是...如果我理解正确的话,我认为您可能错误地设置了您的列表实体。或者从概念上讲,您可能会以不同的方式考虑您的列表实体。
规范形式是您希望代码处理的值。假设我想为 New York, New York 设置一个列表实体。我们会说"New York, New York" 是规范形式。我们将收集纽约、纽约的同义词,因为老实说,不断输入/写出或大声说出来是一件很痛苦的事。
我们的规范形式:"New York, New York"
我们的同义词是:"New York City", "NYC", "The Big Apple", "NY, NY"
|规范形式 |同义词 |
| “纽约,纽约” | “纽约市”、“NYC”、“大苹果”、“NY, NY” |
我正在将已识别的实体提交到数据库,我不想有一个带有"New York City" 的条目、两个带有"NYC" 的条目和一百个带有"New York, New York" 的条目。处理这将是一场噩梦,尤其是效率极低。
当我将数据提交到数据库时,我忽略了他们的实际话语并使用规范形式,因为通过列表实体我已经标准化了用户输入。
总而言之,在代码内部,您可以执行以下操作来处理列表实体。
这是一个关于从 "Industry Acronyms"-recognized 实体中提取规范形式 "WWW" 的 sn-p。
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);
})