音声認識に Microsoft の Speech SDK を使用するソフトウェア用の GRXML 文法を構築しています。
タグは、特定のドキュメントが見つからなかったタグ形式「properties-ms/1.0」に従う必要があります(私の質問に答えないMSDNは別として)。
私の主な関心事は、「1 2 3 4」のような認識されたテキストを数字「1234」に変換するために数字にタグを付けることです。これがアイデアです:
<rule id="CODE">
<item repeat="4">
<ruleref uri="#DIGIT"/>
</item>
</rule>
<rule id="DIGIT">
<one-of>
<item>
one
<tag>"1"</tag>
</item>
<item>
two
<tag>"2"</tag>
</item>
<item>
three
<tag>"3"</tag>
</item>
<item>
four
<tag>"4"</tag>
</item>
<item>
five
<tag>"5"</tag>
</item>
</one-of>
</rule>
これは連結しませんが、少なくとも各桁のセマンティック値を取得します。
ただし、数字にこのようなルールを使用すると、実行時にプログラムが中断し、「ルール 'CODE' のセマンティック値は既に設定されており、変更できません。」という例外がスローされます。
セマンティック タグ付けを DIGIT ルールの「繰り返し」と一緒に機能させるにはどうすればよいですか? CODE ルールを 4 つの同一の項目に分割したくありません。それぞれが異なるセマンティック キーを持ちます。私の文法には、桁数が固定されていないケースが他にもあります。
また、数値の一般的な意味を提供するためにタグを連結する方法はありますか。