SoftBank Robotics documentation What's new in NAOqi 2.5?

Dialog Lexicon

NAOqi Interaction engines - Dialog Lexicon

Full content: English Lexicon - Japanese Lexicon - French Lexicon


What is dialog lexicon

dialog lexicon is a dictionary of Concepts. Its goal is to make the writing of Dialogs easier.

For further details, see: Dialog topic.

Requirements to use dialog lexicon

The concepts included in dialog lexicon can only be used in a Dialog topic. They are not compatible with the Say, Animated Say, Speech Recognition and Choice boxes.

Why is dialog lexicon an interesting resource

We provide this resource in order to make the writing of interactions in QiChat easier.

Dialog based interactions can be divided into two main groups:

  • what the robot says;
  • what the robot understands.

Although it is quite easy to make the robot say anything, understanding the answer is much more difficult.

This is where Concepts prove to be useful. Concepts comprise synonyms for specific answers (stand-alone concepts) and ready-made grammatical structures (patterns) to broaden the spectrum of what the robot can understand.

So, instead of having to build huge lists by yourself, you can use Aldebaran’s predefined ones.

Examples

  • the ~yes concept comprises more than seventy different ways to tell the robot that you agree, like “yes”, “sure”, “alright”, “let’s do it”, etc. Same for the ~no concept;
  • the ~can_you concept is a ready-made grammatical structure that allows you to understand a great variety of questions regarding the capacity of the robot to do something, like “Can you dance?”, “Do you know how to dance?” or “Will you please dance?”. This is possible by writing “~can_you dance” where “dance” can be replaced by any action of your choice, depending on your needs. This way, you could also write “~can_you do pushups”.

A short list of the most used concepts

Stand-alone concepts Explanation
~yes Let the robot knows you agree.
~no Let the robot knows you disagree.
~repeat_it Let the robot knows you want him to repeat what he said.
~i_didnt_understand Let the robot knows you didn’t understand what he said.
~i_dont_know Let the robot knows you don’t know what he is talking about or that you have no opinion on the matter.
Patterns Examples
~can_you ~can_you dance” -> “Can you dance?”
~what_is ~what_is a robot” -> “What is a robot?”
~you_are ~you_are cute” -> “You are cute.”
~are_you ~are_you intelligent” -> “Are you intelligent?”
~i_am ~i_am feeling good” -> “I’m feeling good.”
~who_is ~who_is Barack Obama” -> “Who is Barack Obama?”
~do_you_have ~do_you_have a brother” -> “Do you have a brother?”
~i_want_to ~i_want_to play with you” -> “I want to play with you.”
~can_i ~can_i touch your head” -> “Can I touch your head?”

How to use dialog lexicon in QiChat

In a dialog topic, you can import the lexicon by adding include: lexicon_enu.top right after the header of the topic:

topic: ~my_own_topic()
language: enu

include: lexicon_enu.top

Be careful to import the lexicon in the right language. If you want to use the lexicon in a French topic, you will have to write include: lexicon_frf.top.

Note: at the moment, only English and French (and Japanese in a lesser way) have lexicons available.

Once the lexicon has been included, you can use Concepts in your QiChat rules:

u:(~i_am happy) I’m glad to hear that!

u:(~can_you dance) Do you want me to dance?
    u1:(~yes) Okay, let’s dance!
    u:(~no) Let’s do something else then!

Dynamic concepts

Dynamic concepts are automaticaly filled.

robotname

Robot name is the robot name. For example Pepper or NAO or Romeo.

Example

topic: ~name()
language: enu

include: lex_frf.top
u:(who ~are_you) ~i_am $Dialog/MyRobotName

myrobotname

My Robot name is the robot name given on robot web page.