从列表实体中获取规范形式
Get canonical form from list entity
我有一个使用 Microsoft Bot Framework 的机器人,使用 LUIS API,我在其中有一个封闭列表实体。
当我的机器人捕捉到该实体的意图时,我想以编程方式获得其规范形式的价值。但我似乎所能做的就是获取用户键入的值,即找到的同义词。
foreach (var entity in result.Entities)
{
await context.PostAsync($"{entity.Type}: {entity.Entity}");
}
我相信您要查找的是 Entities.Resolution
中包含的词典 字典 具体来说,您将在 Entities.Resolution.Values;
中找到的字符串数组
这个documentation应该对你有帮助
使用您的代码示例:
foreach (var entity in result.Entities)
{
await context.PostAsync($"{entity.Resolution.Values}");
}
找到了一种方法,使用评论并扩展了 JasonSowers 的答案,不得不翻阅字典并使用了几次转换,但最终还是解决了:
foreach (var entity in result.Entities)
{
var dict = entity.Resolution.Values.GetEnumerator();
dict.MoveNext();
var valuesList = (List<object>)dict.Current;
var canonicalForm = (string)valuesList[0];
await context.PostAsync($"{canonicalForm}");
}
protected string GetCanonicalValue(string entityName, LuisResult intentContext)
{
List<EntityRecommendation> intentList = intentContext.Entities.Where(x => x.Type.Equals(entityName)).ToList();
string canonicalForm = string.Empty;
foreach (EntityRecommendation entity in intentList)
{
IEnumerator<object> dict = entity.Resolution.Values.GetEnumerator();
dict.MoveNext();
List<object> valuesList = (List<object>)dict.Current;
canonicalForm = (string)valuesList[0];
}
return canonicalForm;
}
我有一个使用 Microsoft Bot Framework 的机器人,使用 LUIS API,我在其中有一个封闭列表实体。 当我的机器人捕捉到该实体的意图时,我想以编程方式获得其规范形式的价值。但我似乎所能做的就是获取用户键入的值,即找到的同义词。
foreach (var entity in result.Entities)
{
await context.PostAsync($"{entity.Type}: {entity.Entity}");
}
我相信您要查找的是 Entities.Resolution
中包含的词典 字典 具体来说,您将在 Entities.Resolution.Values;
这个documentation应该对你有帮助
使用您的代码示例:
foreach (var entity in result.Entities)
{
await context.PostAsync($"{entity.Resolution.Values}");
}
找到了一种方法,使用评论并扩展了 JasonSowers 的答案,不得不翻阅字典并使用了几次转换,但最终还是解决了:
foreach (var entity in result.Entities)
{
var dict = entity.Resolution.Values.GetEnumerator();
dict.MoveNext();
var valuesList = (List<object>)dict.Current;
var canonicalForm = (string)valuesList[0];
await context.PostAsync($"{canonicalForm}");
}
protected string GetCanonicalValue(string entityName, LuisResult intentContext)
{
List<EntityRecommendation> intentList = intentContext.Entities.Where(x => x.Type.Equals(entityName)).ToList();
string canonicalForm = string.Empty;
foreach (EntityRecommendation entity in intentList)
{
IEnumerator<object> dict = entity.Resolution.Values.GetEnumerator();
dict.MoveNext();
List<object> valuesList = (List<object>)dict.Current;
canonicalForm = (string)valuesList[0];
}
return canonicalForm;
}