iai-group / moviebot Goto Github PK
View Code? Open in Web Editor NEWIAI MovieBot
Home Page: https://iai-group.github.io/MovieBot/
License: MIT License
IAI MovieBot
Home Page: https://iai-group.github.io/MovieBot/
License: MIT License
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" line from all files, as it is not common practice.
Reimplement terminal-based version using Questionary.
Rename BOT to TELEGRAM in config and classes.
Make terminal version the default.
Add init.py to all modules and submodules. For sphinx to treat them as modules instead of namespaces.
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.
Extend the base Controller class with necessary method signatures for wanted functionality across all controllers.
Implement a restart method for all controllers.
System revealment:
Proposed solution:
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.
Use sphinx-autoapi
to make automatc API documentation (without having to generate .rst files offline).
Add SemanticAnnotation as a parameter to ItemContraint.
This can be useful for evaluation, but also for easier finding of overlapping annotations.
It's Figure 1 in the paper
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.
Have a REST API that uses the response as the bot response utterance. Without any 3rd party integration.
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
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.
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
Keep all annotation-related classes under nlu.annotators
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.
Make an evaluation folder where diferent annotators can be evaluated.
Hierarchy in the docummentation should be expanded.
It'd be enough to state in the README that we follow the IAI Guidelines
IAI MovieBot doesn’t need to be typeset in italics in the documentation files.
Docstrings should be in google style for better readability.
It would be good to have SlotAnnotator class as abstract so we can inherit different classes from it, i.e rule-based annotation, neural models.
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.
Expand CONTRIBUTING.md with explanation of pull request workflow.
Set up a GitHub page to chat with MovieBot and retire Telegram server.
Add pre-commit hooks to enforce when any file is updated it also has to follow IAI style and formatting guidelines.
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
Move intents and utterance folders to core/shared folder.
Store utterance history in dialogue context.
NLU module is being actively worked on so this is a priority for expanding test coverage.
It would be nice to get >90% coverage for the module.
Below are some important information to add to the documentation:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.