SemanticResultValue Класс

Определение

Представляет семантическое значение и, при необходимости, связывает значение с компонентом грамматики распознавания речи.

public ref class SemanticResultValue
public class SemanticResultValue
type SemanticResultValue = class
Public Class SemanticResultValue
Наследование
SemanticResultValue

Примеры

В следующем примере возвращается Grammar объект , распознающий команду "Set/Change/Alter Foreground/Background ... [список цветов]". SemanticResultValue Экземпляры и SemanticResultKey (в сочетании с Choices объектами и GrammarBuilder ) используются для определения семантики, которую можно анализировать при распознавании. Проанализированная семантика определяет, какой цвет был запрошен, а также будет ли изменен передний план или фон.

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

Комментарии

Использование объектов и SemanticResultKey в сочетании SemanticResultValue с GrammarBuilder и Choices— это самый простой способ разработки семантической структуры для Grammar. Доступ к семантической информации для фразы осуществляется путем получения экземпляра SemanticValueс помощью Semantics свойства в RecognizedPhrase.

Примечание

Значения, управляемые SemanticResultValue объектами, определяются экземплярами Object , передаваемыми их конструкторам. Базовым типом должен Object быть bool, int, floatили string. Любой другой тип не позволит создать Grammar экземпляр с SemanticResultValue.

Типичное использование экземпляра SemanticResultValue связывает экземпляр с распознаваемым компонентом Grammar, таким как фраза, правило или Choices объект . Если связанный компонент используется как часть операции распознавания, SemanticResultValue используется для определения значения в семантике возвращаемой фразы.

Существует два основных метода связывания экземпляра SemanticResultValue с элементом грамматики в зависимости от конструктора, используемого SemanticResultValueдля создания .

  • Если для создания SemanticResultValue объекта используется только значение (заданное экземпляром Object), то в дополнение к объекту SemanticResultValue связывается с предшествующим ему компонентом GrammarBuilder грамматики.

    Например, в приведенном ниже фрагменте кода, если Grammar созданный с помощью этого GrammarBuilder экземпляра распознает слово "фон", в семантике распознаваемой true фразы задается значение .

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

    Дополнительные сведения см. в описании SemanticResultValue(Object).

  • Если используется фраза строкового значения или определенный GrammarBuilder экземпляр вместе с Object , задающим SemanticResultValue значение, это значение автоматически связывается со строковой фразой или экземпляром GrammarBuilder . Если фраза или GrammarBuilder объект используются в процессе распознавания, значение будет присваиваться семантике распознаваемой фразы.

    В следующем примере это показано и функционально эквивалентно предыдущему примеру, в котором использовались явные вызовы Append и SemanticResultValue(Object). Если в логике распознавания используется слово "фон", значение true будет добавлено к распознанной семантике.

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

    Дополнительные сведения см. в описании SemanticResultValue(GrammarBuilder, Object) и SemanticResultValue(String, Object).

Для использования в распознавании Grammar все SemanticResultValue экземпляры должны быть связаны с одним из SemanticValue объектов , используемых этим Grammarобъектом . Это делается путем связывания семантического ключа с SemanticResultValue.

Семантические ключи можно явно прикрепить к объекту SemanticResultValueSemanticResultKey с помощью объекта . SemanticResultValue Экземпляры, не присоединенные явно к ключу, присоединяются к корневому ключу по умолчанию SemanticValue.

SemanticResultValue После использования для задания Value, независимо от того, помечен ли он корневым ключом по умолчанию или каким-либо конкретным SemanticResultKey, это значение не должно быть изменено, иначе во время операций распознавания возникнет исключение.

Следующий пример вызовет исключение, так как он задает и изменяет корень Value объекта Grammar.

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

С другой стороны, код в следующем примере разрешен. Хотя он определяет несколько экземпляров SemanticResultValue, они включаются в Choices объект , и только один из них когда-либо будет использоваться для задания значения ключа bgOrfgText.

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

Конструкторы

SemanticResultValue(GrammarBuilder, Object)

Инициализирует новый экземпляр класса SemanticResultValue и связывает семантическое значение с объектом GrammarBuilder.

SemanticResultValue(Object)

Инициализирует новый экземпляр класса SemanticResultValue и указывает семантическое значение.

SemanticResultValue(String, Object)

Инициализирует новый экземпляр класса SemanticResultValue и связывает семантическое значение с объектом String.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToGrammarBuilder()

Возвращает экземпляр GrammarBuilder, созданный из текущего SemanticResultValue.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел