SemanticResultValue Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje sémantickou hodnotu a volitelně ji přidruží ke komponentě gramatiky rozpoznávání řeči.
public ref class SemanticResultValue
public class SemanticResultValue
type SemanticResultValue = class
Public Class SemanticResultValue
- Dědičnost
-
SemanticResultValue
Příklady
Následující příklad vrátí příkaz Grammar , který rozpozná příkaz Set/Change/Alter Foreground/Background ... [seznam barev]". SemanticResultValue instance a SemanticResultKey (ve spojení s Choices objekty a GrammarBuilder ) slouží k definování sémantiky, která se dá analyzovat při rozpoznávání. Analyzovaná sémantika určí, jaká barva byla požadována a jestli se má upravit popředí nebo pozadí.
private Grammar FgBgColorGrammar()
{
Grammar grammar = null;
// Allow the command to begin with set, alter, change.
Choices introChoices = new Choices();
foreach (string introString in new string[] { "Change", "Set", "Alter" })
{
GrammarBuilder introGB = new GrammarBuilder(introString);
introChoices.Add(new SemanticResultValue(introGB, String.Format("Command: {0}", introString)));
}
GrammarBuilder cmdIntro = new GrammarBuilder(introChoices);
// Define the arguments for the command to select foreground or background
// and to change their color as semantic values.
Choices fgOrbgChoice = new Choices();
GrammarBuilder backgroundGB=new GrammarBuilder("background");
backgroundGB.Append(new SemanticResultValue(true));
fgOrbgChoice.Add(backgroundGB);
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground", false));
SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgBool", fgOrbgChoice);
Choices colorChoice = new Choices();
foreach (string colorName in System.Enum.GetNames(typeof(KnownColor)))
{
// Use implicit conversion of SemanticResultValue to GrammarBuilder.
colorChoice.Add(
(GrammarBuilder) (new SemanticResultValue(colorName, (Color.FromName(colorName)).Name)));
}
// Create a GrammarBuilder for CmdArgs to be appended to CmdIntro using
// semantic keys.
GrammarBuilder cmdArgs = new GrammarBuilder();
cmdArgs.Append(new SemanticResultKey("BgOrFgBool", fgOrbgChoice));
cmdArgs.AppendWildcard();
cmdArgs.Append(new SemanticResultKey("colorStringList", colorChoice));
GrammarBuilder cmds =
GrammarBuilder.Add(
cmdIntro,
new GrammarBuilder(new SemanticResultKey("Cmd Args", cmdArgs)));
grammar = new Grammar(cmds);
grammar.Name = "Tree [Set,change,alter] [foreground,background] * color";
return grammar;
}
Poznámky
SemanticResultValue Nejjednodušší způsob, jak navrhnout sémantickou strukturu pro Grammarobjekt , je použití objektů a SemanticResultKey ve spojení s GrammarBuilder a Choices. K sémantickým informacím pro frázi se přistupuje získáním instance SemanticValue, prostřednictvím Semantics vlastnosti v RecognizedPhrase.
Poznámka
Hodnoty spravované SemanticResultValue objekty jsou definovány instancemi Object předanými jejich konstruktorům. Základní typ musí Object být bool
, int
, float
nebo string
. Jakýkoli jiný typ zabrání vytvoření Grammar instance s SemanticResultValue.
Typické použití instance přidruží SemanticResultValue instanci k rozpoznatelné komponentě Grammar, jako je fráze, pravidlo nebo Choices objekt. Pokud se přidružená komponenta používá jako součást operace rozpoznávání, SemanticResultValue slouží k definování hodnoty v sémantice vrácené fráze.
Existují dvě základní metody přidružení SemanticResultValue instance k elementu gramatiky v závislosti na konstruktoru použitém k vytvoření objektu SemanticResultValue.
Pokud se k vytvoření objektu Objectpoužije pouze hodnota (určená instancí ) , SemanticResultValue je kromě objektu přidružen ke komponentě gramatiky, která mu předcházelaGrammarBuilder.SemanticResultValue
Například v níže uvedeném fragmentu kódu, pokud Grammar objekt vytvořený pomocí této GrammarBuilder instance rozpozná slovo "background", hodnota
true
je nastavena v rozpoznané sémantice fráze.GrammarBuilder backgroundGB=new GrammarBuilder("background"); backgroundGB.Append(new SemanticResultValue(true));
Další informace najdete v popisu .SemanticResultValue(Object)
Pokud je použita fráze řetězcové hodnoty nebo konkrétní GrammarBuilder instance společně s Object hodnotou, která určuje SemanticResultValue hodnotu, je tato hodnota automaticky přidružena k řetězcové hodnotě frázi nebo GrammarBuilder instanci. Pokud se fráze nebo GrammarBuilder objekt použije v procesu rozpoznávání, přiřadí se hodnota sémantice rozpoznané fráze.
Následující příklad to ilustruje a je funkčně ekvivalentní předchozímu příkladu, který používal explicitní volání Append a SemanticResultValue(Object). Pokud logika rozpoznávání používá slovo "background", hodnota
true
se přidá k rozpoznané sémantice.fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background", true));
Další informace najdete v popisu SemanticResultValue(GrammarBuilder, Object) a SemanticResultValue(String, Object).
Aby je bylo možné použít Grammar v rozpoznávání, musí být všechny SemanticResultValue instance přidruženy k jednomu z SemanticValue objektů používaných daným objektem Grammar. To se provádí přidružením sémantického klíče k SemanticResultValue.
Sémantické klíče lze explicitně připojit k objektu SemanticResultValuepomocí objektu SemanticResultKey . SemanticResultValue Instance, které nejsou explicitně připojeny ke klíči, jsou připojeny ke kořenovému klíči výchozího SemanticValue.
Po použití parametru SemanticResultValueValuek nastavení , ať už je označený výchozím kořenovým klíčem nebo jakýmkoli konkrétním SemanticResultKey, nesmí být tato hodnota změněna nebo dojde k výjimce během operací rozpoznávání.
Následující příklad způsobí výjimku, protože nastaví a pak upraví kořen Value objektu Grammar.
GrammarBuilder gb=new GrammarBuilder();
gb.Append(new SemanticResultValue("One"));
gb.Append(new SemanticResultValue("Two"));
Na druhou stranu je povolený kód v následujícím příkladu. Přestože definuje více instancí objektu SemanticResultValue, jsou zahrnuty v objektu Choices a k nastavení hodnoty klíče bgOrfgText
se použije pouze jedna .
Choices fgOrbgChoice = new Choices();
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background"));
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground"));
SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgText", fgOrbgChoice);
Konstruktory
SemanticResultValue(GrammarBuilder, Object) |
Inicializuje novou instanci třídy a přidruží SemanticResultValue sémantickou hodnotu k objektu GrammarBuilder . |
SemanticResultValue(Object) |
Inicializuje novou instanci SemanticResultValue třídy a určuje sémantickou hodnotu. |
SemanticResultValue(String, Object) |
Inicializuje novou instanci třídy a přidruží SemanticResultValue sémantickou hodnotu k objektu String . |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToGrammarBuilder() |
Vrátí instanci GrammarBuilder vytvořené z aktuální SemanticResultValue instance. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |