Logios

From Olympus
Jump to: navigation, search

Logios is a language compilation suite for dialog systems. It is part of the Sphinx repository, and it has special facilities for building knowledge bases for Phoenix and Sphinx. Logios is specifically designed to allow the generation of knowledge bases from a grammar definition, as opposed to a corpus of sentences or transcriptions. To do the latter you should use the lmtool service.

Contents

Getting Logios

Logios comes as part of the Olympus distribution. The current version of Logios can also be downloaded from Sourceforge.

What Logios Does

Logios.png
Logios takes as input:
  • an extended phoenix grammar file
  • (optional) class files
  • (optional) a hand pronunciation file
And produces as output:
  • a dictionary file for the asr
  • a statistical language model file for the asr
  • control and probdef files for asr token classes
  • a compiled grammar file for the phoenix parser
  • a forms file for the phoenix parser

Using Logios

Logios can be configured to make use of Olympus file structure (specifically the Resources/ tree) so that generated files end up in the right folders and can used directly by Olympus. There is a script that will do this:

 cd %OLYMPUS_ROOT%
 Tools\logios\scripts\makeTree.bat

Logios Extensions to the Phoenix Grammar

Logios extends the Phoenix grammar representation to support the definition of class-based grammars and to coordinate these with language models. You can specify extenal class files using

 %[CLASSNAME]%

where CLASSNAME implies a CLASSNAME.class file in the GRAMMAR folder. .class files should have class items in parentheses, one to a line. You should have whitespace (say a tab) to start each line. For example:

 (firstitem)
 (second item)

You can also specify an item probability:

 (third item)	#%%0.25%%

Classes become nets in the grammar and can be used in the same way, e.g. '[CLASSNAME]'.

Note that classes defined in the grammar require special handling in the (Sphinx) decoder. This should be transparent to most developers but this a quick description. All class entries are tokenized and the pronunciation is set to a concatenation of the individual words:

 (second item) -->  SECOND=ITEM   S EH K AX N D AY T EH M

All class entries are also given a suffix (e.g. '::C01') so that each entry can be unique lexical item. This allows the same words to appear in multiple classes while ensuring that the language model has correct probabilities. This means you may occasionally find something like the following in the dictionary and in logs:

 SECOND=ITEM::C02

These modifications are removed by the decoder after recognition and before the hypothesis is sent out. This means that words in hypotheses will match those used in the grammar. Be careful not to use grammar words with embedded '='s; they will be replaced by a space. On a related note, words in the grammar with underscores ('_') will be used as such by the decoder but that the Phoenix parser will remove them before parsing.

Personal tools