Thursday, September 13, 2018

Parsing natural language using Regular Expression patterns and extractors

Bot Libre 7 adds support for using Regular Expressions in patterns, templates, and scripts.

Regular Expressions, or Regex defines a pattern syntax for parsing text. Unlike AIML and Bot Libre patterns Regex patterns are character based, not word base, so can match specific types of words and word sequences such as numbers, dates, times, currency, and others.

For example, the following regex matches a number,

/\d+

and this regex would match a date,

/^(19|20)\d\d[-/.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])$

Bot Libre allows regex expressions to be used in AIML patterns, and in Bot Libre response patterns. Bot Libre's scripting language Self also allows regex in patterns and provides extractor functions that allow regex to be used to extract data from a user's input.

To define a regex pattern in an AIML or Bot Libre pattern just start the regex with the "/" character.

AIML defines pattern wildcards such as * and ^ which can match multiple words in a phrase, but they will match any word, and are not restricted to specific types of words. Bot Libre lets you include regex inside AIML patterns to match specific types of words.  Just like the * wildcard the word that was matched by the regex can be accessed in the template using the <star/> tag.

<category>
<pattern>my email is /.+\@.+\..+</pattern>
<template>Okay, I will email you at <star/></template>
</category>

Normally regex is used to match a specific word, but you can also use regex to match and entire phrase if it defines the entire pattern.

For this to work the entire pattern must be the regex, and the pattern can have no other words. The "()" characters in regex define a group which becomes the star variable(s).

<category>
<pattern>/(?i)what\sis\s(.*)</pattern>
<template>I have no idea what <star/> is.</template>
</category>

Patterns and regex can also be used in Bot Libre response lists similar to AIML.

Pattern("my email is /.+\@.+\..+")
Template("Okay, I will email you at {star}")

Pattern("/(?i)what\sis\s(.*)")
Template("I have no idea what {star} is.")

In a response list template you can also use Self extractor functions.

I am 22 years old
Template("I will remember that you are { var age = sentence.exec("\d+"); speaker.age = age; age } years old.")

Regex can also be used in Self patterns and functions.

state Math {
    pattern "^ /\d+ \* /\d+ ^" template "{star[1].toNumber() * star[2].toNumber()}";
    pattern "^ /\d+ / /\d+ ^" template "{star[1].toNumber() / star[2].toNumber()}";
    pattern "^ /\d+ \+ /\d+ ^" template "{star[1].toNumber() + star[2].toNumber()}";
    pattern "^ /\d+ \- /\d+ ^" template "{star[1].toNumber() - star[2].toNumber()}";
}

The following are regex functions in Self:

  • Utils.matches(text, regex) - return if the regex matches the text
    Utils.matches("12345", "\d+") == true
  • String.test(text) - return if the regex string it matches the text
    "\d".test("hello 123") == true
  • String.exec(text) - extract the subtext matching the regex string from the text
    "\d+".exec("hello 123") != "123"
  • String.match(text) - returns an array of all values matching the regex string extracted from the text
    var values = "hello 123 456".match("\d+"); values[1] == "456"

Bot Libre also defines several symbols for common regex patterns.
These include:

  • #number
  • #date
  • #email
  • #url

These symbols can be used in place of regex patterns in Self and patterns.

<category>
<pattern>my email is #email</pattern>
<template>Okay, I will email you at <star/></template>
</category>
state Email {
    pattern "^ #email ^" topic "email" template "Thank you, I will remember your email. { think { speaker.email = Utils.extract(sentence, #email); conversation.topic = null; } }";
    pattern "*" topic "email" template "Please enter a valid email.";
}

For more information on the regex syntax and example patterns see:

https://www.w3schools.com/jsref/jsref_obj_regexp.asp

https://regexr.com/

Thursday, August 30, 2018

How to Connect a Bot to Amazon Alexa

Through Bot Libre, you can now use your own bot to send and receive messages using any Amazon Alexa device. This "How To" will give you a step by step process to connect your bot with Amazon Alexa.

Step 1 - Create a Bot

First you must create a bot that you want to connect to Alexa, or you can use one of your existing bots. To create a bot, follow the instructions here: How to create your own chat bot in 10 clicks.

Step 2 - Amazon Developer Console

Click the "Sign In" button to sign into or create a new Amazon Developer account.

Once you have signed in, mouse over "Your Alexa Consoles" and select "Skills".

In the Alexa Skills Console, click the "Create Skill" button to continue.

Enter a name for your Alexa skill and select the language you will use. You will be able to add more languages later. Your skill will only work on devices set to this language, so a skill set to English(UK) won't work on a device set to English(US), for example. Make sure "Custom" is selected at the bottom, then click the "Create skill" button.

Step 3 - Create Interaction Model

Click the "Invocation" option in the left sidebar under Interaction Model.

In the "Skill Invocation Name" field, enter the name the user will use to begin interacting with your bot. The invocation name should be two or more words. Click the "Save Model" button when complete.

Click the "+ Add" button next to "Intents" in the left sidebar. Enter a name into the field, it does not matter what it is. I will enter "conversation" in my example. Press the "Create custom intent" button.

In the "Sample Utterances" field, enter some phrases that a user could say to signal their intent to speak with your bot.

Scroll down to the Intent Slots section. Enter a name for the slot and press the "+" button. It does not matter what the name is, I will use "message" in this example.

Select "AMAZON.SearchQuery" for the slot type. Press the "Save Model" button when complete. Click the "Edit Dialog" text under "Actions".

Toggle the "Is this slot required to fulfill the intent?" option to the ON position. Enter any text into the "Alexa speech prompts" field. It does not matter what is says, it will not be used, but something must be there.

Press the "Save Model" button when complete.

If you would like to add support for additional languages, click the language dropdown in the top-left, and select "Language Settings".

Click "+ Add new language" and select the language(s) you would like to add support for. You will then need to complete the Interaction Model (step 3 in this guide) for each new language you've added.

Then click the "Build Model" button and wait for it to finish.

Step 4 - Enter Endpoint

Return to the Bot Libre website and navigate to your bot's Admin page by click the gear icon on your bot's page.

Select the "Alexa" option to enter the next screen. Copy the "Alexa Skill Endpoint URL" to your clipboard.

Return to the Alexa Skills Console and click the "Endpoint" button on the left sidebar. Select the "HTTPS" option.

In the "Default Region" section, paste the "Alexa Skill Endpoint URL" into the "Enter URL" field, and select "My development endpoint has a certificate from a trusted certificate authority" in the "Select SSL certificate type" dropdown.

Click the "Save Endpoints" button at the top of the page.

Step 5 - Bot Libre Settings

Return to the Bot Libre website and navigate to your bot's Alexa settings page. You will need to enter some responses to handle Alexa's built-in intents. These will only be active until the conversation with your bot begins. After the conversation has begun, your bot will handle all responses. In the "End Conversation Phrases" box, enter some phrases/words the user can say that will cause the conversation to end.

Click the "Save" button when complete.

Step 6 - Finish

You should now be able to test your bot using the Alexa Skills Console or an Alexa device that is connected with your account. To test on the Alexa Skills Console, click the "Test" button.

You will need to enable testing for your skill by clicking the toggle that says "Test is disabled for this skill."

You will now be able to test your bot by typing into the text box or clicking on the mic icon to use your voice.

To make your Alexa Skill available to the public, you will need to complete the required information in the "Distribution" tab.

Next, click on the "Certification" tab. You will need to click the "Run" button to complete validation. When your skill has successfully passed validation, click on "Submission" in the left sidebar and then click the "Submit for review" button. You will then need to wait for Amazon to review your Alexa Skill before it is available for the public.

Your bot will now be able to send and receive messages on an Amazon Echo or any other Amazon Alexa-compatible device. If you encountered any issues, or would like help setting up your bot please email us at support@botlibre.com or upgrade to our Platinum service and we can build your bot for you.

You can now also talk to the Bot Libre Help Bot, Brain Bot, and Julie on Alexa.

say "Alexa, open Bot Libre" (lee bra) to talk with the Bot Libre Help Bot

say "Alexa, open Brain chatbot" to talk with the Brain Bot

say "Alexa, open Julie chatbot" to talk with the Julie

Thursday, August 9, 2018

How to create a bot for Google Home and Google Assistant

Through Bot Libre, you can now use your own bot to send and receive messages on Google Home or any other Google Assistant-compatible device. This "How To" will give you a step by step process to connect your bot with Google Assistant.

Step 1 - Create a Bot

First you must create a bot that you want to connect to Google Assistant, or you can use one of your existing bots. To create a bot, follow the instructions here: How to create your own chat bot in 10 clicks.

Step 2 - Create Google Assistant Action

Go to https://developers.google.com/actions/ and sign in to your Google account. Once you are signed in, click the "Go To Actions Console" button.

Click the "+ Add/import project" button to continue.

Enter a project name and select your language and country, then press "Create Project" to continue.

Next, select a category for your bot, or press "Skip" to pick later.

Step 3 - Google Assistant Action Settings

On the left sidebar, select the "Invocation" option.

From here, you can enter a "Display name" which the user will say or type to begin interacting with your bot. You can also select a voice that your bot will use on Google Assistant.

Press "Save" when finished. Next, click the "Actions" option on the left sidebar.

Click the "Add Your First Action" button. Select "Custom intent", then click the "Build" button on the bottom right.

A new tab will open for you to create a Dialogflow Agent.

Step 4 - Create Dialogflow Agent

Your project name should be filled in automatically when you enter this page. Click the "Create" button to continue.

Click the "Fulfillment" option on the left sidebar.

Click the "Webhook" toggle to enable it, then return to the Bot Libre website. 

On the Bot Libre website, navigate to your bot's Admin page by clicking the gear icon on your bot's page.

Select the "Google Assistant" link on your bot's Admin page to continue to the next screen.

Copy the "Google Assistant Webhook URL" to your clipboard and return to the Dialogflow website.

Paste the URL into the "URL" field, then scroll down and press the "Save" button.

Next, click the "Intents" option on the left sidebar.

Click on "Default Fallback Intent". Scroll to the bottom of the page and expand the Fulfillment section. Toggle "Enable webhook call for this intent" to the on position. Press the "Save" button. Repeat the same process for the "Default Welcome Intent".

Step 5 - Bot Libre Settings

You may now close the Dialogflow website and return to your bot's Admin page on the Bot Libre website.

In the "End Conversation Phrases" box, enter some phrases/words the user can say that will cause the conversation to end.

Click the "Save" button when finished.

Step 6 - Finish

You should now be able to test your bot using the Simulator available on the the Google Actions Console, or on any device associated with the Google account used to create your Google Assistant action. To test using the simulator, make sure the "Web & App Activity", "Device Information", and "Voice & Audio Activity" permissions are enabled on the Activity controls page for your Google Account.

To make your Google Assistant Action available to the public, click the "Directory information" option in the left sidebar and fill out the required information.

Next, click the "Release" option in the left sidebar. If all necessary information has been completed, you will be able to click the "Submit for Production" button to make your bot available to all Google Assistant users.

Your bot will now be able to send and receive messages on Google Home or any other Google Assistant-compatible device. If you encountered any issues, or would like help setting up your bot please email us at support@botlibre.com or upgrade to our Platinum service and we can build your bot for you.

You can now also talk to the Bot Libre Help Bot, Brain Bot, and Julie on Google Home and Google Assistant.

say "talk to Bot Libre" (lee bra) to talk with the Bot Libre Help Bot

say "talk to Brain chatbot" to talk with the Brain Bot

say "talk to Julie chatbot" to talk with the Julie

Monday, July 30, 2018

Learn about bots from a bot - Bot Libre Education

Bot Libre now offers courses and education on bots and artificial intelligent technology.

You can take the "Introduction to Bot Libre" course for free and be guided through the course by our bot instructor.
To start the course, go to our education page, and click on "Start course now",
or to browse Bot Libre's other courses see,

https://www.botlibre.com/courses.jsp

Bot Libre offers several monthly open courses including:

  • Introduction to the Bot Libre bot platform
  • Introduction to bot technology
  • Introduction to artificial intelligence and deep learning
  • How to deploy bots to social media using Bot Libre
  • Bot Libre - Advanced training and techniques
  • Bot Libre - Scripting with Self
  • AIML

To sign up for an online open course, or for a private online or on-site course contact sales@botlibre.biz

Friday, July 27, 2018

Hot Dog, Not Hot Dog - How to create your own deep learning neural network for image recognition without any programming

The Bot Libre platform is not just a bot platform, but also a platform for artificial intelligence and deep learning. With Bot Libre you can create your own deep learning neural network for image recognition, audio and speech recognition, object detection, games, prediction, data analysis, and more.

You may think that creating a "deep learning neural networks" sounds like a very complex thing to do, but with Bot Libre it is very simple, and requires no programming or data science experience. This article we walk you through the steps to create your own image recognition network.

Step 1 - Find Sample Images

First you need to decide what types of images you want your network to recognize. You can train a network to recognize and classify any type of images, as long as you have some sample images. The more sample images the better, but around 30 is normally enough for a basic network.

For this article, we will train a network to recognize images of "hot dogs". We could train it to recognize many different food types, but for the sake of simplicity we will train the network to classify images as just "hot dog" or "not hot dog".

First you need to find some sample images of hot dogs, just perform a Google image search for "hot dog", and save some of the images by right clicking on them (small images are fine, images will be scaled to 299x299 anyway). You will also need some images for "not hot dog", just find a random set of images for this.

Step 2 - Create Analytic

Next we need to create our analytic on Bot Libre.

  • Click browse analytics on Bot Libre
  • Click on New Analytic
  • Enter a name and category and click "Create"

Step 3 - Configure Analytic

Next we need to configure the analytic.

  • Click on the analytic's "Admin Console" button or menu.
  • Click on "Analytic Network"
  • Under "Analytic Type" select "mobilenet_0.50"
  • It will auto-fill the other settings, click the Save button

The other analytic type settings let you create different types of networks. Mobilenet is the smallest, and faster network for image classification. You could also choose Inception, this will be slower and much larger, but will have slightly better accuracy.

Step 4 - Upload Images

Next we need to upload our sample images.

  • Click on the "Media Repository" button, menu, or link in the analytic's Admin Console
  • Click on add label (green plus), enter "hot dog", click add again and enter "not hot dog"
  • Select the "hot dog" label and click the upload button, select all your hot dog images
  • Select the "not hot dog" label and click the upload button, select all your "not hot dog" images

Step 5 - Train Network

Next we need to train the network.

  • Click on the "Train Network" button, menu, or link in the analytic's Admin Console
  • Click on "Train", this may take a while

Step 6 - Test Network

Now you can test your network.

  • Click on the "Test Network" button from the analytic's main page
  • Upload an image to test
  • It will return you if the image is a "hot dog" or "not hot dog"

Try testing the network with images that you did not train it with. If it gives you the wrong result, then add the image to your train set and train your network again.

Your Done

You can now access your analytic from Bot Libre's website and share it with your friends. You can also access your analytic through the Bot Libre web API from your own website or app. You can download your network as a ".pb" (protocol buffer) file for usage with Tensorflow.

Bot Libre will be adding support for training more network types in the coming months. You can also train your network manually using python and Tensorflow, this is very complicated and requires some development and python experience. We can also develop a deep learning neural network for you through the Bot Libre AI development services, contact sales@botlibre.biz.

Thursday, July 26, 2018

Announcing Bot Libre 7

We have released Bot Libre 7!

The worlds most advanced bot platform just got better. Bot Libre 7 is a free and open source platform for developing and hosting bots. Bot Libre 7 includes support for chat bots, virtual agents, virtual assistants, social media bots, IOT bots, game bots, live chat, animated avatars, speech, deep learning analytics, and more. Bot Libre supports bots for the web, mobile, Facebook, Twitter, Skype, Telegram, Kik, WeChat, Slack, email, SMS, Alexa, Google Home, IRC, and new platforms are being added every month.

"Bot are the new apps". Mobile has replaced the web as the main communications market, and social media apps are the most popular mobile apps. Businesses need to connect with consumers on the platforms they use, so it now makes more sense for a business to create a bot/chat interface into their business instead of a website, or their own mobile app. Bot Libre lets you create a bot for yourself or your business and deploy the bot to the Facebook, Twitter, Skype, Telegram, Kik, WeChat, Slack, SMS, Alexa, Google Home, email, the web, mobile, and other services. Bots let you "write once deploy everywhere".

Bot Libre 7 supports rich HTML responses including buttons, links, choices, images, video, and audio. Bot Libre supports HTML responses on the web, mobile, and automatically maps HTML to social media platforms.

Bot Libre bots can be trained using natural language, chat logs, response lists, Twitter feeds, AIML, and scripting. Responses are automatically matched using a heuristic artificial intelligence algorithm and does not require any programming. Responses can also use keywords, topics, required words, labels, repeats, and other meta data.

Bot Libre 7 supports programming and scripting your bot using AIML 2, and Self. Self is our own dialect of JavaScript. Self is an object oriented scripting language, and integrated with an object database. Self extends JavaScript to provide support for natural language processing, state machines, object persistence, and includes a class library for accessing web services and utilities. Self also supports all AIML 2 operations, and some aspects of ChatScript patterns.

Bot Libre 7 is more than just bots, but a complete artificial intelligence platform. Bot Libre lets you create deep learning analytics for image recognition, speech and audio recognition, object detection, prediction and data analysis. You can create and train an image recognition analytic without any programming, just by uploading images. You can then access your analytics through our web API and mobile SDK, or from your bot.

New features in Bot Libre 7.0 since 6.5 include:

  • New website interface.
  • Integrated support for integrating bots with Amazon Alexa
  • Integrated support for integrating bots with Google Home and Google Assitant
  • Deep learning analytics for image classification, audio classification, and object detection
  • Regular expression patterns and extractors
  • Compound keywords, compound and required word lists and patterns, compound word synonyms
  • Support for Microsoft Speech, and QQ Speech

Create your own free account and bot today on botlibre.com, or let us build your bot for you on our commercial service Bot Libre for Business.