400 likes | 559 Vues
GRYPHON. Taylor Curtis Eric Lantz Kate Nelson Gio Messner Michelle Phillips. General Framework. Text-to-speech. Speech-to-text. Parser. DM. DB. Sphinx. Phoenix. Dialogue Manager. Database. Festival. General Framework. Text-to-speech. Speech-to-text. Parser. DM. DB. Sphinx.
E N D
GRYPHON Taylor Curtis Eric Lantz Kate Nelson Gio Messner Michelle Phillips
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
Galaxy Communicator Parser Speech-to-Text DM Server HUB Text Input Database Speech and Text Output
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
Speech-to-text Real-time CMU Partial Hypotheses Vocabulary / .corpus File Hand dictionary / .handdict Phoneme Set SPHINX "KWON " "KWON CARON " "PAUL BIOLOGY GROW " "PAUL BIOLOGY COURSES " "PAUL BIOLOGY COURSES ARE AND " "PAUL BIOLOGY COURSES ARE THE " "WHAT BIOLOGY COURSES ARE THERE" TEXT
Phoneme Set Phoneme Example Translation AA odd AA D AE at AE T AH hut HH AH T AO ought AO T AW cow K AW AY hide HH AY D B be B IY CH cheese CH IY Z D dee D IY DH thee DH IY EH Ed EH D ER hurt HH ER T EY ate EY T F fee F IY G green G R IY N HH he HH IY IH it IH T IY eat IY T JH gee JH IY Phoneme Example Translation K key K IY L lee L IY M me M IY N knee N IY NG ping P IH NG OW oat OW T OY toy T OY P pee P IY R read R IY D S sea S IY SH she SH IY T tea T IY TH theta TH EY T AH UH hood HH UH D UW two T UW V vee V IY W we W IY Y yield Y IY L D Z zee Z IY ZH seizure S IY ZH ER
Text Input • Sphinx can limit system • Recognizes some voices poorly • Text input option increases reliability
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
Phoenix • University of Colorado, Boulder • Semantic Frame Parser • No predefined grammar • Grammars are defined in Backus-Naur Form
Traditional syntax parse Our Advisor, Jeff Ondich Keyword parse Animal ActionFood moose ate leaves
Our Grammar Is Somewhere In Between "What Computer Science courses does Jeff Ondich teach?" [Department] [Professor] [_Cs] [First_name] [Last_name] Computer Science Jeff Ondich
Format of a Phoenix Grammar File Frame: Courses Nets: [Department] [Professor] and elsewhere in the file: [Department] ([_Biol]) ([_Cs]) ; [_Cs] (CS) (Computer Science) ; [Professor] (*[First_name] [Last_name]) ; [First_name] (Jeff) (David) ; [Last_name] (Ondich) (Musicant) ; Net definitions are in brackets Slots (subnets) Strings in parentheses without brackets are terminals [Professor] [First_name] [Last_name] Jeff Ondich
An Example Parse “Show me all 5As in English and Philosophy” 1 [Class_period] [_And] [Department] [Department] 2 [_5a] [_Engl] And [_Phil] 5As English Philosophy Courses:[Class_Period].5a Courses:[Department].Engl Logic:And Courses:[Department].Phil 3 “Courses” and “Logic” are frames (“Respond” is the third one we use)
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
One Huge Table? • Bad • Redundant • Repetitive +----+---------+------+--------------------------------------------------+------------+-------+------+-------------+-----------+ | id | syn_num | dept | title | build_name | room1 | day1 | start_time1 | end_time1 | +----+---------+------+--------------------------------------------------+------------+-------+------+-------------+-----------+ | 16 | 6398 | ocp | s i t australia:environment | | | | | | | 17 | 6399 | ocp | a c m florence | | | | | | | 18 | 6400 | astr | introduction to astronomy | olin | 149 | m | 01:50pm | 03:00pm | | 19 | 6401 | astr | observational and laboratory astronomy | good | 104 | t | 07:00pm | 10:00pm | | 20 | 6402 | biol | conservation biology | olin | 149 | m | 11:10am | 12:20pm | | 21 | 6402 | ents | conservation biology | olin | 149 | m | 11:10am | 12:20pm | | 22 | 6403 | astr | special project | | | | | | | 23 | 6405 | astr | special project | | | | | | | 24 | 6412 | biol | genes, evolution, and development | olin | 141 | m | 08:30am | 09:40am | | 25 | 6415 | phys | complexity and chaos | olin | 302 | m | 09:50am | 11:00am | | 26 | 6417 | phys | cellular automata:new science | olin | 302 | m | 08:30am | 09:40am | | 27 | 6418 | amst | introduction to u.s. latino/a studies | good | 3 | m | 01:50pm | 03:00pm | | 28 | 6419 | phys | newtonian mechanics | olin | 2 | m | 12:30pm | 01:40pm | | 29 | 6420 | biol | genes and evolution lab | hul | 206 | t | 01:00pm | 05:00pm | | 30 | 6421 | phys | newtonian mechanics lab | olin | 301 | t | 01:00pm | 05:00pm | | 31 | 6422 | biol | genes and evolution lab | hul | 206 | w | 02:00pm | 06:00pm | | 32 | 6423 | biol | genes and evolution lab | hul | 206 | th | 01:00pm | 05:00pm | | 33 | 6425 | phys | newtonian mechanics lab | olin | 301 | th | 01:00pm | 05:00pm | | 34 | 6426 | amst | the sublime in america | boli | 161 | t | 01:15pm | 03:00pm |
The Database Structure DAY TIMESPAN TIMEANDPLACE ROOM id start_time id id id room_id day_id end_time building_id day course_id timespan_id room COURSE BUILDING FULFILLS id id id syn_num build_name course_id title dist_id min_cred max_cred scrch_only COURSEINDEPT id course_num course_id section DISTRO dept_id id dist_name PROFESSOR TAUGHTBY id id DEPARTMENT first_name course_id id last_name professor_id dept_name
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
Dialogue Manager • Query Manager • Logic Parser • SQL Query Builder • Output Director
Some Queries Can’t Stand Alone Can I see Geology as well? Where are they held? Show me the ones in the morning I said 3A What math classes are there? What’s in Sayles 251? Where are they held? Who teaches those? Who teaches those?”
A Query is a Continuation if… • It contains a continuation keyword • It contains no question words • It contains only question words “Show me the RAD classes too.” “And Physics.” “When is it?”
Combining the Old With the New OLD QUERY NEW QUERY Courses:[Class_Period].5a Courses:[Department].Engl Logic:And Courses:[Department].Phil Courses:[Class_Period].5a Courses:[Department].Engl Logic:And Courses:[Department].Phil Courses:[Class_Period].5a Courses:[Class_Period].5a Courses:[Department].Engl Courses:[Class_Period].5a Courses:[Department].Engl Logic:And Courses:Correction Courses:[Class_Period].3a Courses:Correction Courses:[Class_Period].3a “No, 3A” Combined Query Courses:[Class_Period].5a Courses:[Class_Period].3a Courses:[Department].Engl Logic:And Courses:[Department].Phil
Logic Parser “Real” Logic vs. Human Logic “Show me all the English and History courses.” If we interpret this as a logical AND, we won’t return any results. “Show me the courses that are English and RAD.” In this case, we do want to find courses that fulfill both of these criteria. • How can we get most cases right? • Change any occurrence of “and” to “or” unless it comes after the word “course” or “class”.
Resolving Ambiguity “Classes that are RAD and English or History.” This has two possible interpretations, because English uses infix ordering. and or RAD or and History English History RAD English Postfix order is unambiguous, so each of the above trees is mapped to a different postfix statement: RAD English History or and RAD English and History or
Which interpretation to use? • Precedence rules: • apply NOTs. • apply ORs between elements of the same type. • apply ANDs. • apply all other ORs • if a NOT is inside a “homogenous” clause, apply it to the whole clause
So, for example… Courses:[Class_Period].5a Courses:[Department].Engl Logic:And Courses:[Department].Phil Courses:[Class_Period].5a Courses:[Department].Engl Logic:Or Courses:[Department].Phil Courses:[Class_Period].5a Logic:And Courses:[Department].Engl Logic:Or Courses:[Department].Phil Courses:[Class_Period].5a Logic:And Courses:[Department].Engl Courses:[Department].Phil Logic:Or Courses:[Class_Period].5a Courses:[Department].Engl Courses:[Department].Phil Logic:Or Logic:And
Make SQL Query The Problem: Phoenix Output Database Courses:[Course_Period].5a Courses:[Department].Engl Courses:[Department].Phil Logic:Or Logic:And SELECT course.name FROM course WHERE course.id = 7; ? DAY TIMESPAN TIMEANDPLACE ROOM BUILDING DISTRO FULFILLS COURSE COURSEINDEPT PROFESSOR TAUGHTBY DEPARTMENT
SQL Syntax • SELECT the information (columns) we want to show • FROM the tables that have the information we want • WHERE certain things are true • JOINS connecting two tables • VALUES specified by user “What are the names of all courses in the English department?” SELECT course.nameFROM course, courseindept, department WHEREcourse.id = courseindept.course_id AND courseindept.dept_id = department.idAND department.name = ‘Engl’;
The Reason For Joins DAY TIMESPAN TIMEANDPLACE ROOM id start_time id id id room_id day_id end_time building_id day course_id timespan_id room Course names are here COURSE BUILDING FULFILLS id id id syn_num build_name course_id title dist_id min_cred max_cred scrch_only COURSEINDEPT We need to connect these tables together id course_num course_id section DISTRO dept_id id dist_name Dept names are here PROFESSOR TAUGHTBY last_name id DEPARTMENT first_name course_id id id professor_id dept_name SELECT course.nameFROM course, courseindept, department WHEREcourse.id = courseindept.course_id AND courseindept.dept_id = department.idAND department.name = ‘Engl’;
Getting Back to Our Problem • Endless possibilities for Phoenix output • But many outputs have similar form Courses:[Department].Geol Courses:[Department].Engl Courses:[Department].Soan Constant Portion Variable Portion • We want to look for constant portions and map the variable portions to appropriate SQL statements department.name = ‘Engl’ Courses:[Department].Engl
The Patterns File: Our New Best Friend Variable Portion (wildcard) Courses:[Department].$1 | course.name | course, courseindept, department | JOIN_COURSE_DEPARTMENT | department.name = $1 Add to SELECT field Add to FROM field Add to JOINS Add to VALUES Set equal to variable portion # JOIN_COURSE_DEPARTMENT = course.id = courseindept.course_id AND courseindept.dept_id = department.id SELECT course.nameFROM course, courseindept, department WHEREcourse.id = courseindept.course_id AND courseindept.dept_id = department.idAND department.name = ‘Engl’; Courses:[Department].Engl
Putting It All Together • For SELECT, FROM, and JOINS, we can simply concatenate the components for different lines • For VALUES, we need to take logic into account • (This is why we did all that crazy postfix stuff) Courses:[Class_Period].5a Courses:[Department].Engl Courses:[Department].Phil Logic:Or Logic:And 5a Engl Phil Phil (Phil Or Engl) Engl Or ((Phil Or Engl) And 5a) _______ Stack 5a And • If it’s not logic, put it on a stack • If it is logic, pop things off the stack, match to patterns file, combine, and put back on
Preparing Output • Send the formed SQL query to the database, and process the results Database Results status results Festival Mozilla
Why Bimodal Output • The project was originally envisioned with all-speech output • Searches can return hundreds of results • Festival speaks quite slowly • Not designed for telephone use • Text output of results allows user to find relevant results quickly • Mozilla provided a predefined user interface
General Framework Text-to-speech Speech-to-text Parser DM DB Sphinx Phoenix Dialogue Manager Database Festival
Festival • Multi-Lingual • Text-to-Speech • British and American English • Initial plan vs. actual implementation • Response
Thank You from G R Y P H O N raciously earranging our emes libly eimagining our emes o eady our arser ey