System Entities
Oscova comes with many pre-built system entities to ease the Bot development process. By default all Entity Recognizers for the following entity types are pre-loaded during Bot training.
To force the Bot to load Entity Recognizers only for required entity types, that are declared using EntityAttribute
, set the value of RequiredRecognizersOnly
to true
in BotConfiguration
.
Tip
To load an additional Entity Recognizer for an entity type that is not mentioned using EntityAttribute
you may register the entity recognizer using the following method.
Bot.Recognizers.RegisterType<Recognizer-Class>(Entity-Type);
Note
All required entity recognizers must be registered before calling the Train
method.
Pre-Built Entities
Generic
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.text |
Matches non-empty text | Tell John @sys.text | Returns matched part of user input I am on my way |
@sys.url |
Matches a url | www.oscova.com http://oscova.com |
Returns a valid URL |
Note
Overusing @sys.text
may result in imprecise intent scores. It is highly recommended that wherever possible, developers must use custom, composite or other pre-built system entities.
Settings
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@bot.{VARIABLE} |
Matches values of the specified Bot settings variable. | Is your name @bot.name |
Returns the value of the name variable in bot settings. |
@user.{VARIABLE} |
Matches values of the specified User settings variable of the current user | My support PIN is @user.pin |
Returns the value of the PIN variable in user settings. |
Note
Both User and Bot Settings
entity recognizer only recognize variables whose names are explicitly mentioned in Expressions.
Date and Time
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.date |
Matches a date. Configurable | March 12th Tomorrow |
Returns date in ISO-8601 format, such as 2016-12-15 |
@sys.date.month |
Names of months | January, June | Returns month and date string in ISO-8601 |
@sys.date.time |
Matches a date and time | December 1 at 5 pm Tomorrow at 2 pm |
Returns Date and time in ISO-8601 format, such as 2016-12-10T13:42:25 |
@sys.time |
Matches a time. | 8:30 12 pm in 10 minutes |
Returns time in ISO-8601 format (hh:mm:ss): 14:20:00 |
Numbers
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.number |
Matches integer and decimal numbers | 10.5 14 seventy first |
Returns double, such as 10.5 |
@sys.ordinal |
Matches ordinal numbers | second 1st 12-th |
Returns integer, such as 12 |
@sys.number.integer |
Matches integer numbers | 10 -10 |
Returns integer, such as 10 |
@sys.number.sequence |
Matches integer number sequences | 10 15 20 1 5 8 6 |
Returns string, such as 10 15 12 |
@sys.math.expression |
Matches simple math expressions | 2+5*5 | Returns string such as 2+5*5 and also an evaluated value |
Value and Units
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.unit.area |
Number and Area unit | 36 sq m 19 acres |
Value as double and unit abbreviation as {"amount":10, "unit":"sq m"} |
@sys.unit.information |
Number and Digital Information unit | 56 kilobytes 5 MB |
Value as double and unit abbreviation as {"amount":10, "unit":"MB"} |
@sys.unit.length |
Number and Length unit | 15 kilometers 8 miles |
Value as double and unit abbreviation as {"amount":10, "unit":"km"} |
@sys.unit.speed |
Number and Speed unit | 17 miles per hour 10 km/h |
Value as double and unit abbreviation as {"amount":10, "unit":"mph"} |
@sys.unit.volume |
Number and Volume unit | 5 liters 10 gallons |
Value as double and unit abbreviation as {"amount":10, "unit":"cm3"} |
@sys.unit.weight |
Number and Weight unit | 14 kg 10 pounds |
Value as double and unit abbreviation as {"amount":10, "unit":"lb"} |
@sys.currency |
Number and currency unit | 15 US Dollars 25 INR |
Value as double and currency unit abbreviation as {"amount":24, "unit":"USD"} |
@sys.temperature |
Number and Temperature unit | 37.6°F 15 degrees celsius |
Value as double and unit abbreviation as {"amount":10, "unit":"F"} |
@sys.duration |
Number and Time unit | 12 minutes 4 hrs |
Value as double and unit abbreviation as {"amount":10, "unit":"hour"} |
@sys.age |
Number and Age unit | 12 months old 2 years old |
Value as double and unit abbreviation as {"amount":5, "unit":"year"} |
@sys.percentage |
Number and Percentage unit | 56% 12 percent |
Value as double and unit as {"amount":5, "unit":"percent"} |
Unit Names
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.unit.area.name |
Units of area | Square Meters Hectares |
Returns string, such as sq km |
@sys.unit.information.name |
Units of Digital Information | Kilobytes GB |
Returns string such as MB |
@sys.currency.name |
Currencies. Configurable | US dollar INR |
Returns string, such as USD |
@sys.unit.length.name |
Units of length | Meter Kilometers |
Returns string, such as km |
@sys.unit.speed.name |
Units of speed | Miles per hour Kilometer per hour |
Returns string, such as mph |
@sys.unit.temperature.name |
Units of temperature | degree celsius Kelvin |
Returns string, such as K |
@sys.unit.volume.name |
Units of volume | Milliliter Gallon |
Returns string, such as ml |
@sys.unit.weight.name |
Units of weight | Kilogram Pounds |
Returns string, such as kg |
Geography
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.geo.country |
Names of countries | United States Australia |
Returns short country name string as per ISO 3166-1, such as United States of America |
@sys.geo.state.us |
US States | Arizona Minnesota |
Returns short state name string as per ISO-3166-2, such as Ohio |
@sys.geo.state.ind |
Indian states and union territories | Goa New Delhi |
Returns string, such as Goa |
@sys.geo.ip |
Matches IP Addresses | 192.168.2.1 | Returns string, such as 192.168.2.1 |
@sys.geo.postal.us |
5 digit US postal codes | 11368 90005 |
Returns string, such as 90005 Note: Does not validate the code |
@sys.geo.postal.uk |
Alphanumeric UK Postal codes | W1A 1HQ M60 1NW |
Returns string, such as M60 1NW Note: Does not validate the code. |
@sys.geo.postal.ind |
6 digit Indian Postal codes | 560037 691001 |
Returns string, such as 560037 Note: Does not validate the code. |
@sys.geo.capital |
World Capitals | London New Delhi |
Returns a string, such as London |
Language
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.language |
Names of Languages | English Hindi |
Returns string, such as English |
Contacts
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.email |
Email address | example@example.com | Returns string, such as example@example.com Note: Overrides @sys.url value example.com |
@sys.phone.us |
Matches US phone numbers | +1 (123) 456-7890 (123) 456-7890 |
Returns string, such as (123) 456-7890 |
@sys.phone.ind |
Matches Indian phone numbers | (+91) 8987654321 011-20000198 |
Returns string, such as 8987654321 |
Color
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.color |
Names of colors | Red Dark Gray |
Returns string, such as Dark Gray |
Music
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.music.genre |
Names of popular music genres | Jazz Blues |
Returns string, such as Jazz |
Emoji
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.emoji |
Names of Facial Emojis | Winking Face Hugging Face |
Returns string, such as thinking face along with it's unicode representation and sub group. |
Polar Question
Because users can respond in any manner to polar questions some user responses may lead to some false-positives. Hence, developers are encouraged to build custom recognizers for positive and negative sentences. However, by using the following entity types the developer is solely responsible for any action executed by the Bot.
Entity Name | Description | Examples | Returned Value |
---|---|---|---|
@sys.positive |
A positive response | Yes Okay |
Returns string, such as yes |
@sys.negative |
A negative response | No Nope |
Returns string, such as no |
Manual Configuration
Currency
As the word dollar may be used to refer to United States Dollar in US and Australian Dollar in Australia. The developer must manually extend the @sys.currency.name
entries by adding synonyms for currency codes based on the location of the user the bot is interacting with.
Bot.Recognizers[EntityTypes.CurrencyName].Entries.AddSynonyms("USD", new [] {"dollar", "us dollar","dollars"})
OrderStyle
@sys.date
recognizer has an OrderStyle
property that enables regional date time parsing. The default value of MonthDayYear
can be changed based on the location where the bot is deployed to accept different date formats like mm/dd/yy, mm/dd/yyyy, mm-dd-yy
You may change the order style prior to training the bot as shown below.
var bot = new OscovaBot();
var dateRecogizer = (Bot.Recognizers["sys.date"] as DateRecognizer);
dateRecogizer.OrderStyle = OrderStyle.DayMonthYear;