Share via


SemanticResultValue Třída

Definice

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, floatnebo 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 bgOrfgTextse 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)

Platí pro

Viz také