Code Monkey home page Code Monkey logo

iwsds2023-modular-dialog-systems's Introduction

Module Selection: A new task for Dialog Systems

Introduction

Many different dialog systems exist, which usually cover limited domains. This paper examines the Modular Dialog System Framework to combine many conversational agents to create a unified, diverse dialog system. The Modular Dialog System treats the underlying conversational agents as black boxes and works with any dialog system without further adaption. It also works with commercial frameworks, such as Google Dialogflow or IBM Watson Assistant, in which the inner workings are unknown company secrets. We propose a new task, Module Selection, choosing a conversational agent for a user utterance. Also, we propose an evaluation methodology for Modular Dialog Systems. Using the three available commercial frameworks, Google Dialogflow, Rasa, and IBM Watson Assistant, we create a dataset and propose three models that serve as a strong baseline for future research in Module Selection. Also, we examine the performance difference between a Modular Dialog System and the same dialog system implement in a single, monolithic system. We publish our dataset and source codes as open source.

You can find the dataset we published in the final_data folder in this repository.

Dataset Creation

split_data.py

Read the input file and create the splitted dataset.

to run it:

python -m split_data

Get responses and merge all responses for modular chatbot experiments

google_dialogflow/get_responses.py

Create google dialogflow chatbots for each splits. Then precess it by each google dialogflow chatbots and save the responses.

to run it:

python -m google_dialogflow.get_responses

google_dialogflow/merge_dialogflow.py

Merge all split responses for each google dialogflow chatbot. Then save all the responses.

to run it:

python -m google_dialogflow.merge_dialogflow

ibm_watson_assistant/get_responses.py

Create ibm watson assistant chatbots for each splits. Then precess it by each ibm watson assistant chatbots and save the responses.

to run it:

python -m ibm_watson_assistant.get_responses

ibm_watson_assistant/merge_ibm_watson.py

Merge all split responses for each ibm watson assistant chatbot. Then save all the responses.

to run it:

python -m ibm_watson_assistant.merge_ibm_watson

rasa/generate_training_data.py

Create training data for rasa chatbots.

to run it:

python -m rasa.generate_training_data

rasa/README.md

This file have information about how to create rasa chatbot for each split. To do that go to each split directory. Then do the followings for each split.

This code snippet is an example for inhomogenous rasa split 0:

cd rasa/tempfolder/rasa/0
CUDA_VISIBLE_DEVICES=0 
rasa train nlu --config ../../../config.yml

rasa/process_data.py

Create rasa chatbots for each splits. Then precess it by each rasa chatbots and save the responses.

to run it:

python -m rasa.process_data

rasa/merge_rasa.py

Merge all split responses for each rasa chatbot. Then save all the responses.

to run it:

python -m rasa.merge_rasa

merge_all_datasets.py

Merge all chatbot data and create homogenous and inhomogenous dataset for modular dialogsystem.

to run it:

python -m merge_all_datasets

iwsds2023-modular-dialog-systems's People

Contributors

jnehring avatar

Stargazers

Akhyar Ahmed avatar

Watchers

 avatar

Forkers

akhyar-ahmed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.