Let us consider these user utterances and their corresponding DAs:
| Utterance | DA |
|---|---|
| I want a cheap restaurant in the center | inform(price=cheap,area=center) |
| I want a pricey place | inform(price=expensive) |
| Find me something moderately priced | inform(price=moderate) |
| What is the price range | request(price) |
| I want something in the south | inform(area=south) |
| Hello | hello() |
Now, assuming you build multi-class classifiers for each intent-slot pair in the data, let us look at a few of them.
For the intent-slot pair inform-price, you'll have a multiclass classifier with the values [null, cheap, moderate, expensive].
The target classes for the example utterances would be:
| Utterance | class |
|---|---|
| I want a cheap restaurant in the center | cheap |
| I want a pricey place | expensive |
| Find me something moderately priced | moderate |
| What is the price range | null |
| I want something in the south | null |
| Hello | null |
Note the null class for all instances which simply don't mention the inform-price intent-slot pair.
For the inform-area intent-slot pair, you'd have something like [null, center, south, north, east, west...].
The classes for the same data would look like this:
| Utterance | class |
|---|---|
| I want a cheap restaurant in the center | center |
| I want a pricey place | null |
| Find me something moderately priced | null |
| What is the price range | null |
| I want something in the south | south |
| Hello | null |
Look at how the same input utterances produce different classes with this classifier.
For request-price, you would likely have a classifier that just says 0/1 (present, not present), as there are no values for this intent-slot pair:
| Utterance | class |
|---|---|
| I want a cheap restaurant in the center | 0 |
| I want a pricey place | 0 |
| Find me something moderately priced | 0 |
| What is the price range | 1 |
| I want something in the south | 0 |
| Hello | 0 |