Libraries

Teneo comes with a large number of supported languages. All languages that are supported by Teneo can be processed by the Teneo Engine, meaning user input can be split into tokens and sentences. Teneo also has additional Lexical Resources included for some languages, but not for others; for these languages, we can customize our own versions of those resources to create our own Library.

A list of languages with Teneo Lexical Resources can be found in languages.

Libraries are powerful tools as they not only allow us to create and use the resources we need in an efficient manner, but also allow us to re-use language objects across multiple bots. Teneo has it's own Libraries where on example is the, English Teneo Lexical Resources. This library includes a Sentiment and Abusive Language detector together with a Date and Time Handler, and a large number of Language Objects and Entities ranging across all subjects.

Once a Lexical Resources is set to a solution, you can click on 'Show more' to read more about the resources. Teneo Lexical Resources Picture to Show More

You can see how to assign Lexical Resources here and more on the Teneo Lexical Resources here.

In this article, we will discuss best practices when creating Libraries, and provide an example of how this can be implemented.

When to use Libraries

Libraries can become a relevant option when you are building multiple solutions for different use cases. As Teneo lets you use multiple Libraries, you can also create one for your domain- or company-specific lingo.

Creating your own Library

Creating a library can be challenging. That is why we have compiled the following list of recommendations to keep in mind when creating your own Language Objects and Entities.

  • Common words: think of the common words that are business-specific and make sure to add those as Language Objects among the words to your library.
  • Particle words: like 'Yes' and 'No' are among the most common words when creating interactive flows. Try to think of more relevant words to be added.
  • Phrases: that are very common in your use case. For example, if you are creating a coffee shop where users can order a cup of coffee, the phrase 'Can I order' will be used a lot.
  • Entities: for cases where you are in need of Entities, the recommendation is to create them and extract them using Data Actions.

A guide on how to create your own Language Objects can be found here. Creating them one by one takes a longer time in the beginning, but as you keep developing your bot you will be able to re-use these language objects, making this the far more sustainable option.

Best Practices

We have the following recommendations for best practices when it comes to creating your own Libraries.

Create your own folder for Language Objects

The proper way to do this is to create a dedicated folder in which to store your Language Objects. The reason for this that it is best to have a clear structure in your solution so that you can easily find and maintain Language Objects and Entities in your own Library.

lob-folder-psd

As the picture suggests, it is also recommended to create a new folder for storing Entities. The user has the option of creating one folder to store each type of Language Object.

Naming Conventions Table

Now that you are ready to create Language Objects, establish some guidelines on how they should be created. We would recommend you to follow our naming conventions in order to make sure that the whole team can easily find them, identify what they are used for, and confirm that their content is correct and covers all required forms.

Suffix Type Example Name Example Condition Generate NLU
LEX Lexical entry: is the smallest building block from which more complex language objects are built. Covers different inflections of a word, but also spelling and regional variations. DOG.LEX dog / dog's / dogs / dogs' yes
SYN Synonym set: groups LEX/MUL language objects with similar meaning. DOG.SYN %DOG.LEX / %HOUND.LEX / %MUTT.LEX / %POOCH.LEX / (...) yes
PHR Phrases: groups various ways of expressing the same phrase or partial intent. IS_BROKEN.PHR ((%BE.VB?PRESENT.LEX / %SEEM.SYN)>> %BROKEN.SYN ) / (...) yes

Although we support a lot of different names we recommend your own library to adhere to these naming conventions in order to keep everything as clear and simple as possible.

Another reason to make sure to follow our naming conventions is that Teneo's NLU Generator bases its suggestions on Language Objects that follow these conventions. Make sure to avoid misspellings when creating your lexical resources; these should be handled at the input processor level.

Was this page helpful?