#pragma section-numbers 2 || {{attachment:dialogs.png}}|| = Dialogs = `dialogs` is an open-source module for natural language parsing and interpretation. It is written in Python and, while not strictly required, is most useful in conjunction with an ontology server like [[oro-server]]. <> == Presentation == The figure below shows the `Dialogs` module architecture. The user's input is first pre-processed. For instance, "I'm" constructs are expanded into "I am" and then parsed. The parser is a custom-made, rule-based (i.e. grammar-free) tool that extracts the grammatical structure from the user’s sentence. See the [[#Demos | demos]] below for some sample output of the parser. The parser can be used as a stand-alone tool. {{attachment:dialogs_module.png|The Dialogs module|height=400}} The result of the parsing is then sent to the interpretation module, the core of the component. Interpretation consists in three distinct operations: the '''sentence resolution''' (concepts grounding), the '''content analysis''' (what is the intent of the utterance: information, question or desire) and the '''statement building''' (translation into RDF statements). The sentence resolution has three steps: 1. pronouns and anaphora are replaced by, respectively, the correct speaker ID and the ID of the last object spoken about (extracted from the dialogue history), 2. nominal groups are disambiguated and grounded (''noun phrase resolution''), and 3. verbal groups are resolved as well, and their associated thematic roles are retrieved (''verbal phrase resolution''). Interpretation tightly relies on the communication with the knowledge base. All the concepts the robot manipulates are stored in the [[oro | ontology server]] and retrieved through logical queries, except for the verbs that are currently stored in a dedicated library (the action library on the diagram). == Publications == [[http://homepages.laas.fr/slemaign/publis/lemaignan2011what.pdf | What are you talking about? Grounding dialogue in a perspective-aware robotic architecture]], ROMAN 2011 {{{ @inproceedings{lemaignan2011what, author = {S\'everin Lemaignan and Raquel Ros and Rachid Alami and Michael Beetz}, title = {What are you talking about? Grounding dialogue in a perspective-aware robotic architecture}, booktitle = {20th IEEE International Symposium in Robot and Human Interactive Communication}, year = {2011} } }}} [[http://homepages.laas.fr/slemaign/publis/lemaignan2011dialogue.pdf | Dialogue in situated environments: A symbolic approach to perspective-aware grounding, clarification and reasoning for robots]], Grounding Human-Robot Dialog for Spatial Tasks - RSS 2011 workshop (extended abstract) {{{ @inproceedings{lemaignan2011dialogue, author = {Lemaignan, S. and Ros, R. and Alami R.}, title = {Dialogue in situated environments: A symbolic approach to perspective-aware grounding, clarification and reasoning for robot}, conference = {Robotics, Science and Systems, Grounding Human-Robot Dialog for Spatial Tasks workshop}, year = {2011} } }}} [[http://homepages.laas.fr/slemaign/publis/Lemaignan2011.pdf | Anchoring interaction through symbolic knowledge]], HRI Pioneers 2011 (extended abstract) {{{ @inproceedings{lemaignan2011anchoring, author = {Lemaignan, S. and Sisbot A. and Alami R.}, title = {Anchoring interaction through symbolic knowledge}, booktitle = {Proceedings of the 2011 Human-Robot Interaction Pioneers workshop}, isbn = {978-0-557-79488-1}, year = {2011} } }}} == Demos == * [[http://homepages.laas.fr/slemaign/dialogs/demo/parser.html | parser demo]] == Browse the source == You can browse on-line the source code: [[http://trac.laas.fr/git/dialogs|Dialogs on CGIT]] == Installation == {{{#!wiki important In most cases, you also want to install the `oro` knowledge base in order to use `dialogs` for anything useful. Check [[http://www.openrobots.org/wiki/oro-server/#Installation | the oro installation notes]]. Note that `dialogs` needs the `oro` Python bindings (`pyoro`). Do not forget to install them as well. }}} === Via robotpkg === The easiest way to install `dialogs` is through '''robotpkg''': `robotpkg` is a package management system for robotics module we use at the LAAS. It handles dependencies and compilation automatically. If you don't know it, [[http://www.laas.fr/~mallet/robotpkg|have a look here]]. Once installed, you can add the `dialogs` package very easily: {{{ > cd $ROBOTPKG_BASE/speech/dialogs > make update }}} Make also sure your `PYTHONPATH` includes the installation prefix. Typically (with `bash`): {{{ > export PYTHONPATH=$PYTHONPATH:$ROBOTPKG_BASE/lib/python2.6/site-packages }}} You may want to add this line to your `.bashrc` (or equivalent for other shells). You're done! === From the sources === You can grab a snapshot of the sources on the public FTP: ftp://softs.laas.fr/pub/openrobots/dialogs/ Or, to get the latest version of `dialogs`, you can check-out the sources with GIT: {{{ > git clone http://trac.laas.fr/git/robots/dialogs.git }}} `dialogs` uses the standard Python `distutils` mechanism: {{{ > cd dialogs > python setup.py install --prefix=$YOUR_PREFIX }}} Make also sure your `PYTHONPATH` includes the installation prefix. Typically (with `bash`): {{{ > export PYTHONPATH=$PYTHONPATH:$PREFIX/lib/python2.6/site-packages }}} == Documentation == A lot of unit-tests are available. They probably provide the most up-to-date documentation. Check the `*_test.py` scripts in `dialogs` [[http://trac.laas.fr/git/dialogs|source]]. * `dialogs` [[attachment:dialogs-user-guide.pdf | user guide]]