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 |