我目前正在开发语音识别应用程序,并且在获取语义结果时遇到了一些问题。这是我语法的一小部分样本:
<grammar version="1.0" xml:lang="en-US" root="rootRule" tag-format="semantics/1.0" xmlns="http://www.w3.org/2001/06/grammar">
<rule id="rootRule">
<one-of>
<item> <ruleref uri="#age"/> <tag> AnswerAge </tag> </item>
<item> <ruleref uri="#room" /> <tag> QuestionRoom </tag> </item>
</one-of>
</rule>
<!-- CA01b: Answer person age -->
<rule id="age">
<one-of>
<item> my age is </item>
</one-of>
<ruleref uri="#numbers"/>
</rule>
<!-- CA02: Ask for room information -->
<rule id="room">
<one-of>
<item> where is room </item>
</one-of>
<ruleref uri="#numbers"/>
</rule>
<!-- Numbers -->
<rule id="numbers">
<item>
<one-of>
<item> four <tag>4</tag></item>
<item> five <tag>5</tag></item>
<item> six <tag>6</tag></item>
<item> seven <tag>7</tag></item>
</one-of>
</item>
</rule>
</grammar>
在提出以下发言时:
1. Where is room 4
2. My age is 4
我希望获得语义结果:
1. QuestionRoom=4
2. AnswerAge=4
我一直在仔细阅读微软关于如何获得此类结果但没有运气的文档。一种可能的解决方案是复制规则&#34;数字&#34;对于rootRule中存在的每一个,但这远不是一个最佳解决方案。有人碰巧知道获得相同结果的更好方法吗?