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) |