gpt4 book ai didi

java - 如何在 Java 中使用 JSGF 语法生成字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:28 25 4
gpt4 key购买 nike

JSpeech Grammar Format允许用户为大括号中的单独字符串指定标签,如下所示:

 <jump> = jump { primitive jump }  [up] |
jump [to the] (left { primitive jump_left } |right { primitive jump_right } );

 <effects> = nothing happens { NOTHING_HAPPENS } | ( [will] die | dies ) { OBJECT_DESTRUCTION } | (get|gets) new (coin|coins) { COIN_INCREASE };

引用的 specification 的第 4.6.1 节更详细地描述了标签的使用。 .

Sphinx4中,您可以使用RuleParse中的getTags()方法捕获这些标签。因此,如果用户说“向左跳转”,则以下标记将返回“原始jump_left

现在,我想做完全相反的事情 - 给定标签,我想将它与字符串匹配。因此,对于“NOTHING_HAPPENS”,我希望得到“什么也没有发生”,或者对于“OBJECT_DESTRUCTION”,得到一个包含所有可能选项的数组:“会死,死,死”。

有没有这样的方法可以以这种方式解析语法文件,或者我必须对其进行硬编码吗?

最佳答案

我的解决方案是生成 JSGF 文件定义的所有可能的句子。这可以通过 Sphinx 中语法类提供的 dumpRandomSentences 或 getRandomSentence 方法轻松完成,并将它们返回给识别器,识别器将打印出标签。

我的项目中的示例代码:

    for (int i = 0; i < 20000; i++) {
String utterance = grammar.getRandomSentence();
String tags;
try {
tags = parser.getTagString(utterance);
System.out.println(tags+" ==> "+utterance);

} catch (GrammarException e) {
error(e.toString());
}
}

关于java - 如何在 Java 中使用 JSGF 语法生成字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23913757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com