Git Product home page Git Product logo

intents's Introduction

Intents for Home Assistant

This repository contains training data for Home Assistant's local voice control.

Repository layout:

  • languages.yaml
    • Supported languages and their language leader
  • intents.yaml
    • Supported intents
  • sentences/<language>
    • Intent matching sentences in YAML files for <language> with the name <domain>_<intent>.yaml
    • File format
  • responses/<language>
    • YAML files for <language> with responses for intents
    • File format
  • tests/<language>
    • YAML files for <language> with test sentences and corresponding intents
    • File format

See the documentation for more information.

Development

Checkout the repository and get a development environment with script/setup. This will create a new virtual environment in the venv directory of the repository, and install all necessary requirements.

Before developing, always activate your virtual environment with source venv/bin/activate.

Run tests

Validate that the data is correctly formatted:

python3 -m script.intentfest validate --language nl

Run the tests. This will parse the sentences and verifies them with the test sentences.

pytest tests --language nl -k fan_HassTurnOn

Leave off --language to test all languages. Leave off -k to test all files.

Test parsing sentences

You can try parsing sentences for a specific language with:

python3 -m script.intentfest parse --language en --sentence 'turn on the lights in the kitchen'

This will print a line of JSON for each --sentence:

{
  "text": "turn on the lights in the kitchen",
  "match": true,
  "intent": "HassTurnOn",
  "slots": {
    "area": "kitchen",
    "domain": "light"
  }
}

Test sampling sentences

You can sample the possible sentences for a specific language with:

python3 -m script.intentfest sample --language en -n 1

This will print a line of JSON for each possible sentence:

python3 -m script.intentfest sample --language en -n 1
{"intent": "HassTurnOff", "text": "turn off all the fan in the kitchen"}
{"intent": "HassTurnOn", "text": "turn on the light in the kitchen"}
{"intent": "HassCloseCover", "text": "close the bedroom lamp"}
{"intent": "HassClimateSetTemperature", "text": "set the temp to 0 degrees celsius"}
{"intent": "HassLightSet", "text": "set the bedroom lamp brightness to 0 percent"}
{"intent": "HassOpenCover", "text": "open the bedroom lamp"}
{"intent": "HassClimateGetTemperature", "text": "what's the temp "}

You can filter for specific intents by adding --intents HassTurnOn HassTurnOff.

Leave off -n to generate all possible sentences.

Test sampling template

To quickly test a sentence template, use:

python3 -m script.intentfest sample_template <template>

For example:

python3 -m script.intentfest sample_template 'open [the] door'
open the door
open door

You can add lists, ranges, and expansion rules as well:

python3 -m script.intentfest sample_template 'set color to <color> and brightness to {brightness}' --values color red green --range brightness 1 2 --rule color '[the] {color}'

Add new language

python3 -m script.intentfest add_language <language code> <language name>

<language code> should be something like en or pl according to ISO 639.

Language name should be the name of the language in its own language.

intents's People

Contributors

aaliankhan avatar ahmed-farag36 avatar al-one avatar alessandroias avatar arunshekher avatar balloob avatar bluefoxlee avatar dependabot[bot] avatar dontinelli avatar dsimop avatar halecivo avatar hepoh3 avatar hristo-atanasov avatar lastrada avatar leranp avatar luboskadasi avatar makstech avatar mib1185 avatar mojikosu avatar natfaji avatar nikito7 avatar robin-st avatar schizza avatar skynetua avatar spuljko avatar steffenrapp avatar svarthvitt avatar synesthesiam avatar tetele avatar thefes avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.