Catalog PyPI
PACKAGE EXPLORERView in registry

adapt-parser

PyPI

A text-to-intent parsing framework.

languagenaturalprocessing
Versions collected1
Direct dependencies1From release 1.0.0
Last observed20 Oct, 19:08 UTC

README

Version 1.0.0 documentation

License CLA Team Status

Build Status Coverage Status PRs Welcome Join chat

Adapt Intent Parser

The Adapt Intent Parser is a flexible and extensible intent definition and determination framework. It is intended to parse natural language text into a structured intent that can then be invoked programatically.

Introducing the Adapt Intent Parser

Getting Started

To take a dependency on Adapt, it's recommended to use virtualenv and pip to install source from github.

$ virtualenv myvirtualenv
$ . myvirtualenv/bin/activate
$ pip install -e git+https://github.com/mycroftai/adapt#egg=adapt-parser

Examples

Executable examples can be found in the examples folder.

Intent Modelling

In this context, an Intent is an action the system should perform. In the context of Pandora, we’ll define two actions: List Stations, and Select Station (aka start playback)

With the Adapt intent builder:

list_stations_intent = IntentBuilder('pandora:list_stations')\
    .require('Browse Music Command')\
    .build()

For the above, we are describing a “List Stations” intent, which has a single requirement of a “Browse Music Command” entity.

play_music_command = IntentBuilder('pandora:select_station')\
    .require('Listen Command')\
    .require('Pandora Station')\
    .optionally('Music Keyword')\
    .build()

For the above, we are describing a “Select Station” (aka start playback) intent, which requires a “Listen Command” entity, a “Pandora Station”, and optionally a “Music Keyword” entity.

Entities

Entities are a named value. Examples include: Blink 182 is an Artist The Big Bang Theory is a Television Show Play is a Listen Command Song(s) is a Music Keyword

For my Pandora implementation, there is a static set of vocabulary for the Browse Music Command, Listen Command, and Music Keyword (defined by me, a native english speaker and all-around good guy). Pandora Station entities are populated via a "List Stations" API call to Pandora. Here’s what the vocabulary registration looks like.

def register_vocab(entity_type, entity_value):
    pass
    # a tiny bit of code 

def register_pandora_vocab(emitter):
    for v in ["stations"]:
        register_vocab('Browse Music Command', v)

    for v in ["play", "listen", "hear"]:
        register_vocab('Listen Command', v)

    for v in ["music", "radio"]:
        register_vocab('Music Keyword', v)

    for v in ["Pandora"]:
        register_vocab('Plugin Name', v)

    station_name_regex = re.compile(r"(.*) Radio")
    p = get_pandora()
    for station in p.stations:
        m = station_name_regex.match(station.get('stationName'))
        if not m:
            continue
        for match in m.groups():
            register_vocab('Pandora Station', match)

Development

Glad you'd like to help!

To install test and development requirements run

pip install -r test-requirements.txt

This will install the test-requirements as well as the runtime requirements for adapt.

To test any changes before submitting them run

./run_tests.sh

This will run the same checks as the Github actions and verify that your code should pass with flying colours.

Reporting Issues

It's often difficult to debug issues with adapt without a complete context. To facilitate simpler debugging, please include a serialized copy of the intent determination engine using the debug dump utilities.

from adapt.engine import IntentDeterminationEngine
engine = IntentDeterminationEngine()
# Load engine with vocabulary and parsers

import adapt.tools.debug as atd
atd.dump(engine, 'debug.adapt')

Learn More

Further documentation can be found at https://mycroft-ai.gitbook.io/docs/mycroft-technologies/adapt

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.029 Sept 20211

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
mycroftai/adapt

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:08 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:cda3e8436deb1a7a359991a737150e01217d6d9b1c37151d7bf21f3834d9ac96