Code Monkey home page Code Monkey logo

moviebot's People

Contributors

fseimb avatar ikostric avatar imsure318 avatar javeriahabib09 avatar kbalog avatar nob0 avatar werlaj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

moviebot's Issues

Create Utterance class

Abstract base class with: utterance string, timestamp, and agent/user.
Child classes for AgentUtterance and UserUtterance.

Update dialog history to use this class.

Remove __author__

Remove "author" line from all files, as it is not common practice.

Add __init__.py to modules

Add init.py to all modules and submodules. For sphinx to treat them as modules instead of namespaces.

Create Span class

Create San class that can be several tokens long. Token is a single word and should be a subclass of Span.
Use Span for semantic annotation.

Create non-supported actions

System revealment:

  • User is aware of the capabilities of the system (in case of unsuccessful recommendation, the user understands what went wrong/what information was missing)
  • Revealing system capabilities (limitations, what kind of answer is expected)

Proposed solution:

  • Create a list of actions that may be desired but are not supported in the system yet. The actions should be recognized in the user intent and handled by the system. The system should inform the user that the given action is recognized, but the system cannot perform it.

Proposed architecture:
Each action should have one of the following labels assigned: {Capability, Limitation, Unknown}. The Capability is the regular action that is well-defined and can be performed by the system in response to user intent. The Limitation is the action that is recognized by the system but is not supported. It requires an explanation provided by the system (system revealment) that includes the type of the recognized action and information on why it cannot be performed. The Unknown action is not recognized by the system. The system should inform the user that the action was not recognized and the intent should be reformulated.

Intents provided as options not recognized correctly

  • Removing preferences doesn't change the current IN (sometimes it doesn't work when using the provided options)
  • Using the provided option I want to restart for a new movie was recognized as intent inquire(actors)

Option to run MovieBot as a Flask server without integrations.

The problem

The current implementation does not allow for MovieBot to only run as a RESTful server.
This would make it possible and easier for other services to talk to the bot.

Proposed solution

Have a REST API that uses the response as the bot response utterance. Without any 3rd party integration.

Improve dialogue modeling

Some particularly problematic parts:

  • next_action in dialogue_policy.py
  • generate_dact in nlu.py
  • update_state_user in dialogue_state_tracker.py

For more robust dialogue modeling, the following solution was proposed. It considers not only the most likely user intent, but a ranked list of predicted user intents.

user_intents = predict_user_intent(user_utterance, conv_history)

for user_intent in user_intents:
  Check if user_intent can be executed	
    Do something
    Break
  Else
    Sorry, I don’t understand

Use of UserUtterance class in NLU module

Need to make neccessary modifications to use UserUtterance class instead of raw input string within the application. This will make it easier to keep history and have the preprocessed text (tokens) always available.

Add NLTK download to CI for tests

Some CI tests are failing because NLTK downloads are not done.

Add a step like that in CI:

- name: Download NLTK dependencies
        run: |
          python -m nltk.downloader punkt wordnet stopwords omw-1.4

Factor out recommender model

Currently the recommender model is not a separate module. It is more implicit and based on slots. Factoring out recommender model so that it can be improved in the future is useful.

  • Design a RecommenderModel base abstractclass
  • Move the current recommender logic under SlotBasedRecommenderModel which is a subclass of RecommenderModel

Missing contributing file

It would be good to have a Contributing.md file so people would know what to consider when making a pull request or a contrinution.

Crash due to utterance parsing

TypeError: must be str, not NoneType when user input contains some punctuation marks, like -

In moviebot/nlu/user_intents_checker.py", line 592, in get_annotation_relevance

Improve documentation

Below are some important information to add to the documentation:

  • State minimum python version
  • Add quickstart instructions for the different options (i.e., Telegram, console) to run the demo
  • Add user and agent dialogue acts
  • Add recommendation dialogue flow

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.