Designing conversational isn’t as Sysiphean as it sounds. Tools like Google’s Dialogflow, Microsoft’s Framework, and Amazon’s Lex make it easier than it used to be, and the folks at Uber hope to eliminate any remaining barriers with a development platform all their own.
It’s called Plato Research Dialog System, and it was released in open source today on Github .
As the folks at Uber (Uber’s research division) explain in a lengthy blog post , Plato is designed for building, training, and deploying conversational agents toward enabling data scientists and hobbyists to collect data from prototypes and demonstration systems. It features at “clean” and “understandable” design, and it integrates with existing and model-tuning optimization frameworks that reduce the need to write code.
This first iteration of Plato (version 0.1) supports interactions through , text, or structured information (e.g., dialogue acts), and each conversational agent can interact with human users, other agents, or data. (Plato can spawn multiple agents and ensure that input and output data is passed to each agent appropriately, and keep track of the conversation.) Additionally, Plato can incorporate pretrained models for every conversational agent component, and each component can be trained during interactions or from data.
Plato accomplishes this with a modular design that breaks data processing into seven steps: recognition, language understanding, state tracking (aggregating information about what has been said and done so far), API calls (e.g., searching a database), dialogue policies (generating an abstract meaning of agent’s response), language generation (converting said abstract meaning into text), and synthesis. Plato supports a range of conversational architectures, and each element can be trained using popular libraries such as Uber’s Ludwig, Google’s TensorFlow, and Facebook’s PyTorch.
In a testament to its extensibility, Plato users can define their own architectures or plug their own components by providing a Python class name and package path to that module, as well as the model’s initialization arguments. So long as the modules are listed in the order they should be executed, Plato handles the rest, including wrapping the input and output, chaining and executing the modules (either serially or in parallel), and facilitating the dialogues.
When it comes to data logging, Plato keeps track of events in a structure called the Dialogue Episode Recorder, which contains information about previous dialogue states, actions taken, current dialogue states, and more. There’s even a custom field that can be used to track anything that doesn’t fall under the defined categories.[…]
read more – copyright by venturebeat.com
Image Credit: CPG Photography Ltd