PyUserSimulation
A Python Statistical User Simulation library for developing and evaluating Dialogue Systems.
Install / Use
/learn @kashyapakshay/PyUserSimulationREADME
Union College User Simulation Library
A Python Statistical User Simulation library for developing and evaluating Dialogue Systems.
Statistical User Simulation models are useful for building simulations of users for testing spoken and adaptive dialogue systems when it is too expensive to run experiments with real humans.
Also See: RNN-based User Simulation (in progress) - Seq2Seq
The basic principle of a User Simulation is that given a system action (such as generating an instruction, providing suggestions, etc. by the dialogue system) at time t, u<sub>s,t</sub>, it predicts the action the next action a real user would perform in response at time t + 1, u<sub>a,t+1</sub> (such as following the instruction, accepting or rejecting the suggestions, etc.)
The models assume Markov Property holds, i.e, the next user action depends only on the corresponding system action and not the past action/dialogue history.
The models accept (u<sub>s,t</sub>, u<sub>a,t+1</sub>) pairs as training data.
The library has two models to build User Simulations:
# Bigram-based Model [1]
from models import BigramModel
# k-Means Clustering-based Model [2]
from models import ClusterModel
How to use:
userSimulation = BigramModel()
# OR
# userSimulation = ClusterModel()
userSimulation.recordAction(userAction1, systemAction1)
userSimulation.recordAction(userAction2, systemAction1)
userSimulation.recordAction(userAction1, systemAction2)
# ...
# Get predicted user action (at next time step t) after performing
# systemAction (at time t - 1)
userSimulation.getPredictedUserAction(systemAction1)
References:
[1] Rieser, V. and Lemon, O. Reinforcement Learning for Adaptive Dialogue Systems. Springer, New York, 2011, 133-134.
[2] Rieser, V. and Lemon, O. Cluster-based User Simulations for Learning Dialogue Strategies. INTERSPEECH, 2006.
