Skip to content

iai-group/MovieBot

Repository files navigation

IAI MovieBot

Code style: black Documentation Status Tests Coverage Badge Python version

IAI MovieBot is a conversational recommender system for movies. It follows a standard task-oriented dialogue system architecture, comprising natural language understanding (NLU), dialogue manager (DM), and natural language generation (NLG) components. Additionally, it includes a user model and a recommendation engine. Some modules may use different models, which can be trained using the provided training utilities. It also comes with different deployment platforms (such as Telegram and Flask REST). The distinctive features of IAI MovieBot include a task-specific dialogue flow, a multi-modal chat interface, and an effective way to deal with dynamically changing user preferences. While our current focus is limited to movies, the system aims to be a reusable and extensible development framework that can support users in accomplishing recommendation-related goals via multi-turn conversations.

The v1.0 version of IAI MovieBot has been presented as a demonstration paper at CIKM'20 [PDF], while the v2.0 version was presented at WSDM'24 [PDF].

Versions

Available versions of IAI MovieBot:

Installation and usage

Installation and usage instructions are available in the documentation.

Components

Below is the overview of IAI MovieBot 2.0 architecture. Blue components are inherited from IAI MovieBot 1.0 and the green ones are new additions. Training utilities are available for components marked with a star (*).

MovieBot v2 architecture

  • Platform [doc]
    • Terminal
    • Telegram
    • Flask REST
    • Flask socket.io
  • Natural Language Understanding (NLU) [doc]
    • Rule-based
    • JointBERT
  • Dialogue management
    • Dialogue policy
      • Rule-based
      • Deep Q-Network (DQN)
      • Advantage Actor-Critic (A2C)
    • Dialogue state tracking
  • User model
  • User model explainability
  • Recommendation engine
  • Natural Language Generation (NLG) [doc]

Training utilities:

  • NLU training (JointBERT)
  • Reinforcement learning training (DQN and A2C) using a user simulator [doc]

Demos

IAI MovieBot v2.0 can be tried here.

MovieBot v2.0

IAI MovieBot v1.0 can be tried on the Telegram channel @iai_moviebot_bot.

MovieBot v1.0 Telegram demo

Contributions

Contributions are welcome. Changes to IAI MovieBot should conform to the IAI Python Style Guide.

Citation

For the most recent version (v2.0) of IAI MovieBot, please cite:

@inproceedings{Bernard:2024:WSDM,
    author = {Bernard, Nolwenn and Kostric, Ivica and Balog, Krisztian},
    title = {IAI MovieBot 2.0: An Enhanced Research Platform with Trainable Neural Components and Transparent User Modeling},
    year = {2024},
    booktitle = {Proceedings of the 17th ACM International Conference on Web Search and Data Mining},
    pages = {1042--1045},
    doi = {10.1145/3616855.3635699},
    series = {WSDM '24}
}

For the v1.0 version of IAI MovieBot, please cite:

@inproceedings{Habib:2020:CIKM,
    author = {Habib, Javeria and Zhang, Shuo and Balog, Krisztian},
    title = {IAI {MovieBot}: {A} Conversational Movie Recommender System},
    year = {2020},
    booktitle = {Proceedings of the 29th ACM International Conference on Information and Knowledge Management},
    pages = {3405--3408},
    doi = {10.1145/3340531.3417433},
    series = {CIKM '20}
}

Contributors

IAI MovieBot is developed and maintained by the IAI group at the University of Stavanger.

(Alphabetically ordered by last name)

  • Javeria Habib (2020)
  • Krisztian Balog (2020-present)
  • Nolwenn Bernard (2022-present)
  • Ivica Kostric (2021-present)
  • Weronika Łajewska (2022-present)
  • Martin G. Skjæveland (2022)
  • Shuo Zhang (2020)