Sdílet prostřednictvím


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 Set/Change/Alter Foreground/Background ... [barevný seznam]". SemanticResultValue a SemanticResultKey instance (ve spojení s ChoicesGrammarBuilder objekty) slouží k definování sémantiky, které lze analyzovat při rozpoznávání. Analyzovaná sémantika určí, která barva byla požadována a zda má být změněna 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 Použití a SemanticResultKey objektů ve spojení s GrammarBuilder a Choices, je nejjednodušší způsob, jak navrhnout sémantickou strukturu pro Grammar. Sémantické informace pro frázi jsou přístupné získáním instance , SemanticValueprostřednictvím Semantics vlastnosti .RecognizedPhrase

Poznámka:

Hodnoty spravované SemanticResultValue objekty jsou definovány instancemi Object předávanými jejich konstruktory. Základní typ musí Object být bool, int, floatnebo string. Jakýkoli jiný typ zabrání konstrukci Grammar instance s SemanticResultValue.

Typické použití SemanticResultValue instance přidruží 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 pro přidružení SemanticResultValue instance k gramatickému prvku v závislosti na konstruktoru použitém k vytvoření objektu SemanticResultValue.

  • Je-li k vytvoření SemanticResultValue objektu použita pouze hodnota (určená instancí Object) je SemanticResultValue přidružena k gramatické komponentě, která jí předchází, kromě objektuGrammarBuilder.

    Například v níže uvedeném fragmentu kódu, pokud Grammar vytvořený pomocí této GrammarBuilder instance rozpozná slovo "pozadí", je hodnota true nastavena v rozpoznané sémantice frází.

    GrammarBuilder backgroundGB=new GrammarBuilder("background");
    backgroundGB.Append(new SemanticResultValue(true));
    

    Další informace naleznete v popisu SemanticResultValue(Object).

  • Pokud se použije řetězcová hodnota nebo konkrétní GrammarBuilder instance společně s Object hodnotou, která určuje SemanticResultValue hodnotu, tato hodnota se automaticky přidruží k řetězcové hodnotě nebo GrammarBuilder instanci. Pokud se fráze nebo GrammarBuilder objekt používá při 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žil explicitní volání Append a SemanticResultValue(Object). Pokud logika rozpoznávání používá slovo "pozadí", přidá se hodnota true do rozpoznané sémantiky.

    fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background", true));
    

    Další informace naleznete v popisu SemanticResultValue(GrammarBuilder, Object) a SemanticResultValue(String, Object).

Aby bylo možné použít Grammar rozpoznávání, musí být všechny SemanticResultValue instance přidruženy k jednomu z SemanticValue objektů používaných tímto Grammarobjektem . To se provádí přidružením sémantického klíče k objektu SemanticResultValue.

Sémantické klíče lze explicitně připojit k objektuSemanticResultValueSemanticResultKey. SemanticResultValue Instance, které nejsou explicitně připojeny ke klíči, jsou připojeny ke kořenovému klíči výchozího SemanticValueklíče .

SemanticResultValue Po použití k nastavení Value, zda je označena výchozím kořenovým klíčem nebo jakýmkoli konkrétním , SemanticResultKeytato hodnota nesmí být 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 a 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. Ačkoli definuje více instancí SemanticResultValue, jsou zahrnuty v objektu Choices , a pouze jeden bude někdy použit k nastavení hodnoty klíče bgOrfgText.

Choices fgOrbgChoice = new Choices();
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background"));
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground"));
SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgText", fgOrbgChoice);

Konstruktory

Name Description
SemanticResultValue(GrammarBuilder, Object)

Inicializuje novou instanci SemanticResultValue třídy a přidruží 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 SemanticResultValue třídy a přidruží sémantickou hodnotu k objektu String .

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(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é