All Projects → jovotech → jovo-model

jovotech / jovo-model

Licence: Apache-2.0 license
💬 A language model abstraction layer that works across NLU providers, including Alexa, Dialogflow, LUIS, Rasa, and more

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
Handlebars
879 projects

Labels

Projects that are alternatives of or similar to jovo-model

Nlp Papers
Papers and Book to look at when starting NLP 📚
Stars: ✭ 111 (+516.67%)
Mutual labels:  nlu
Dialogflow Ruby Client
Ruby SDK for Dialogflow
Stars: ✭ 148 (+722.22%)
Mutual labels:  nlu
Indonlu
The first-ever vast natural language processing benchmark for Indonesian Language. We provide multiple downstream tasks, pre-trained IndoBERT models, and a starter code! (AACL-IJCNLP 2020)
Stars: ✭ 198 (+1000%)
Mutual labels:  nlu
Rasa
💬 Open source machine learning framework to automate text- and voice-based conversations: NLU, dialogue management, connect to Slack, Facebook, and more - Create chatbots and voice assistants
Stars: ✭ 13,219 (+73338.89%)
Mutual labels:  nlu
Mlmodels
mlmodels : Machine Learning and Deep Learning Model ZOO for Pytorch, Tensorflow, Keras, Gluon models...
Stars: ✭ 145 (+705.56%)
Mutual labels:  nlu
Rnn For Joint Nlu
Pytorch implementation of "Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling" (https://arxiv.org/abs/1609.01454)
Stars: ✭ 176 (+877.78%)
Mutual labels:  nlu
Spokestack Python
Spokestack is a library that allows a user to easily incorporate a voice interface into any Python application.
Stars: ✭ 103 (+472.22%)
Mutual labels:  nlu
Nlp Architect
A model library for exploring state-of-the-art deep learning topologies and techniques for optimizing Natural Language Processing neural networks
Stars: ✭ 2,768 (+15277.78%)
Mutual labels:  nlu
Zzz Retired openstt
RETIRED - OpenSTT is now retired. If you would like more information on Mycroft AI's open source STT projects, please visit:
Stars: ✭ 146 (+711.11%)
Mutual labels:  nlu
Gluon Nlp
NLP made easy
Stars: ✭ 2,344 (+12922.22%)
Mutual labels:  nlu
Clue
中文语言理解测评基准 Chinese Language Understanding Evaluation Benchmark: datasets, baselines, pre-trained models, corpus and leaderboard
Stars: ✭ 2,425 (+13372.22%)
Mutual labels:  nlu
Botonic
Build chatbots and conversational experiences using React
Stars: ✭ 144 (+700%)
Mutual labels:  nlu
Sembert
Semantics-aware BERT for Language Understanding (AAAI 2020)
Stars: ✭ 194 (+977.78%)
Mutual labels:  nlu
Awesome Hungarian Nlp
A curated list of NLP resources for Hungarian
Stars: ✭ 121 (+572.22%)
Mutual labels:  nlu
Chatette
A powerful dataset generator for Rasa NLU, inspired by Chatito
Stars: ✭ 205 (+1038.89%)
Mutual labels:  nlu
Delta
DELTA is a deep learning based natural language and speech processing platform.
Stars: ✭ 1,479 (+8116.67%)
Mutual labels:  nlu
Ner Slot filling
中文自然语言的实体抽取和意图识别(Natural Language Understanding),可选Bi-LSTM + CRF 或者 IDCNN + CRF
Stars: ✭ 151 (+738.89%)
Mutual labels:  nlu
rasa bot example
This is an example rasa chatbot implementation that can be connected to your Facebook page.
Stars: ✭ 14 (-22.22%)
Mutual labels:  nlu
Homo
An open source natural interaction system based on offline wake-up, natural language understanding and sentiment analysis
Stars: ✭ 233 (+1194.44%)
Mutual labels:  nlu
Awesome Pretrained Chinese Nlp Models
Awesome Pretrained Chinese NLP Models,高质量中文预训练模型集合
Stars: ✭ 195 (+983.33%)
Mutual labels:  nlu

Jovo Model

Jovo Model: NLU abstraction for Alexa, Dialogflow, Google Actions, Rasa NLU, Microsoft LUIS, and more

The Jovo Model is a language model abstraction layer that works across NLU providers. It allows you to maintain a language model in a single source of truth and then translate it into different platform schemas like Amazon Alexa, Google Assistant, Dialogflow, Rasa NLU, Microsoft LUIS, and more.

Introduction

The Jovo Framework works with many different platforms and natural language understanding (NLU) providers that turn spoken or written language into structured meaning. Each of these services have their own schema that needs to be used to train their models. If you want to use more than one provider, designing maintaining the different language models can become a tedious task.

The Jovo Model enables you to store language model information in a single JSON file. For Jovo projects, you can find the language model files in the /models folder:

Models Folder in a Jovo Project

The Jovo Model is mainly used by the Jovo CLI's build command which turns the files into platform specific models like Alexa Interaction Models and Dialogflow agents. These resulting models can then be deployed to the respective platforms and trained there. Learn more here: Using the Jovo Model with the Jovo CLI.

We chose to open source this repository to provide more flexibility to Jovo users and tool providers. You can directly access the Jovo Model features from your code and make transformations yourself. Learn more here: Using the Jovo Model npm Packages.

Supported Platforms

The Jovo Model supports the following NLU providers):

Model Structure

Learn more about the model schema here.

Using the Jovo Model with the Jovo CLI

In regular Jovo projects, the Jovo Model is translated into different NLU formats and then deployed by using the Jovo CLI.

The workflow consists of three elements:

Models Folder

The models folder contains all the language models. Each locale (like en-US, de-DE) has its own JSON file.

Build Folder

The build folder includes all the information you need to deploy the project to the respective developer platforms like Amazon Alexa and Google Assistant.

At the beginning of a new project, the folder doesn't exist until you either import an existing platform project with jovo get, or create the files from the Jovo Model with jovo build.

We recommend to use the jovo.project.js file (see the project configuration documentation here) as the single source of truth and add the build folder to the .gitignore to avoid conflicts (like Alexa Skill IDs) if you're working on a project with a team.

Using the Jovo Model npm Packages

You can download the package like this:

$ npm install @jovotech/model

Model Conversions

By using this package in your code, you can convert the data from one platform schema to another.

Jovo Model to Platform Schema

To turn a Jovo Model into a platform model like Alexa, you can do the following:

import { NativeFileInformation } from '@jovotech/model';
import { JovoModelAlexa } from '@jovotech/model-alexa';

const jovoModelInstance = new JovoModelAlexa();
const jovoModelData = '...';
const locale = 'en-US';
jovoModelInstance.importJovoModel(jovoModelData, locale);
const alexaModelFiles = jovoModelInstance.exportNative();

Platform Schema to Jovo Model

If you want to turn a platform model like Alexa into the Jovo Model format, do this:

import { NativeFileInformation } from '@jovotech/model';
import { JovoModelAlexa } from '@jovotech/model-alexa';

const jovoModelInstance = new JovoModelAlexa();
const alexaModelFiles: NativeFileInformation = [
    {
        path: [
            'fileName.json',
        ],
        content: '...',
    }
];
const locale = 'en-US';
jovoModelInstance.importNative(alexaModelFiles, locale);
const jovoModelData = jovoModelInstance.exportJovoModel();

Platform Schema A to Platform Schema B

You can also use the package to turn one platform schema into another, e.g. Alexa into Dialogflow:

import { NativeFileInformation } from '@jovotech/model';
import { JovoModelAlexa } from '@jovotech/model-alexa';
import { JovoModelDialogflow } from '@jovotech/model-dialogflow';

const locale = 'en-US';

// Convert Alexa Model -> Jovo Model
const jovoModelInstanceAlexa = new JovoModelAlexa();
const alexaModelFiles: NativeFileInformation = [
    {
        path: [
            'fileName.json',
        ],
        content: '...',
    }
];
jovoModelInstanceAlexa.importNative(alexaModelFiles, locale);
const jovoModelData = jovoModelInstanceAlexa.exportJovoModel();

// Convert Jovo Model -> Dialogflow Model
const jovoModelInstanceDialogflow = new JovoModelDialogflow();
jovoModelInstance.importJovoModel(jovoModelData, locale);
const dialogflowModelFiles = jovoModelInstance.exportNative();

Updating the Model

The Jovo Model also allows to extract, manipulate, and delete data.

import { NativeFileInformation } from '@jovotech/model';
import { JovoModelDialogflow } from '@jovotech/model-dialogflow';

// Load the data into the Jovo-Model
const jovoModelInstance = new JovoModelDialogflow();
const alexaModelFiles: NativeFileInformation = [
    {
        path: [
            'fileName.json',
        ],
        content: '...',
    }
];
const locale = 'en-US';
jovoModelInstance.importNative(alexaModelFiles, locale);

const intent = jovoModelInstance.getIntentByName('MyNameIntent');
const phrases = jovoModelInstance.getPhrases(intent);
jovoModelInstance.removeIntent(intent);

// Export updated model

// As Jovo Model
const jovoModelData = jovoModelInstanceAlexa.exportJovoModel();

// As Dialogflow Model
const dialogflowModelFiles = jovoModelInstance.exportNative();

Contributing

Feel free to add more NLU providers via pull requests. Each platform implements the following methods of the @jovotech/model core package:

/**
 * Converts native model files to JovoModel
 *
 * @param {NativeFileInformation[]} inputFiles The files in the native format
 * @param {string} locale The locale of the files
 * @returns {JovoModelData}
 * @memberof JovoModel
 */
static toJovoModel(inputFiles: NativeFileInformation[], locale: string): JovoModelData {
    // ...
}

/**
 * Converts JovoModel to native model files
 *
 * @param {JovoModel} model The JovoModel to convert
 * @param {string} locale The locale of the JovoModel
 * @returns {NativeFileInformation[]}
 * @memberof JovoModel
 */
static fromJovoModel(model: JovoModelData, locale: string): NativeFileInformation[] {
    // ...
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].