Documente Academic
Documente Profesional
Documente Cultură
artificială
Cursul nr. 8
Despre dialog
Dialogul sau conversaţia este un domeniu
privilegiat al LN.
Există în acest moment aplicaţii numeroase
pentru comunicarea cu utilizatorii în limbaj
natural.
Domeniul agenţilor conversaţionali
(conversational agents) ca şi participanţi la un
dialog în limbaj natural reprezintă în acest
moment un domeniu foarte ’’fierbinte” al IA.
O aplicaţie de acest tip poate să fie un simplu
sistem question- answering sau orice interacţiune
om-maşină utilizând limbajul natural.
Componentele unui agent
inteligent:
percepţie (perception): agentul trebuie să fie capabil să
perceapă lumea înconjurătoare;
cunoştinţe (beliefs): agentul trebuie să aibă o reprezentare a
stării curente a lumii înconjurătoare;
iniţiativă (desire/wants): agentul trebuie să aibă răspunsuri
pozitive sau negative la diferiţii stimuli ai lumii înconjurătoare;
decizie (commitment): agentul trebuie să aibă posibilitatea să
decidă acţiunea necesară pentru a ajunge într-o anumită stare;
continuitate (intention): agentul trebuie să poată să menţină
cursul unei acţiuni asupra căreia s-a decis;
raţionament (planning/reasoning): agentul trebuie să poată să
facă raţionamente asupra modului de a atinge o altă stare;
acţiune (acting): agentul trebuie să poată să acţioneze pentru
a schimba o stare.
În structurile wh-non-subject-question
constituentul introdus cu wh-word nu este
subiect, şi deci fraza include un alt
subiect, introdus cu Aux.
S Wh_NP Aux NP VP (ex.:What flight do
you have from Boston to Denver?)
Atât constituenţii NP cât şi cei VP pot să fie
legaţi prin diferite conjuncţii: and, or, but,
etc. De aceea mai introducem regulile
următoare:
NP NP and NP (ex.: the flights and the
costs)
VP VP and VP(ex: leaving Boston and
arriving San Francisco)
O posibilă realizare a unui
sistem de tip ATIS
Gramatica CFG construită mai sus serveşte analizei sintactice
prin care se decide dacă o interogare este sau nu corectă şi
are şanse de a fi înţeleasă de către aplicaţie. În caz afirmativ,
o interogare este analizată după cuvintele pe care le conţine.
De exemplu : List all flights from London to Edinburgh after 8.
conţine informaţii care se atribuie predicatelor: from(london),
to(edinburgh), after(8).
Valorile acestor predicate sunt deci definite analizând
întrebarea pusă de utilizator. Ele pot fi apoi utilizate pentru
consultarea unei baze de date care conţine predicatele flight şi
route:
flight(flight_no, frequency, route, flying_time)
route(from, to, dep_time, arr_time, flight_no,
transfer_city)
De exemplu, extrăgând din interogare
from(Departure_City).
To(Destination_City).
after(Dep_Time).
aceste informaţii pot să fie căutate în baza de
date reprezentată de predicatul route.
Pe lângă aceste informaţii trebuie stabilit şi tipul
interogării: imperative, wh-interogări. Şi acest
lucru se va realiza pe baza cuvintelor existente în
interogare.
Analiza interogării se face şi pe baza informaţiilor
furnizate cu ajutorul unor predicate: is_a, has_a.
Exemplu
Fie interogarea următoare:
List all flights from Boston to Chicago.
În primul rând se identifică propoziţia ca fiind
imperativă datorită verbului list.
Se verifică apoi că token-ul Boston este într-
adevăr un oraş existent in baza de date, analog
pentru token-ul Chicago.
Dacă nu există astfel de zboruri, un răspuns
’’cooperant” ar trebui să fie de genul: There are
no flights from Boston to Chicago.”
Baza de date conţinând zborurile companiei este
dată de o succesiune de fapte pentru predicatele
flight şi route. Acestea permit obţinerea
următoarelor informaţii:
despre zborul în sine( utilizatorul intreabă dacă există zbor
de la X la Y),
despre orele de zbor, despre zilele de zbor,
despre tipul zborului (un zbor poate fi direct, sau cu escala,
caz in care utilizatorul cere informaţii despre oraşul de
transfer),
despre durata zborului.
Deci ele vor fi definite astfel:
route(from, to, dep_time, arr_time, flight_no, transfer_city)
flight(f light_no, frequency, route, flying_time)
De asemenea, se pot prescurta denumirile oraşelor
prin predicatul code.
Exemplu
route(bos, ny, 14.25,16.00, BA425, []).
arată că este vorba de un zbor direct de la Boston la
New York, care are plecarea şi sosirea la orele 14,25
respectiv 16,00, are numărul BA425 şi nu face
escală.
route(ny, ams, 10.10,19.35,2M133, [16.50, lon,
17.25]).
indică un zbor cu escală la Londra, intre orele 16,50
şi 17,25 , de la New York la Amsterdam.
flight(MAQ71, [3,6], [bos, lon], 9.50).
se referă la zborul cu numărul MA071, care circulă
doar miercuri (3) şi sambată (6), pe ruta Boston-
London, durata zborului fiind 9 ore si 50 minute.
Aplicaţia va trebui să conţină, aşa cum am
precizat deja, predicate care permit extragerea
din interogare a unor date punctuale despre
zboruri, rute, ore/ timp, aşa cum sunt ele cerute
de utilizator:
from(Departure_City).
to(Destination_City).
after(Departure_Time).
before(Arrival _Time).
on(Day).
in(Month).
Type_answer (Answer_type).
Type_quest(Question_type).
Să presupunem că se doreşte lista zborurilor de
la Boston la Londra după orele 5. Interogarea
sună astfel:
List all flights from Boston to London after 5.
Informaţiile extrase din interogare, care trebuie
unificate cu argumentele corespunzătoare ale
predicatelor flight şi route sunt:
from(boston).
to(london).
after(5).
type_answer(from_after).
type_quest(which).
O posibilă definiţie a
predicatului type_answer
type_answer(dest_after) : —
from(_), to(_), after(_).
type_answer(dest_after) : —
from(_), to(_).
type_answer(all) : —