Parallel SSMs

This topic elaborates on parallel SSMs, which are introduced in Multiple, parallel SSMs.

For most application tasks it is best to train individual SSMs to fill specific slots, and then combine the SSMs in one wrapper grammar. The idea is to have specialized SSMs for each slot. The wrapper grammar activates the SSMs in parallel so they operate simultaneously on the recognized sentences.

Note: In general, you get better accuracy with parallel SSMs that return independent meanings than with single SSMs that return combined meanings. This is especially true if there are relatively few sentences in the training file.

A typical use for parallel SSMs is with call router applications, where the technique is known as matrix routing. For example, consider an application where the sentence “I want to call home” fills slots action=dial and object=home. With two SSMs, one trains sentence variations that fill action, and the other trains for object. Simple training sentences might include:

Action SSM

Object SSM

I want to call.

Phone call to

I want to send a message to

Send a message to

Message to

...

home

my house

to my house

my home

the office

...

For example, the training file for the Action SSM might contain:

<SSM label="action">
     <meaning> dial </meaning>
     <meaning> enroll </meaning>
     <meaning> NA </meaning>
</SSM>

The training file for the Object SSM might contain:

<SSM label="object">
     <meaning> home </meaning>
     <meaning> office </meaning>
     <meaning> NA </meaning>
</SSM>

Above, when you activate the two SSMs in parallel, one fills the action slot, and the other fills object.

For most application tasks, it is best to design the SSMs to avoid overlap (two SSMs that set the same slot). The idea is to have specialized SSMs for each purpose where each SSM is responsible for filling a different slot.

See Using in applications (wrapper grammars).