簡體   English   中英

如何在Java中使用JSGF語法生成字符串?

[英]How to generate string using a JSGF grammar in Java?

JSpeech語法格式允許用戶為大括號中的單獨字符串指定標簽,如下所示:

 <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 };

在參考規范的 4.6.1節中將更加詳細地描述使用標簽。

Sphinx4您可以使用捕捉這些標簽getTags()RuleParse方法。 因此,如果用戶說“ 跳轉到左側 ”,則將返回以下標記“ 原始jump_left

現在,我想做相反的事情-給定標簽,我想將其與字符串匹配。 因此,對於“ NOTHING_HAPPENS ”,我希望獲得“ 什么也不會發生 ”,對於“ OBJECT_DESTRUCTION ”,則希望獲得所有可能的選擇:“ 將死亡,死亡,死亡 ”。

有沒有這樣的方法可以以這種方式解析語法文件,或者我必須對其進行硬編碼?

我的解決方案是生成JSGF文件定義的所有可能的句子。 可以使用Sphinx的Grammar類提供的dumpRandomSentences或getRandomSentence方法輕松完成此操作,並將其返回給Recognizer,后者將打印出標簽。

我的項目的示例代碼:

    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());
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM