Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- encoding: utf-8 -*-
- __author__ = 'malevolent'
- """
- A sample program that uses multiple intents and disambiguates by
- intent confidence
- try with the following:
- PYTHONPATH=. python examples/multi_intent_parser_spanish.py "qué tiempo hace en tokyo"
- PYTHONPATH=. python examples/multi_intent_parser_spanish.py "pon algo de música de los clash"
- """
- import json
- import sys
- from adapt.entity_tagger import EntityTagger
- from adapt.tools.text.tokenizer import EnglishTokenizer
- from adapt.tools.text.trie import Trie
- from adapt.intent import IntentBuilder
- from adapt.parser import Parser
- from adapt.engine import IntentDeterminationEngine
- tokenizer = EnglishTokenizer()
- trie = Trie()
- tagger = EntityTagger(trie, tokenizer)
- parser = Parser(tokenizer, tagger)
- engine = IntentDeterminationEngine()
- # define vocabulary
- weather_keyword = [
- "tiempo"
- ]
- for wk in weather_keyword:
- engine.register_entity(wk, "WeatherKeyword")
- weather_types = [
- "nieve",
- "lluvia",
- "viento",
- "aguanieve",
- "sol"
- ]
- for wt in weather_types:
- engine.register_entity(wt, "WeatherType")
- locations = [
- "Seattle",
- "San Francisco",
- "Tokyo"
- ]
- for l in locations:
- engine.register_entity(l, "Location")
- # structure intent
- weather_intent = IntentBuilder("WeatherIntent")\
- .require("WeatherKeyword")\
- .optionally("WeatherType")\
- .require("Location")\
- .build()
- # define music vocabulary
- artists = [
- "third eye blind",
- "the who",
- "los clash",
- "john mayer",
- "kings of leon",
- "adelle"
- ]
- for a in artists:
- engine.register_entity(a, "Artist")
- music_verbs = [
- "escuchar",
- "oir",
- "tocar",
- "pon"
- ]
- for mv in music_verbs:
- engine.register_entity(mv, "MusicVerb")
- music_keywords = [
- "canciones",
- "música"
- ]
- for mk in music_keywords:
- engine.register_entity(mk, "MusicKeyword")
- music_intent = IntentBuilder("MusicIntent")\
- .require("MusicVerb")\
- .optionally("MusicKeyword")\
- .optionally("Artist")\
- .build()
- engine.register_intent_parser(weather_intent)
- engine.register_intent_parser(music_intent)
- if __name__ == "__main__":
- for intent in engine.determine_intent(' '.join(sys.argv[1:])):
- if intent and intent.get('confidence') > 0:
- print(json.dumps(intent, indent=4))
Advertisement
Add Comment
Please, Sign In to add comment