Я использую грамматику формата jsgf с pocketsphinx. Я хочу иметь возможность сопоставить / распознать только конечное количество возможных предложений ввода (т.е. интерфейс типа управления и контроля).
Однако из-за природы этих «действительных» предложений и фрагмент предложения (под-предложение) с тремя или более словами также является допустимым вводом.
Например, если допустимые предложения:
- Это действительное предложение
- Так это один
тогда грамматика должна содержать:
- Это
- Это действительный
- Это действительное предложение
- действительный
- это действительное предложение
- действительное предложение
- Так это
- Так это один
- это один
[Очевидно, что в этом примере эта грамматика кажется немного странной, но она имеет смысл в том языке / контексте, который я использую.]
Есть ли способ сделать это автоматически с использованием синтаксиса грамматики jsgf или любого инструмента pocketsphinx / CMU Sphinx. Конечно, я мог бы программно сгенерировать файл грамматики с учетом набора действительных полных предложений, но это кажется немного длинным и делает файл грамматики длинным и трудным для непосредственного редактирования (или даже просто для определения того, какие действительные полные предложения).
Лучшее, что я могу придумать, просто используя правила формата jsgf (о которых я знаю), это следующее. (Для примера выше :)
<a> = this is a;
<valid> = (<a> | is a) valid;
<sentence> = (<valid> | a valid) sentence;
<this> = so is this;
<one> = (<this> | is this) one;
(Например, правило соответствует любому вложенному предложению длиной три или более, которое заканчивается словом «действительный».)
Эта грамматика содержит в точности указанные выше допустимые строки. Тем не менее, эта грамматика все еще должна быть сгенерирована программно из набора действительных полных предложений, поэтому я могу также явно перечислить все субпредложения. Однако этот формат немного упрощает просмотр правильных полных предложений непосредственно из файла jsgf.
По сути, мой вопрос: есть ли лучший способ достичь вышеуказанной грамматики с помощью pocketsphinx?