[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE.md) [![CLA](https://img.shields.io/badge/CLA%3F-Required-blue.svg)](https://mycroft.ai/cla) [![Team](https://img.shields.io/badge/Team-Mycroft_Core-violetblue.svg)](https://github.com/MycroftAI/contributors/blob/master/team/Mycroft%20Core.md) ![Status](https://img.shields.io/badge/-Production_ready-green.svg)
[![Build Status](https://travis-ci.org/MycroftAI/adapt.svg?branch=master)](https://travis-ci.org/MycroftAI/adapt) [![Coverage Status](https://coveralls.io/repos/github/MycroftAI/adapt/badge.svg?branch=dev)](https://coveralls.io/github/MycroftAI/adapt?branch=master)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)
[![Join chat](https://img.shields.io/badge/Mattermost-join_chat-brightgreen.svg)](https://chat.mycroft.ai)
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](https://mycroft.ai/wp-content/uploads/2019/05/Adapt-video-still.png)](https://www.youtube.com/watch?v=zR9xvPtM6Ro)
Getting Started
===============
To take a dependency on Adapt, it's recommended to use virtualenv and pip to install source from github.
```bash
$ 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](https://github.com/MycroftAI/adapt/tree/master/examples).
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:
```Python
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.
```Python
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.
```Python
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.
```python
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
Raw data
{
"_id": null,
"home_page": "https://github.com/MycroftAI/adapt",
"name": "adapt-parser",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "natural language processing",
"author": "Sean Fitzgerald",
"author_email": "sean@fitzgeralds.me",
"download_url": "https://files.pythonhosted.org/packages/ff/97/236a8cf280b789a86a7e5b50d3602e189ecc9726ebbb5b3259bb43761b02/adapt-parser-1.0.0.tar.gz",
"platform": "",
"description": "[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE.md) [![CLA](https://img.shields.io/badge/CLA%3F-Required-blue.svg)](https://mycroft.ai/cla) [![Team](https://img.shields.io/badge/Team-Mycroft_Core-violetblue.svg)](https://github.com/MycroftAI/contributors/blob/master/team/Mycroft%20Core.md) ![Status](https://img.shields.io/badge/-Production_ready-green.svg)\n\n[![Build Status](https://travis-ci.org/MycroftAI/adapt.svg?branch=master)](https://travis-ci.org/MycroftAI/adapt) [![Coverage Status](https://coveralls.io/repos/github/MycroftAI/adapt/badge.svg?branch=dev)](https://coveralls.io/github/MycroftAI/adapt?branch=master)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n[![Join chat](https://img.shields.io/badge/Mattermost-join_chat-brightgreen.svg)](https://chat.mycroft.ai)\n\nAdapt Intent Parser\n==================\nThe 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.\n\n[![Introducing the Adapt Intent Parser](https://mycroft.ai/wp-content/uploads/2019/05/Adapt-video-still.png)](https://www.youtube.com/watch?v=zR9xvPtM6Ro)\n\nGetting Started\n===============\nTo take a dependency on Adapt, it's recommended to use virtualenv and pip to install source from github.\n\n```bash\n$ virtualenv myvirtualenv\n$ . myvirtualenv/bin/activate\n$ pip install -e git+https://github.com/mycroftai/adapt#egg=adapt-parser\n```\n\nExamples\n========\nExecutable examples can be found in the [examples folder](https://github.com/MycroftAI/adapt/tree/master/examples).\n\nIntent Modelling\n================\nIn this context, an Intent is an action the system should perform. In the context of Pandora, we\u2019ll define two actions: List Stations, and Select Station (aka start playback)\n\nWith the Adapt intent builder:\n```Python\nlist_stations_intent = IntentBuilder('pandora:list_stations')\\\n .require('Browse Music Command')\\\n .build()\n```\n\nFor the above, we are describing a \u201cList Stations\u201d intent, which has a single requirement of a \u201cBrowse Music Command\u201d entity.\n\n```Python\nplay_music_command = IntentBuilder('pandora:select_station')\\\n .require('Listen Command')\\\n .require('Pandora Station')\\\n .optionally('Music Keyword')\\\n .build()\n```\n\n\nFor the above, we are describing a \u201cSelect Station\u201d (aka start playback) intent, which requires a \u201cListen Command\u201d entity, a \u201cPandora Station\u201d, and optionally a \u201cMusic Keyword\u201d entity.\n\nEntities\n========\n\nEntities are a named value. Examples include:\n`Blink 182` is an `Artist`\n`The Big Bang Theory` is a `Television Show`\n`Play` is a `Listen Command`\n`Song(s)` is a `Music Keyword`\n\nFor 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\u2019s what the vocabulary registration looks like.\n\n```Python\ndef register_vocab(entity_type, entity_value):\n pass\n # a tiny bit of code \n\ndef register_pandora_vocab(emitter):\n for v in [\"stations\"]:\n register_vocab('Browse Music Command', v)\n\n for v in [\"play\", \"listen\", \"hear\"]:\n register_vocab('Listen Command', v)\n\n for v in [\"music\", \"radio\"]:\n register_vocab('Music Keyword', v)\n\n for v in [\"Pandora\"]:\n register_vocab('Plugin Name', v)\n\n station_name_regex = re.compile(r\"(.*) Radio\")\n p = get_pandora()\n for station in p.stations:\n m = station_name_regex.match(station.get('stationName'))\n if not m:\n continue\n for match in m.groups():\n register_vocab('Pandora Station', match)\n```\n\nDevelopment\n===========\n\nGlad you'd like to help!\n\nTo install test and development requirements run\n\n```\npip install -r test-requirements.txt\n```\n\nThis will install the test-requirements as well as the runtime requirements for adapt.\n\nTo test any changes before submitting them run\n\n```\n./run_tests.sh\n```\n\nThis will run the same checks as the Github actions and verify that your code should pass with flying colours.\n\nReporting Issues\n================\nIt's often difficult to debug issues with adapt without a complete context. To facilitate simpler debugging,\nplease include a serialized copy of the intent determination engine using the debug dump\nutilities.\n\n```python\nfrom adapt.engine import IntentDeterminationEngine\nengine = IntentDeterminationEngine()\n# Load engine with vocabulary and parsers\n\nimport adapt.tools.debug as atd\natd.dump(engine, 'debug.adapt')\n```\n\nLearn More\n========\n\nFurther documentation can be found at https://mycroft-ai.gitbook.io/docs/mycroft-technologies/adapt\n\n\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "A text-to-intent parsing framework.",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/MycroftAI/adapt"
},
"split_keywords": [
"natural",
"language",
"processing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "13c09f3c286511554628eaacc7080ec69f30e8b2a5e3e078b37c4ed7703924b2",
"md5": "ef7f3bb8cd764567fecb351f4bacc41c",
"sha256": "e6839f79c6927ee5c645236420fd07db4a15d9bf2f0fe8e4c4fd28ad58d4e536"
},
"downloads": -1,
"filename": "adapt_parser-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ef7f3bb8cd764567fecb351f4bacc41c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 31183,
"upload_time": "2021-09-29T02:25:56",
"upload_time_iso_8601": "2021-09-29T02:25:56.451093Z",
"url": "https://files.pythonhosted.org/packages/13/c0/9f3c286511554628eaacc7080ec69f30e8b2a5e3e078b37c4ed7703924b2/adapt_parser-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ff97236a8cf280b789a86a7e5b50d3602e189ecc9726ebbb5b3259bb43761b02",
"md5": "818e041e543339df194781a461470bf7",
"sha256": "fb9a072e01ce4d2a2eaab791db4159144af1cfeebdec931db0b60ec2f471fd59"
},
"downloads": -1,
"filename": "adapt-parser-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "818e041e543339df194781a461470bf7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23213,
"upload_time": "2021-09-29T02:25:57",
"upload_time_iso_8601": "2021-09-29T02:25:57.897234Z",
"url": "https://files.pythonhosted.org/packages/ff/97/236a8cf280b789a86a7e5b50d3602e189ecc9726ebbb5b3259bb43761b02/adapt-parser-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2021-09-29 02:25:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MycroftAI",
"github_project": "adapt",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "six",
"specs": [
[
">=",
"1.10.0"
]
]
}
],
"lcname": "adapt-parser"
}