Code Monkey home page Code Monkey logo

dialoguekit's People

Contributors

adrzewiecki avatar ikostric avatar imsure318 avatar jafzali avatar kbalog avatar nob0 avatar werlaj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

dialoguekit's Issues

Create a sample mathematics agent

The problem

Parroting agents are not necessarily the best agents too test with as the poses no logic.
A better solution should be created. So development with UserSimCRS can progress.

Sugested solution

A simple mathematics agent will suffice to develop UserSimCRS further.

Agent conversation flow.

  • Ask simple addition, multiplication and division questions.
  • If user answers correctly ask new question.
  • If user answers wrongly, say that they were wrong.

Create AnnotatedUtterance

Create AnnotatedUtterance and replace Utterance with that wherever appropriate (incl. build_template_from_instances())

Todays Utterance functionality should be kept in the AnnotatedUtterance, while the Utterance class should only contain the uttered text.

Add skeleton for backend

It's needed for

  • Preference modeling
  • Slot annotation
  • (Third-party agent, but we probably don't need to worry about it here.)

Create constant strings

Some strings such as "USER" and "EXIT" are used as constants but not defined in that way.
Find a good location for them.

Rework the NLG template to use core data classes.

The problem

The current NLG template does not use the core classes.
This makes future improvements to the core classes irrelevant to the template. As this is a mayor drawback of the current implementation which uses strings for the template.

Proposed solution

Rework the template structure to use the core classes.
Important to maintain the same functionality as the current solution.

Reformat Platform and Dialogue Manager interaction

The problem

The way the Platform and DM (Dialogue Manager) interact as of now, has made the scope of what the DM does too large and tied to DialogueKit. Restricting communication of participants to native to DialogueKit implementations. Much off what the current DM does should be handled by different implementations of the Platform.

Suggested implementation:

Platform
The Platform should be the way the participants communicate. This can either be native to DialogueKit, or other means such as REST APIs etc.

Dialogue Manager
The DM should only orchestrate the communication, and request the Platform to communicate to the participants.

Implement python special method names for core classes.

The problem

Developer experience

When developing with a package it is quite frustrating if the developing experience is unnecessarily tedious. Two examples: Firstly, when debugging it is quite frustrating to just see a scrambled mess off a hash with the corresponding class name for an object and it is not immediately clear what the content is. Secondly, the same problem occurs when printing an object.

Functionality

Lost of data object functionality hinges on comparisons and hashing. Thus our classes can be easily used, by us and others alike.

Examples of something that we want to work, that do not work currently.

Comparison

A = Intent(text="HELLO")
B = Intent(text="HELLO")

# This will not work
A == B

Hashing

A = Intent(text="HELLO")
B = {}

# This will not work
B[A] = "somevalue"

Proposed solution

Our core classes would be much easier to use if they implemented some of the python class special name methods. The most useful special methods are listed below with link to python docs.

Checkout if the Rasa nlu pipeline can be implemented

The default Rasa nlu pipeline performs well, try to implemented it.

  • Change DialogueKit NLU API to conform with Rasa (i.e., nlu.py)
  • Write a specific instantiation that uses the Rasa NLP pipeline(i.e., nlu_rasa.py)
  • Remove everything else from dialoguekit/nlu/
  • Write some tests to check if it’s working

Ensure compatibility with macOS and Windows.

Some default behaviours are different between macOS and Windows, such as open().
We have to make sure our functionality works across platforms.

Specifically for open(), we need to specify the encoding ex. open(filepath, encoding="uff-8").

Connect items to ontologies

Optionally provide an Ontology for the Item constructor; if given, only properties that are present in the ontology would be allowed.
Likely do the same in ItemCollection.

Create annotation file converters

Create an abstract class for annotation converters, and also implement a converter from dialoguekit/moviebot data to rasa specific format. In addition create files that may be useful as entity type to entity examples, etc.

Design preference model

To comply with the agent-based simulator, we need to design the preference model.
It should be able to:

  • initialize preferences (load data) for a simulator (e.g. sample items to represent the preferences)
  • Keep track of the slots that the users have been received from the agent and sent to
  • Update the next slot(s) based on the previous agent reply (intent and agent slots)

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.