2017-03-23 2 views
0

Ich lerne über Bot-Framework von Microsoft mit LUIS. Ich versuche, einen einfachen Mathe-Bot zu machen, der Mathe-Sätze versteht. Wenn der Benutzer "was ist zwei plus drei" oder Ähnliches eingibt, versteht LUIS, dass die Person zwei und drei hinzufügen möchte. Das Ergebnis ist ein LuisResult wie folgt aussieht:Parsing LuisResult, um JSON-Felder zu erhalten

{ 
    "query": "what is one plus three", 
    "topScoringIntent": { 
    "intent": "addition", 
    "score": 0.999997139 
    }, 
    "intents": [ 
    { 
     "intent": "addition", 
     "score": 0.999997139 
    }, 
{ 
    "intent": "None", 
    "score": 0.03979478 
} 
], 
    "entities": [ 
    { 
     "entity": "one", 
     "type": "builtin.number", 
     "startIndex": 8, 
     "endIndex": 10, 
     "resolution": { 
     "value": "1" 
    } 
    }, 
    { 
     "entity": "three", 
     "type": "builtin.number", 
     "startIndex": 17, 
     "endIndex": 21, 
     "resolution": { 
     "value": "3" 
     } 
    } 
    ] 
} 

ich beide der „Wert“ Felder aus der Liste Entitäten extrahieren müssen. Im Moment weiß ich nur, wie die erste Einheit „Eins“ zu extrahieren, indem

string numberResult = ""; 
EntityRecommendation rec; 
if(result.TryFindEntity("builtin.number", out rec)) 
{ 
    numberResult = rec.Entity; 
    this.number = Int32.Parse(numberResult); 
} 

tun Gibt es eine Möglichkeit daraus sowohl die Wertfelder „1“ und „3“ zu extrahieren?

Antwort

1

LuisResult hat eine list of all the detected Entities. Sie können sie einfach durchlaufen, anstatt die Methode TryFindEntity zu verwenden.

+0

Ich bin noch relativ neu in C# Wie würde ich über die IList von Entitäten iterieren, um zu den Werten zu gelangen? @EzequielJadib – Teragon

+0

https://msdn.microsoft.com/en-us/library/wzc4yayd(v=vs.90).aspx –

+0

Sie können mit for for loop in C# iterieren. –

Verwandte Themen