SemanticResultValue Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет семантические значения и при необходимости связывает значение с компонентом грамматики распознавания речи.
public ref class SemanticResultValue
public class SemanticResultValue
type SemanticResultValue = class
Public Class SemanticResultValue
- Наследование
-
SemanticResultValue
Примеры
В следующем примере возвращается функция Grammar , которая распознает команду "Set/Change/Alter Foreground/Background ... [список цветов]". SemanticResultValueи SemanticResultKey экземпляры (в сочетании с GrammarBuilderChoices объектами) используются для определения семантики, которую можно проанализировать при распознавании. Семантика синтаксического анализа определяет, какой цвет запрашивался, и следует ли изменять передний план или фон.
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;
}
Комментарии
SemanticResultValue Использование и SemanticResultKey объекты в сочетании с GrammarBuilder и Choices, это самый простой способ разработки семантической структуры для Grammarобъекта. Доступ к семантической информации для фразы осуществляется путем получения экземпляра SemanticValueс помощью Semantics свойства RecognizedPhrase.
Замечание
Значения, управляемые SemanticResultValue объектами, определяются экземплярами, передаваемыми Object их конструкторам. Базовый тип этого Object типа должен быть bool, intfloatили 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 экземпляр вместе со ObjectSemanticResultValue значением, указывающим значение, это значение автоматически связано с строковой фразой или экземпляром GrammarBuilder . Если фраза или GrammarBuilder объект используется в процессе распознавания, значение будет назначено семантике распознанной фразы.
Следующий пример иллюстрирует это и функционально эквивалентен предыдущему примеру, который использовал явные вызовы Append и SemanticResultValue(Object). Если логика распознавания использует слово "фон", значение
trueбудет добавлено в распознаваемую семантику.fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background", true));Дополнительные сведения см. в описании SemanticResultValue(GrammarBuilder, Object) и SemanticResultValue(String, Object).
Для использования Grammar в распознавании все SemanticResultValue экземпляры должны быть связаны с одним из SemanticValue объектов, используемых этим Grammar. Это делается путем связывания семантического ключа с параметром SemanticResultValue.
Семантические ключи могут быть явно присоединены к SemanticResultValueобъекту SemanticResultKey . SemanticResultValue экземпляры, не присоединенные явно к ключу, присоединяются к корневому ключу по умолчанию SemanticValue.
SemanticResultValue После того, как он был использован для задания Valueметки с корневым ключом по умолчанию или любым конкретнымSemanticResultKey, это значение не должно быть изменено или исключение будет возникать во время операций распознавания.
В следующем примере возникает исключение, так как оно задает, а затем изменяет корневой GrammarкаталогValue.
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() |
Возвращает экземпляр, созданный из текущего SemanticResultValue экземпляраGrammarBuilder. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |