TässäkohdassaesitelläänmuutamatoteutuksessatärkeäJava-kielinenluokka.Kustakin
luokasta onlyhyt kuvaus,jonka jälkeen esitelläänluokan metodit.
Rajapintaluokka DialogueManager
RajapintaluokkaDialogueManageronmääriteltykommunikoimaankäyttäjärajapinnan
japäättely-yksiköidenkanssa.Senyhteistyössäkäyttämiäapuluokkiaonesitettykuvas-
sa15.DialogueManager-luokan oleelliset metodit on esitelty alla.
String exportModel()
Kun käyttäjä haluaa tallentaa keskusteluistunnon tilan jatkaakseen sitä myöhemmin,
käyttöliittymärajapinta kutsuu tätä metodia, joka kerää dialoginhallintaytimen tilan-
kuvauksen RDF-mallina jatuottaa siitämerkkijonoesityksenRDF/XML-muodossa.
Käyttöliittymä voialoittaa keskustelun jostainaiemmin tallennetusta tilanteesta, joka
on talletettu exportModel-metodilla RDF/XML-muotoiseen merkkijonoon. Tämä me-
todikorvaa nykyisen istunnon tallennetulla istunnonkuvauksella.
addDMInput(AbstratDMInput indata)
Tätä metodia kutsutaan aina kun käyttäjä on antanut syötteen käyttäjärajapinnan
avulla. AbstatDMInputmahdollistaa syötteenmerkkijonona.
void lose()
Kun tätä metodiakutsutaan, on käyttöliittymä sulkenut istunnon, jolloin myös dialo-
ginhallinnan istunto suljetaan.
Rajapintaluokka DialogueManager sisältää myös metodeita jotka mahdollistavat vaih-
toehtoistendialoginhallintaytimienpääsyn4M:nkäyttäjärajapintamoduuleihineliluon-
nollisen kielen tuottokomponenttiinja syötteenjäsentimeen.
void giveResponse(String response)
Tämä metodi esittää käyttöliittymän avulla ihmiskäyttäjälle response-merkkijonon si-
sällön.Tätä metodiakäytetään,kunkäyttäjälle lähetetäänvastauksia,jotka ovat luon-
nollisen kielenmuodossa,jollointuottokomponenttia tarvita. RinnakkainenIR-dialogi-
järjestelmäkäyttää tätämetodiamerkkijonomuotoisten hakutulostenesittämisessä.
void giveResponse(Model agenda)
Tällämetodilladialoginhallintaydin voituottaakäyttäjällevastauksenRDF-muotoisen
agendamallin avulla. DialogueManager-luokka vastaa agendarakenteen muunnoksesta
käyttäjän kielelle käyttäen hyväksi luonnollisen kielen tuottokomponenttia. Se myös
päivittäädialogikontekstin muistia,jossasäilytetääntiedonhakua jaluonnollisen kielen
tuottamistavartenpuhunnoksientopi-,newinfo- jahead-käsitteitäsekäpuhunnoksien
RDF/XML-agendarakenteita. DialogueManager luo rakenteen AbstratDMOutput to-
teuttavanSimpleDMOutput-viestiolion jalähettääsenkäyttäjärajapinnastavastaavalle
integraatiokomponentille esitettäväksikäyttäjälle. Viestiolio sisältääpuhuttavan jaesi-
tettäväntekstinsekämahdollisestitaustasovellustenlähettämätkuvatiedostot,jotkaon
tarkoitus näyttää käyttäjän päätelaitteella.
Dialogikontekstin muisti
Dialoginhallintaan on toteutettukeskustelumuisti, joka pitääkirjaa kustakinkeskuste-
lunpuheenvuorosta.Setoimiikielellistenjäsennin-jatuottokomponenttien apuna,sekä
ContextInfoonniputusluokka,johononkerättyperäkkäistenpuheenvuorojenkonteksti-
informaatiot. Sen sisältämät DMContext-oliot kuvaavat kukin yhden puheenvuoron
topiikkienja uudentiedonontologisettunnukset. Dialogijärjestelmäänyhdistetytonto-
logiapohjaisetIR-palvelut voivat käyttää tätärakennettahyväkseen.
Ytimen runkoluokka DMCore
DMCore-luokka on erilaisten dialoginhallintaytimien (DM-ytimen) perustoteutus, joka
sisältääseuraavat ohjelmasäikeen ohjaukseen jasyötevirtaanliittyvät metodit.
void run()
Tämä metodi pitää dialoginhallintaytimen kuuntelusilmukan käynnissä omana säikee-
nään.Kunkäskyjonoonsaapuuuusikäyttäjänsyöte,kutsutaan analyseInput-metodia,
jokareagoi syötteeseen.
void lose()
Tämämetodisammuttaakuuntelusilmukan.KunrajapintaluokkaDialogueManagersaa
sammutuspyynnön käyttäjärajapinnalta,kutsuu setätämetodiasammuttaakseen DM-
ytimen suorituksen.
void proessInput(String input)
Dialoginhallintayksikön rajapinta, DialogueManager, kutsuu tätä metodia lisätäkseen
käyttäjältätulevan syötteen käsittelyjonoon.
Dialoginhallintaydin OntoDM
Dialoginhallintayksikkö on toteutettu DMCore-ydinluokan jatkeena.
analyseInput(String inStr)
DMCore-runko-oliokutsuu tätä metodiakun käyttäjä on antanut syötteen.Se huoleh-
tii syötejonon avulla siitä, että vain yksi syöte kerrassaan käsitellään analyseInput-
metodilla. Tämä metodi suorittaa dialoginhallinnan pääsilmukan toiminnot, jotka on
esitettykuvassa 17.
Nykyinen keskustelu−
muistin tila
Keskustelu−
muistin tila, jossa käyttäjä−
nimi selvitetty ja käyttäjä tunnistettu
Mallinnettu toiminto:
kysely henkilön x käyttöoikeuksista Sidottu: x = Vertti Ajetaan taustasovellus−
Tuodaan keskusteluun kysymys henkilön x käyttäjänimestä.
Mallinnettu toiminto:
Sidottu: x = Vertti
Mahdollinen tavoitetila, jossa ongelma on rajatumpi tai ratkennut
Dialogisäännön avulla mallinnettu tilan muutos
Mahdollinen, ei−valittu dialogipolku Valittu dialogipolku
Mallinnettu keskustelun tila
Mallinnettu tavoitetila alku
sääntö 1 sääntö 2
...
score=15 score=20
score=10 score=5
score=16
Kuva 20:Esimerkkidialoginhallinnan keskustelunsuunnittelusta
Keskustelumuisti DMem ja referenttiolio DRef
Keskustelumuisti on toteutettu luokkaan DMem. Se perustuu RDF-malliin, jossa sesäi-
lyttääkaikkiinstanssitietonsaelitiedon diskurssireferenteistäjaniidentiloista. Senjul-
kinenmuuttujamodelonviittausRDF-malliin,jonkavälityksellävoidaanviitatamihin
tahansakeskustelunreferenttiin.DMem-olionmetodeillaaddDRef()jafindDRefByClass()
muut dialoginhallinnan osat voivat lisätä keskustelumuistiin uusia referenttejä ja käsi-
tellä aiempia. Nämä keskustelumuistin DMem aksessorimetodit muodostavat referent-
tejäkuvaaviaDRef-olioita,joidenavulladiskurssireferenttejävoidaankäsitelläerillisinä
olioina.
DRef-olioidenominaisuuksia voidaanlukea,lisätäjamuuttaamerkkijonomuodossame-
todeilla setArg(a,v) ja getArg(a).Referenteille voimäärittää keskinäisiä ontologian
mukaisiamäärityksiämetodeillaaddRel(String a, DRef ref)jaDRefgetRel(String a).
Nämä RDF-pohjaiset tietorakenneoliot on toteutettu samalla tavoin kuin liitteen esi-
merkkiohjelmassa 1,jossa kuvataanverkkotunnuksia janiiden käyttäjiä.
Keskustelunsuunnittelijat DPlanner ja DPlanPhase
Dialoginhallintaydin OntoDM luokäynnistyessään keskustelustrategioita evaluoivan ja
valitsevan DPlanner-olion. Se lukee muistiinsa käynnistyessään RDF-muotoiset sään-
tötiedostot, jotkaonmääriteltyjärjestelmänkonguraatiossa. Kullakinpuheenvuorolla
dialoginhallintakutsuuDPlanner-oliota,jokaehdottaaparhaitenkeskustelutilanteeseen
odotetaan johtavan keskustelun tavoitetilaan mahdollisimman suurella todennäköisyy-
dellä pitkindialogipolkua,jolle on arvioitu pienin odotettu kustannus (ks.kuva20).
Säännönvalintatehdääntutkimallavoimassaolevaakeskustelumuistintilaajamuodos-
tamallasiitämahdollisestisaavutettavissaoleviakeskustelumuistintilojadialogisääntö-
jen avulla. Koska kaikkia dialogisääntöjä ei voisoveltaa kaikissakeskustelun vaiheissa,
on sääntöihin ohjelmoitu preondition-lausekkeisiin predikaattilogiikan operaatioilla ne
keskustelumuistia koskevat rajoitteet, joiden puitteissakutakin dialogisääntöävoidaan
käyttää.Dialogisääntöihin onkuvattupostondition-lausekkeisiin niitäkeskustelumuis-
tin referenttien muutoksia, jotka säännöt voivat aiheuttaa. Dialogisääntöihin on myös
merkittykustannusarvo (penalty), jokapainottaa säännön valintaa.
DPlanner-olio luomahdollisten keskustelujenpuun,jonka solmutovat keskustelunvai-
heita kuvaavia DPlanPhase-olioita. Ne muodostetaan kopioimalla uusiin lehtisolmui-
hinedeltävän keskustelumuistintila jasoveltamalla näihinkeskustelumuistin malleihin
mahdollisten dialogisääntöjen postondition-lausekkeita.Näihin uusiin mallinnettuihin
keskustelutiloihin asetetaan pisteytykseksiedeltävän tilan pisteytys josta vähennetään
säännönsuorittamisesta aiheutuvakustannus.
Uusiasaavutettujakeskustelutilojamuodostetaanenintäänmäärättyynetäisyyteenasti
(prototyypissäneljän dialogipolunsolmun päähän)jaenintään määrättyyn kustannus-
rajaan(prototyypissä20)asti.Dialogisääntökuvaakeskustelunmahdollistatavoitetilaa,
mikälisäännönisgoal-arvoon1.Tällaiseentavoitetilaanpäästyäändialoginhallintaon
ainakinosittain toteuttanutkäyttäjänpyynnöntaityydyttänytkäyttäjäntiedonhalun.
Kun mahdollisten keskustelujen puu on muodostettu, poimitaan puusta pienimmän
kustannuksen tavoitetilan solmu. DPlanner-olio valitsee sen keskustelun haaran, jonka
kauttakyseiseenmallinnettuuntilaanonpäästy.Mikälidialogisäännönpredikaattilogii-
kan lausekkeissaon sidottu jokin referenttimuuttuja tiettyyn keskustelunkäsitteeseen,
sitä käytetään myösseuraavassa keskusteluntoiminnossa taivastauksessa.
IR Service
Case−based reasoning tool (CBT)
Model−based reasoning tool (MBT) Facts Reasoner (FR)
Dialogue Manager
Kuva 21:Dialoginhallinnan taustasovellukset
5 Evaluaatio
5.1 Esimerkkiajot
Tässä kohdassaesitellään 4M:ndemonstraatiokokoonpanon syksyllä2005 toteuttamaa
keskustelua. Keskustelun avulla tarkastellaan tässä työssä kehitetyn dialoginhallinnan
toimintaperiaatteiden etuja. Taustalla suoritettavien päättelykomponenttien (kuvassa
21) toimintoja ja tuloksia on simuloitu ja manipuloitu dialoginhallinnan rinnakkaisten
toimintastrategioiden havainnollistamiseksi.
Esimerkki 1
Tässäesimerkkikeskustelussahuoltohenkilöraportoijärjestelmälletilanteesta,jossakäyt-
täjä on ilmoittanut ongelmaksi sen, että kalenteriohjelma ei aukea. Dialoginhallinnan
ensimmäinenstrategiaonselvittäävoikojokinpäättelykomponenttiselvittääongelman.
Käyttäjän syöteon seuraava.
1 U: Vertti ei saa kalenteria auki.
Dialoginhallintamuodostaatässävaiheessakehyksen,jollasetiedusteleepäättely-yksiköltä
ohjeita.
Frame 1:
[Aess℄ --+--agent--> [Human℄
+neg |
'--goal---> [Calendar℄
Kehyksessä hakasulkuihin merkityt nimet ovat RDF-solmujen tyyppejä eli instanssien
luokkiennimiä.
Mikäli dialoginhallinta ei saamiltäänpäättelijältä vastaukseksikehystä, jokaosoittaisi
mahdollisiakorjaustoimenpiteitätaimahdollisiavianaiheuttajia,dialoginhallinnantoi-
nen strategia on rikastuttaa kyselyä yksilöimällä kehyksen henkilö ja kalenteriresurssi
ongelmanrajaamiseksi. Yksilöintitapahtuu instanssitietokannanavulla, niinettäkäyt-
täjä pyritään tunnistamaan käyttäjätunnuksen ja käytettävä kalenteritili sen tyypin
mukaisesti.
2 S: Mikä on Vertin käyttäjätunnus?
3 U: Vertin tunnus on "vhiiri".
4 S: Onko kalenteri oma vai ryhmäkalenteri?
5 U: Ryhmäkalenteri.
Dialoginhallinta on saanut yksikäsitteiset instanssikantaan sidotut käsitteet vhiiri ja
gal1 jotka kuvaavat Vertti Hiiri -nimisen henkilön käyttäjätunnusta ja hänen käyt-
tämänsä ryhmätyökalenterin tunnusta. Dialoginhallinta tekee toisen kyselyn päättely-
yksikölle, jokavälittääongelmakyselyneteenpäin.
Kyselyn RDF-kehyson seuraavanlainen:
Frame 2:
[Aess℄ --+--agent--> [Human℄
+neg | +m4:name=Vertti Hiiri
| +dm:instRef=inst:VerttiHiiri
|
'--goal---> [Calendar℄
+dm:instRef=inst:GCal1
Vastauksenamallipohjaiseltadiagnostiikkakomponentilta(MBT)palaakehys,johonon
lisättykäyttäjätunnukseen kohdistuva vikadiagnoosi.
[Aess℄ --+--instrument--> [Username℄
+neg | +dm:instRef=inst:Vhiiri1
|
|
'---goal---> [Calendar℄
+dm:instRef=inst:GCal1
Diagnossissa on negatiivinen pääsytapahtuma (Aess), johon liittyy instrumenttina
instanssitietokannan käyttäjätunnus-olio Vhiiri1 ja goal-ominaisuutena tietokannassa
määriteltyryhmäkalenteri GCal1.Tämävoidaantulkitaniin,ettäpäättelykomponentti
ilmaisee, ettei kyseistä käyttäjätunnusta hyödyntämällä voi päästä edellä mainittuun
ryhmäkalenteriresurssiin.
Dialoginhallinta tuottaa kehyksen sisältöä vastaavasta agendarakenteesta luonnollisen
kielen tuottokomponentin avulla perusteella seuraavan ilmoituksen.
6 S: Käyttäjätunnuksella vhiiri ei ole oikeuksia ryhmäkalenteriin.
Esimerkki 2
Tässä esimerkissä dialoginhallinnan apuna on päättely-yksikköön kytkettytapauspoh-
jainen päättelykomponentti (CBT).
1 U: Vertti ei pääse kalenteriin.
Dialoginhallinta muodostaa ja lähettää päättely-yksiköille ensimmäisen esimerkin kal-
taisen kyselyn, jossa kuvataan RDF-mallin avulla että jokin henkilö ei pääse kalente-
riohjelmaan.Tapauspohjainenpäättelykomponenttituottaatässäesimerkkiajossamah-
dollisenehdotuksenjohonliittyy näytölleilmestyvätiettyverkkokatkoakoskevavirheil-
moitus.
Frame 1 query:
[ErrorMessage℄ --of--> [NetworkBreak℄
+lambda
Kehyksessä palaavan vastauksen lambda-status tarkoittaa sitä, että taustajärjestelmä
pyytää käyttäjän taholta tarkentavaa kuvausta mahdollisesta virheilmoituksesta, sillä
tässätapauksessavirheilmoituksensisältövoivaikuttaavikadiagnoosiin.TämänCBT:n
vastauksenseurauksenadialoginhallinnan keskustelustrategiavaatiiselvittämäänensin,
onko minkäänlaista virheilmoitustatullut.
3 U: Ei.
4 S: Selvä.
Tämä CBT-päättelijän ehdotus hylätään, sillä kysymyksen esiehtona on, että keskus-
telussa täytyisi olla perustettuna tietty virheilmoitus. Mikäli tämä esiehto täyttyy ja
käyttäjäilmoittaa verkonhuoltokatkosta, jatkuu keskusteluseuraavallatavalla.
2 S: Tuliko minkäänlaista virheilmoitusta?
3 U: Tuli.
4 S: Onko kyseessä ilmoitus verkon huoltokatkosta?
5 U: Kyllä
6 S: Tapaukseen liittyy keikkatietokannasta löytynyt raportti.
Tässä tapauksessa tiedote verkon huollosta näytetään, koska tiedotteen näyttämiseen
liittyvät esiehdot täyttyvät. Toteutuksen tässä vaiheessa keikkatietokannan raportteja
eitoimiteta käyttäjän päätelaitteelle.
Esimerkki 3
Tässäesimerkissämallipohjainendiagnostiikka(MBT)tutkiilähiverkon jaohjelmiston
toimintaa jaIR-palvelu löytäähuolto-oppaansivulta ohjeenviankorjaamiseksi.
1 U: Vertti ei pääse kalenteriin.
Tässä esimerkissä mallipohjainen päättelijä esittää todennäköisimmäksi vioittuneeksi
osaksi lähiverkonseuraavalla palaavalla kehyksellä:
Frame 2 query:
[Aess℄ --+--instrument--> [Network℄
|
|
'---agent----> [Computer℄
+dm:of=inst:VerttiHiiri
Frame 3 query:
[Aess℄ --+--instrument--> [Network℄
|
|
'---agent----> [Computer℄
+dm:of=inst:MorttiHiiri
Nämä MBT:n kyselykehykset tallennetaan keskustelumuistiin jolloin dialoginhallinta
valitsee strategiaksikysyävastauksiayksitellen näihinkysymyksiin.
3 U: Kyllä.
4 S: Kartoitetaan verkon tilaa tarkemmin.
Toimiiko Mortin verkkoyhteys?
5 U: Kyllä.
Koska käyttäjä on vahvistanut kyselykehysten väittämät todeksi, vastaavat kehykset
lähetetään takaisinFR-rajapintaan. Kehyksenquery-tila onmuutettu response-tilaksi,
jokailmaisee käyttäjänmyöntäneen väittämät todeksi.
Frame 2 response:
[Aess℄ --+--instrument--> [Network℄
|
|
'---agent----> [Computer℄
+dm:of=inst:VerttiHiiri
Frame 3 response:
[Aess℄ --+--instrument--> [Network℄
|
|
'---agent----> [Computer℄
+dm:of=inst:MorttiHiiri
Tässävaiheessavastaukseksipalaatoinen mallipohjaisen diagnostiikan tuottamaehdo-
tusvialliseksi osaksi,jokaon työasemaanasennetun kalenteriohjelman vääräversio.
Frame 4 query:
[Version℄ --of--> [CalendarProgram℄
+lambda
Tämä esitetään seuraavalla kielellisellä muodolla käyttäjälle:
6 S: Mikä versio kalenterista on käytössä?
7 U: Express
Käyttäjän antama palautelähetetään MBT-päättelijänsyötteeksi.
Frame 4 response:
[Version℄ --of--> [CalendarProgram℄
+dm:instRef=inst:Express
MBT-päättelijä vastaa tähänkehyksellä,jossa on kuvattu tarvittava ohjelmistoversion
muutos ongelmatilanratkaisemiseksi.
Frame 5:
[Update℄ --patient--> [Outlook2002℄
loginhallinta välittää käyttäjälle tiedon, ettäasennettuohjelmisto täytyy vaihtaa.
8 S: Outlook Express on vaihdettava Outlook 2002:ksi.
Koska kontekstimuistiin on tallentunut ontologiaperustaiset viittaukset kalenteriohjel-
maan ja päivitysoperaatioon, löytää IR-palvelu erään ohjeen näiden ontologiakäsittei-
denavullaontologianavullaannotoidustamanuaalista.LöydettäväohjekoskeeOutlook
Express -ohjelmanpäivittämiseksiOutlook2002:ksi.Dialoginhallinta ilmoittaa käyttä-
jälle IR-tuloksesta seuraavasti.
S: Ohjeita löytyi 1 kappale.
U: Opasta.
S: Odota. Haen ohjetta.
Ohje 0, osa 1:
Doument URL: http://4m.s.hut.fi/
OL2002: Outlook Expressin päivittäminen Outlook 2002:ksi
U: jatka
S: Tässä artikkelissa kuvataan, miten tiliasetukset,
sähköpostiviestit, osoitteet ja säännöt tuodaan
Mirosoft Outlook Expressistä Outlook 2002:een.
Artikkelissa kuvataan myös, miten Outlook 2002
määritetään sähköpostin oletusasiakkaaksi.
Dialogijärjestelmän tilan kysely
Järjestelmäosaamyöstarvittaessakertoa, missätilassa seon.Mikälijonkintoiminnon
suorittaminen ei tuotatulosta vaan järjestelmä eipääse tilasta eteenpäin,voidaantoi-
minto keskeyttää ja ohittaa. Seuraavassa esimerkkitilanteessa dialoginhallintaydin on
tehnyt taustasovelluskutsun,mutta ei saavastaukseksi hakutuloksia kohtuullisen ajan
kuluessa,jolloin käyttäjä päättää keskeyttää tiedonhaun (rivi3).
1 U: Missä mennään?
2 S: Haetaan ohjetta.
3 U: Keskeytä.
4 S: Selvä, haku keskeytetty.
5 S: Voitko kuvailla tilannetta tarkemmin?
Keskustelu oli aluksi tiedonhakutilassa, mutta käyttäjän annettua keskeytyspyynnön
dialoginhallinta siirtyy käyttämääntoissijaistakeskustelustrategiaajaantaatästäkuit-
valmiiksidialoginhallinnan säännöstööntallennetulla kysymyksellä(rivi 5).