Nada

Användardialog i naturligt språk

Laboration 3, onsdag 19 november 1997

Plats: "CTT-korridoren"
Institutionen för tal, musik och hörsel
Drottning Kristinas väg 31, 1 tr.

Syftet med denna laboration är att du ska lära känna och i viss mån utveckla ett enkelt dialogsystem. Målsättningen är att stimulera tänkandet kring talbaserade dialogsystems möjligheter, begränsningar och inte minst de problem som måste lösas. Det dialogsystem som används i laborationen är en förenklad version av dialogsystemet GULAN. Detta system och dess ingående moduler är utvecklade vid Institutionen för tal, musik och hörsel, KTH. Systemet är konstruerat för att göra talbaserade sökningar i telefonkatalogdelen "Gula sidorna" och var avsett att söka informationen via Internet. En kartbild över området med markering av de efterfrågade objekten visas av den grafiska modulen samtidigt som ett svar genereras av talsyntesen. 

I laborationssystemet, som för enkelhets skull också kallas GULAN, är en delmängd rörande restauranger, museer osv på Östermalm i Stockholm lagrad som en fast databas. Systemet är uppbyggt kring två talbaserade grundmoduler, taligenkänning och talsyntes. Parsningen är inlagd för att illustrera hur en databaserad parser kan tänkas fungera, men den verkliga analysen sker med hjälp av nyckelord. Den semantiska analysen och dialoghanteringen är implementerade långt från forskningens nuvarande status, men GULAN visar hur enkla modeller i vissa fall kan användas för att studera domänspecifika problem. Systemets moduler presenteras med ett interaktivt grafiskt gränssnitt. Då du klickar på de olika modulerna öppnas fönster där du kan studera modulernas funktion närmare. Varje modul är en självständig enhet som kan studeras och påverkas under "drift". 

Vi skall i det följande kortfattat beskriva varje modul i systemet. 

 


Innehåll

Databassökning Parsning Talsyntes
Lexikon Dialoghantering Laborationsuppgift
Igenkänning Grafik Fonetisk transkription

INGÅENDE MODULER

Databassökning

Databassökningen använder en databas som är ett utdrag från Gula sidorna. Den innehåller information om ett antal faciliteter som finns på Östermalm i Stockholm. Det finns information om restauranger, bagerier, caféer, hotell, museer, biografer, teatrar och gallerier. Innehållet är sparat som enkla textrader. Databassökningen kan du testa genom att först ange ett ämnesord (t. ex. hotell) följt av en eller flera gator och därefter trycka <Enter> eller klicka på Sök-knappen. Resultatet av sökningen visas i textfönstret. 

Laboranten kan inte göra ändringar i databasen, utan endast söka i denna modul.  


Lexikon 

GULAN har ett lexikon som används i igenkänningen och talsyntesen. Detta lexikon innehåller de ord eller ordsekvenser som igenkänningsmodulen kan känna igen. Lexikonet används även för att förbättra uttalet av ord som de inbyggda reglerna inte klarar av, vanligen namn. Varje ords uttal beskrivs med hjälp av en fonetisk transkription. Lexikon har fyra fält separerade med <TAB>. I Tabell 1 visas ett utdrag ur lexikon. 

Tabell 1. Dialogsystemets lexikonstruktur. 
 
Ortografi Transkription Klass Semantik
restaurang RESTUR'ANG / RESTÅR'ANG (OBJEKT) (RESTAURANG)
Valhallavägen V"ALhyHALAhyV'Ä:GE0N (PLATS)  (GATA)
jag-letar-efter J'A:G_L"E:TAR_'EFTE0R (FRAGMENT)  
vilka V"ILKA+ / V"IKA+ (PRON)  
jag-undrar J'A:G_"UNDRAR / J'A:_"UNDRAR (INTRO)  
var-det-finns V'A:R_D'E:T_F'INS / V'A:2DE0_F'INS (FRAGMENT2)  
I det första fältet anges ordens ortografi, som synes kan man låta fasta fraser bilda en ordsekvens genom att sammanbinda orden med bindestreck i ortografin och tecknet "_" i transkriptionen. Det andra fältet innehåller transkriptionen av ordens uttal. Man kan ange flera uttal genom skriva dem efter varandra med sekvensen " / " (mellanslag snedstreck mellanslag) mellan varje variant. Alternativa uttal kan öka igenkänningens träffsäkerhet men kan också öka förväxlingsrisken. När lexikonet används som uttalslexikon för syntesmodulen används det första av dessa alternativa uttal. I det tredje fältet anges ordens klass, som används i igenkänningens klassparsgrammatik. Till klassen OBJEKT hör alla faciliteter i databasen som man kan fråga om. Till klassen FRAGMENT hör ett antal inledande fasta fraser. Klassen INTRO används för inledande fraser såsom "jag-undrar", och den följs alltid av fraser av klassen FRAGMENT2, t ex "var-det-finns". Det fjärde fältet är ett frivilligt semantikfält, som i det nuvarande systemet endast används tillsammans med klasserna OBJEKT och PLATS. Den semantiska informationen används vid parsningen för att bestämma vilket ämne en analyserad mening handlar om. (Klasstaggen och semantiktaggen ska stå inom parentes.) 

Användaren kan få hjälp med transkriptionen genom att ange ett ord i fältet längst ner till vänster och därefter klicka på Transkribera-knappen. Det går att provlyssna på transkriptionen och ändra i den efter behov. De enskilda ljudens symboler finns beskrivna under avsnittet fonetisk transkription i detta labpek. Ändringar i denna modul blir åtkomliga för övriga moduler i systemet när man tryckt på Spara-knappen. 

Laboranten kan i denna modul ändra och lägga till ord, uttal och semantisk markering.  


Igenkänning 

GULAN använder en HMM-baserad igenkänning. Den akustiska delen av igenkänningen är tränad på en taldatabas med dialoger om skärgårdstrafiken i Stockholm, Waxholmsdatabasen. Denna databas består av ca 2000 yttranden av 68 talare, därav 17 kvinnor. Den akustiska träningen har skapat HMM-modeller för fonemen, som sedan används vid en A*-sökning för att skapa en ordgraf av det som sagts. I figur 1 visas ett exempel på en del av en sådan ordgraf. A*-sökning är en snabb metod för att finna de N bästa meningshypoteserna i igenkänning av löpande tal. Du behöver inte lära dig den. Metoden finns beskriven i: Soong, F., Huang, E. (1991): "A tree-trellis based fast search for finding the N best sentence hypotheses in continuous speech recognition", Proc. IEEE ICASSP'91, pp. 705-708. 

 

Figur 1. En ansad ordgraf av yttrandet "på tisdag". 
 

I en ordgraf finns alla möjliga ordkombinationer som A*-sökningen kan generera med hjälp av ett söknät. Detta söknät skapas av en klassparsgrammatik tillsammans med transkriptionerna i lexikon. Klassparsgrammatiken definierar vilka ord som tillåts följa på varandra. Grammatiken byggs upp med hjälp av exempelmeningar, där klasserna tas från lexikon. Exempel på hur dessa meningar kan se ut och vilka klasser de ingående orden har visas i Tabell 2. 

Tabell 2. Exempelmeningar med de ingående ordens klasser. 
 
Exempelmeningar Klasser
vilka restauranger finns på Valhallavägen PRON OBJEKT VERB ART PLATS
jag-letar-efter biografer på Nybrogatan FRAGMENT OBJEKT ART PLATS
var-ligger Karlavägen FRAGMENT PLATS
var-finns-det restauranger FRAGMENT OBJEKT
jag-skulle-vilja-veta var-det-finns hotell INTRO FRAGMENT2 OBJEKT
Underförstått i tabellen ovan är att en mening börjar och slutar med tystnad, som har klassen TYSTNAD. Meningarna ovan ger ett antal klasspar, Tabell 3, som anger vilka klasser som får följa på varandra. Detta ger enkla regler för hur meningar i systemet får se ut. För att förenkla läsningen i tabellen har vi kallat de klasspar som börjar med tystnad för startklasspar, och de som har tystnad som andra element för slutklasspar.  En mening börjar alltid med tystnad följt av ett ord som tillhör några av klasserna i startklassparen (PRON, FRAGMENT eller INTRO). Klassparen anger sedan möjliga påföljande ordpar och slutklassen anger vilka ord som en mening får avslutas med. 

Tabell 3. Klassparsgrammatiken. 
 
Startklasspar Klasspar Slutklasspar 
TYSTNAD PRON ART PLATS PLATS TYSTNAD
TYSTNAD FRAGMENT PRON OBJEKT OBJEKT TYSTNAD
TYSTNAD INTRO  FRAGMENT OBJEKT  
  FRAGMENT PLATS  
  OBJEKT ART  
  OBJEKT VERB  
  VERB ART  
  INTRO FRAGMENT2  
  FRAGMENT2 OBJEKT  
Med hjälp av dessa regler kan man skapa nya meningsmönster som t. ex. "INTRO FRAGMENT2 OBJEKT ART PLATS", som kan generera meningar som "jag-undrar var-det-finns hotell på Karlavägen". Yttranden som ligger utanför denna grammatik kan ej genereras av igenkännaren. Detta är inte så kritiskt i labsystemet eftersom det använder "key-word spotting" för att plocka ut intressanta ord i meningen. Med intressanta ord menas i detta fall ord som har semantisk markering i lexikon. I en verklig tillämpning måste givetvis exempelmeningarna utvidgas, klassparen och de akustiska modellerna tränas på ett verkligt insamlat material för att systemet skall bli robust. I igenkänningsmodulens fönster kan exempelmeningarna studeras och utökas. Meningarna ger även användaren en fingervisning om vilka typer av meningar som kan användas för att styra systemet. 
När man har skrivit in en ny exempelmening i denna modul trycker man på knappen Bygg söknät. Ett söknät byggs då enligt beskrivningen ovan. Om meningen innehöll okända ord rödmarkeras dessa och man måste gå in i Lexikonmodulen och lägga till dem där och spara, innan man kan bygga söknätet. Söknätet sparas automatiskt när man trycker på Bygg söknät-knappen. OBS, glöm inte att klicka på OK i dialogrutan som meddelar att söknätet är klart. 

Man kan prova igenkänningen genom att trycka på knappen Testa, varvid resultatet av igenkänningen visas i textrutan (det visas där även när man kör systemet, vilket kan vara bra om man fick ett oväntat resultat på sin fråga).

Laboranten kan i denna modul ändra och lägga till exempelmeningar för att bygga upp en ordparsgrammatik. Notera att exempelmeningarna endast kan innehålla ord som finns med i lexikonet. Lexikonet kan alltså behövas utvidgas samtidigt som exempelmeningarna kompletteras.  

Parsning 

Resultatet från igenkänningen skickas över till parsningsmodulen. Här görs en enkel semantisk analys som innebär att alla nyckelord sorteras ut. Det första steget i denna analys är att hämta de ingående ordens semantiska klasser. Se tabell 4 för ett exempel på hur en mening analyseras. 

Tabell 4. Exempelmening med dess semantiska taggar. 
 
Ortografi vilka restauranger finns på  Valhallavägen
Klasser   RESTAURANG     GATA
Från denna analys skapas en sökfråga till databasen, genom att plocka ut de klasser som har hämtats från semantikfältet i lexikon, och de ord som hör till klassen GATA. I exemplet ovan blir denna söksträng "restaurang Valhallavägen". 
För att illustrera hur en databaserad parser kan tänkas fungera finns i parsningsmodulen även den datadrivna parsern, Nparse. Nparse använder ett eget lexikon och är tränad på ett antal allmänna svenska typmeningar. Ett frasstrukturträd som visar resultatet av denna analys ritas upp om man trycker på knappen Frasstrukturträd

Laboranten kan ej påverka denna modul.  


Dialoghantering 

Dialoghanteringen består av en enkel loop som aktiverar de olika modulerna i följd. Efter igenkänning och nyckelordsanalys i parsemodulen skickas analysresultatet som en söksträng till databassökningen. Resultatet från denna presenteras slutligen grafiskt och med hjälp av talsyntes. I huvudfönstret där modulerna finns representerade med boxar kan man se hur informationen flödar, genom att den modul som arbetar för tillfället blinkar. 

Laboranten kan ej påverka denna modul.  


Grafik 

Den grafiska modulen visar en karta över Östermalm i Stockholm. Om en gata efterfrågas markeras denna och om man till exempel frågar efter vilka restauranger som finns på denna gata markeras deras läge med pilar från rutor med deras namn. Dessa rutor kan hamna ovanpå varandra om flera restauranger ligger nära varandra, tex Stureplan, men man kan flytta på rutorna med hjälp av musens vänsterknapp. Om man dubbelklickar på boxen kommer eventuell information upp i Netscape-fönstret. Det finns t. ex. information om biografernas program och hotellens priser. 

Laboranten kan ej påverka denna modul.  


Talsyntes 

När resultatet från databassökningen är klar skickas information inte bara till den grafiska modulen för presentation utan också till syntesmodulen. Till syntesmodulen skickas tre parametrar: frågeämne, gatunamn och antal hittade element. Frågeämnena är gata, restaurang, galleri m. fl. Dessa parametrar används tillsammans med ett antal mallmeningar för att generera systemets svar. Det finns tre fält i modulens textfönster, se tabell 5. 

Tabell 5. Syntesmodulens textfönster. 
 
Frågeämne Träffar  Mallmeningar
gata:  (0)  Jag känner inte till någon sådan gata
gata:  (1)  GATA finns markerad på kartan
gata:  (1)  På kartan visas GATA
restaurang:  (0)  Det finns inga restauranger på GATA
restaurang:  (1)  Restaurangen på GATA visas på kartan
restaurang:  (n)  Det finns ANTAL restauranger på GATA som visas på kartan
galleri:  (0)  Det finns inga gallerier på GATA
Beroende på frågeämne och antal hittade element väljs en mallmening. I mallmeningarna kan namnet på gatan som ingick i frågan representeras med variabeln GATA, och antalet hittade element med variabeln ANTAL. Dessa ges värden vid genereringen. I andra kolumnen markeras fler än en träff med (n). Om det finns fler än en mallmening för samma antal träffar på en frågetyp slumpas bland dessa mallmeningar vid genereringen. Glöm inte att spara ändringar som görs här genom att trycka på Spara-knappen. 

Laboranten kan provlyssna på meningar genom att skriva dessa i användarfönstret. Det går att lägga till och ändra bland meningarna. Genom att ändra uttalet i lexikon eller lägga till nya ord om de saknas kan uttalet påverkas. Se fonetiska transkriptionsavsnittet för vidare information. 


Laborationsuppgift 

Laborationen startas genom att klicka på ikonen med namnet lab3

Laborationens huvudfönster visas efter några sekunder tillsammans med ett litet meddelandefönster där laboranten tillfrågas om denne vill påbörja en ny laboration eller fortsätta med en pågående. Första gången skall du klicka på knappen Ny lab. Om systemet av någon anledning skulle krascha finns möjligheten att starta om laborationen och fortsätta där du var genom att välja knappen Fortsätt lab

I huvudfönstret visas en schematisk bild av hur dialogsystemet är uppbyggt. I modulen överst görs den grundläggande taligenkänningen på yttranden från användaren. Dessa analyseras språkligt i parsningsmodulen och lämpliga nyckelord extraheras. Nyckelorden används för att göra en databassökning (i databasmodulen) och resultatet presenteras dels grafiskt (m h a grafikmodulen), dels med talsyntes (talsyntesmodulen). Denna händelsekedja styrs från dialoghanteringsmodulen. Dessutom finns en speciell lexikonmodul som är knuten till taligenkänning och talsyntes. Pilarna anger hur information kan flöda mellan systemets moduler. Genom att klicka på modulerna öppnas fönster där man kan studera deras funktioner närmare. 

Börja med att klicka på Testa-knappen nere till höger i fönstret. Nu öppnas ett nytt fönster där du kan testköra hela dialogsystemet. Håll ner den röda knappen märkt TRYCK, dess text ändras då till TALA. Säg meningen "Var ligger Valhallavägen" i mikrofonen och släpp upp knappen. Nu behandlas detta yttrande av systemet. I huvudfönstret lyser modulerna upp allteftersom de aktiveras. Med lite tur markeras nu Valhallavägen på kartan med en linje och talsyntesen meddelar detta. Gör om detta steg några gånger tills det fungerar om det inte fungerade första gången. Prova sedan meningen "Vilka restauranger ligger på Valhallavägen". Taligenkänningens resultat varierar mycket, bl a beroende på användarens röst. Prova någon annan gata eller fråga efter t ex biografer, hotell eller museer istället om de första förslagen fungerar dåligt. 

Genom ett olyckligt förbiseende glömde konstruktörerna bort att lägga in gatorna Villagatan, Engelbrektsgatan, Floragatan och Lidingövägen i lexikonet. På dessa gator finns det gallerier. Behandlingen av objektet galleri saknas även och måste inkluderas i systemet. Ordet galleri tillhör klassen (OBJEKT) och har den semantiska egenskapen (GALLERI), jämför t ex behandlingen av ordet restaurang i lexikon. Laborationsuppgiften består således av att 

  1. Komplettera lexikonet med de glömda gatorna. Både transkription och semantisk markering måste anges. Se på de andra gatorna för att se hur det ska se ut.

  2. Komplettera lexikon med galleri, se t ex restaurang för att se hur den ska se ut.

  3. Ge några exempelmeningar på vad användaren kan säga med de nya orden tillsammans med igenkänningsmodulens klassparsgrammatik. Dels några som är grammatiskt korrekta, dels några som är grammatiskt felaktiga, men som ändå kommer att hanteras korrekt av systemet. Ge även några meningar som inte kan hanteras av systemet.

  4. Komplettera genereringsmeningarna så att den kan genera flera olika svar för vardera 0, 1 eller flera databasträffar på frågor om gallerier.

  5. Förbättra systemets prestanda genom att trimma de olika delarna. Gör det t ex genom att lägga till alternativa uttal på ord som inte känns igen, eller genom att ändra allt för lika fraser och ord som förväxlas. Lägg till flera exempelmeningar både i igenkänningsmodulen och i svarsgenereringsmodulen.
    Se efter om det är skillnad på hur systemet fungerar för olika personer i er grupp.

  6. (Extrauppgift, men även de som inte skriver en uppsats om denna labb bör resonera kring problematiken och diskutera den i labgruppen).
    Fundera på vad man skulle behöva lägga till i systemet för att göra det bättre. Vilka moduler skulle behöva läggas till eller utvecklas för att göra systemet mera robust? Hur påverkas ett dialogsystems design av  applikation och domän? Hur långt kan man komma med key word-spotting? Ge exempel på meningar som man inte klarar av med enkel key word-spotting. Vad har systemets svarstider för inverkan på dialogen?


Fonetisk transkription (RULSYS-notation)

Ordens uttal anges med en fonetisk transkription med den RULSYS-notation som anges i Tabell 6. 
Varje ord i lexikon måste ha en prosodisk transkription. Ord med accent I markeras med ' framför den huvudbetonade vokalen och ord med accent II markeras med " framför den huvudbetonade vokalen. Ord med accent I har en stavelse med högre tonhöjd, anden=fågel, medan ord med accent II har två tonhöjdstoppar, anden=spöket. Sammansatta ord måste ha ordsammansättningen markerad med hy samt den sekundärbetonade vokalen markerad med '. Sammansatta ord har alltid accent II. Funktionsord som nästan alltid är obetonade markeras med ett + på slutet. Exempel: gå - G'Å:, gata - G"A:TA, gågata - G"Å:hyG'A:TA, jag - J'A:G+. 
 
 
Tabell 6. Fonetiska tecken för svenska vokaler och konsonanter
Vokal-symbol Exempel  Fonetisk text 
A:  lam  L'A:M
A lamm  L'AM
E:  se  S'E:
sett S'ET 
E0  natten N'ATE0N
I:  sil  S'I:L 
sill  S'IL
O:  bo  B'O: 
bott  B'OT
U:  hus  H'U:S
hund H'UND
Y:  myra  M"Y:RA
mygga M"YGA
Å: gå  G'Å:
Å gått  G'ÅT 
Ä: häl H'Ä:L
Ä häll H'ÄL
Ä3 här H'Ä3R
Ä4 herr H'Ä4R
Ö:  öga "Ö:GA
Ö löss L'ÖS
Ö3 öra "Ö3RA
Ö4 förr F'Ö4R
 
Konsonant-symbol Exempel  Fonetisk text
B bar B'A:R 
D bod B'O:D
2D bord B'O:2D 
F far F'A:R
G gul G'U:L 
H hatt H'AT
jul  J'U:L 
K tack T'AK
L lus L'U:S 
2L sorl  S'Å:2L
M mor M'O:R
N natt N'AT
2N barn B'A:2N
NG tung T'UNG
P pil P'I:L 
R ros R'O:S
S sol  S'O:L 
2S kors K'Å2S
SJ skjorta SJ"O2TA
T till  T'IL 
2T hårt  H'Å:2T 
TJ kedja TJ"E:DJA
V var V'A:R
 
 

^ Upp till kursplanen.


Sidansvarig: Björn Gambäck <gamback@nada.kth.se>
Senast ändrad 24 november 1997
Tekniskt stöd: <webmaster@nada.kth.se>