Skip to content
Javi Jiménez edited this page Jun 25, 2016 · 5 revisions

The main purpose of AVA (Agnostic Virtual Assistant) is create a clever/fast assistant for any kind of context. This repository concerns the core of AVA so feel free for try in your NodeJS projects.

Nowadays we can find a lot of assistants, and more and more in coming years, all of us know that Apps in future will be more conversational and less click/action. For that reason our approach is create an agnostic and reusable system for help developers to create any kind of virtual assistants.

This is an Open Source project, so any help will be well coming.

A little story about language processing...

If you never works with assistants/bots you have to know that we need to analyze a given input and give it a semantic value. To do this often use NLP, Natural Language Processing. AVA in its case incorporates its own NLP but as you will see later can use either. For example:

"I need an appointment with the dentist tomorrow at 2pm in London"

AVA must understand your sentence and creates a sentence relations scenario like:

  • SUBJECT I
  • VERB need
  • QUANTITY 1
  • OBJECT appointment
  • ITEM the dentist
  • WHEN Fri Jun 11 2016 14:00:00 GMT+0700 (ICT)
  • LOCATION London

Also gives you a contextual information:

  • LANGUAGE = en
  • TYPE = declarative
  • SENTIMENT = 0 (neutral)
  • CLASSIFIER = /travel/transit
  • PROFILE (If previously user has talked with AVA, returns a history)

Ava depends on how you set up, but the next step is to process all the intents set. An intent is nothing more than a set of rules for scenarios sentence relations and contextual information.

  • has LOCATION? yes, London
  • is negative SENTIMENT? no, is neutral
  • know WHEN? yes, tomorrow at 2pm

If any intent is successful, it will be assigned an action (or more) which will be returned to the user in answer mode.

  • Set an appointment in phone's calendar like ${ITEM} in ${LOCATION} on ${DATE}

And that is, :)

Feel free to offer new features, improvements or anything you can think of. This project makes sense with your participation and experience using Ava.

Clone this wiki locally