simulation.user package

Submodules

simulation.user.human_user module

Human (“interactive”) User

Author: Krisztian Balog, Shuo Zhang

class simulation.user.human_user.HumanUser

Bases: simulation.user.user.User

Human user

generate_response(utterance)

Generates response based on the received system utterance.

Parameters:utterance – system utterance

Returns: response

init_dialog()

Initiates dialog with the conversational system.

Returns: response

simulation.user.simulated_user module

User Simulator Class

This class is a user simulation client for interating with chatbots.

Author: Shuo Zhang, Krisztian Balog

class simulation.user.simulated_user.SimulatedUser(persona, preferences)

Bases: simulation.user.user.User

Simulated user

generate_response(utterance, persona=None)

Generates response based on the received system utterance.

Parameters:
  • utterance – system utterance
  • persona – persona

Returns:

init_dialog()

Initiates dialog with the conversational system.

Returns: initial utterance

print_user()

Prints user profile.

Returns: None

update_persona(movie, rate)

Update pereference by adding new movie

Parameters:
  • movie – the recognized new movie
  • rate – the movie rate
user()

Returns user profile in JSON format.

Returns: user profile in JSON format

simulation.user.user module

Base (abstract) user class

Author: Krisztian Balog, Shuo Zhang

class simulation.user.user.User

Bases: abc.ABC

Base user class.

generate_response(utterance, persona=None)

Generates response based on the received system utterance.

Parameters:
  • utterance – system utterance
  • persona – persona

Returns:

init_dialog()

Initiates dialog with the conversational system.

Returns:

simulation.user.user_generator module

Initial User Profile Generator

Generate initial user profiles based on actual movielens users

User profile logic:
Persona:
empty for now.
Preferences:
Sample from the real users using MovieLens 20M Dataset

Author: Shuo Zhang

class simulation.user.user_generator.UserGenerator

Bases: object

Class for generating random users.

initial(num_user=5, num_movie=8, num_genre=8, if_title=True)

Creates example initial user profiles.

Parameters:
  • num_user – number of examples users
  • num_movie – number of movies with references
  • num_genre – number of geners with references
  • if_title – to dispplay movie id or movie title

Returns: all users

static movies()

Loads movies with genres.

Returns: movie db

static rate_pre(rate, upper_limit=4, lower_limit=2)

Rates the preference.

Parameters:
  • rate – movie rate
  • upper_limit – threshold of being positive
  • lower_limit – threshold of being negative

Returns: rating

rates(if_title=True)

Dumps the ratings to get genres preferences over files.

genre_preference = sum preference_of_movie_has_this_genre / num_of_movie_has_this genre

Parameters:if_title – to display movie id or movie title

Returns: all user ratings

static samp(pro, dist, attribute)

Based on random generated probability, determine the persona category.

Parameters:
  • pro – probablity
  • dist – probability distribution
  • attribute – attribute

Returns: persona category

Module contents