Condividi tramite


SemanticResultValue Classe

Definizione

Rappresenta un valore semantico e, facoltativamente, associa il valore a un componente di una grammatica di riconoscimento vocale.

public ref class SemanticResultValue
public class SemanticResultValue
type SemanticResultValue = class
Public Class SemanticResultValue
Ereditarietà
SemanticResultValue

Esempio

L'esempio seguente restituisce un Grammar oggetto che riconosce il comando "Set/Change/Alter Foreground/Background ... [elenco colori]". SemanticResultValuee le istanze (insieme agli Choices oggetti e SemanticResultKeyGrammarBuilder ) vengono usate per definire la semantica che può essere analizzata sul riconoscimento. La semantica analizzata determinerà quale colore è stato richiesto e se il primo piano o lo sfondo deve essere modificato.

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;
}

Commenti

L'uso di SemanticResultValue oggetti e SemanticResultKey , in combinazione con GrammarBuilder e Choices, è il modo più semplice per progettare una struttura semantica per un oggetto Grammar. È possibile accedere alle informazioni semantiche per una frase ottenendo un'istanza di SemanticValue, tramite la Semantics proprietà su RecognizedPhrase.

Annotazioni

I valori gestiti dagli SemanticResultValue oggetti vengono definiti dalle Object istanze passate ai relativi costruttori. Il tipo sottostante di questo Object oggetto deve essere bool, int, floato string. Qualsiasi altro tipo impedirà la costruzione di un'istanza Grammar con .SemanticResultValue

L'uso tipico di un'istanza SemanticResultValue associa l'istanza a un componente riconoscibile di un Grammaroggetto , ad esempio una frase, una regola o un Choices oggetto . Se il componente associato viene utilizzato come parte di un'operazione di riconoscimento, SemanticResultValue viene utilizzato per definire un valore nella semantica della frase restituita.

Esistono due metodi di base per l'associazione di un'istanza SemanticResultValue a un elemento grammaticale, a seconda del costruttore usato per creare l'oggetto SemanticResultValue.

  • Se per costruire un oggetto viene utilizzato solo il valore specificato da un'istanza SemanticResultValue di Object, l'oggetto SemanticResultValue viene associato al componente grammaticale che lo precede, oltre a un GrammarBuilder oggetto .

    Ad esempio, nel frammento di codice riportato di seguito, se un Grammar oggetto costruito usando questa GrammarBuilder istanza riconosce la parola "background", un valore di true viene impostato nella semantica di frasi riconosciuta.

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

    Per altre informazioni, vedere la descrizione di SemanticResultValue(Object).

  • Se viene utilizzata una frase di valore stringa o un'istanza specifica GrammarBuilder , insieme a un Object oggetto che specifica un SemanticResultValue valore, tale valore viene associato automaticamente alla frase di valore stringa o all'istanza GrammarBuilder . Se la frase o GrammarBuilder l'oggetto viene usato nel processo di riconoscimento, il valore verrà assegnato alla semantica della frase riconosciuta.

    Nell'esempio seguente viene illustrato questo oggetto ed è funzionalmente equivalente all'esempio precedente, che ha usato chiamate esplicite a Append e SemanticResultValue(Object). Se la logica di riconoscimento usa la parola "background", il valore true verrà aggiunto alla semantica riconosciuta.

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

    Per altre informazioni, vedere la descrizione di SemanticResultValue(GrammarBuilder, Object) e SemanticResultValue(String, Object).

Per essere utilizzato da un oggetto Grammar nel riconoscimento, tutte le SemanticResultValue istanze devono essere associate a uno degli SemanticValue oggetti utilizzati da tale Grammaroggetto . Questa operazione viene eseguita associando una chiave semantica a SemanticResultValue.

Le chiavi semantiche possono essere collegate in modo esplicito a un SemanticResultValueoggetto , usando un SemanticResultKey oggetto . SemanticResultValue Le istanze non collegate in modo esplicito a una chiave vengono collegate alla chiave radice dell'oggetto predefinito SemanticValue.

Dopo l'utilizzo di un SemanticResultValue oggetto per impostare , Valuese è contrassegnato con la chiave radice predefinita o da qualsiasi particolare SemanticResultKey, tale valore non deve essere modificato o si verificherà un'eccezione durante le operazioni di riconoscimento.

Nell'esempio seguente verrà generata un'eccezione perché imposta e quindi modifica la radice Value di un oggetto Grammar.

GrammarBuilder gb=new GrammarBuilder();
gb.Append(new SemanticResultValue("One"));
gb.Append(new SemanticResultValue("Two"));

D'altra parte, il codice nell'esempio seguente è consentito. Anche se definisce più istanze di SemanticResultValue, vengono incluse in un Choices oggetto e ne verrà usato solo uno per impostare il valore della chiave bgOrfgText.

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

Costruttori

Nome Descrizione
SemanticResultValue(GrammarBuilder, Object)

Inizializza una nuova istanza della SemanticResultValue classe e associa un valore semantico a un GrammarBuilder oggetto .

SemanticResultValue(Object)

Inizializza una nuova istanza della SemanticResultValue classe e specifica un valore semantico.

SemanticResultValue(String, Object)

Inizializza una nuova istanza della SemanticResultValue classe e associa un valore semantico a un String oggetto .

Metodi

Nome Descrizione
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToGrammarBuilder()

Restituisce un'istanza di GrammarBuilder costruita dall'istanza corrente SemanticResultValue .

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche