Textgenerering Hercules Dalianis NADA-KTH Email: hercules@nada.kth.se Tel: 08-790 91 05 http://www.nada.kth.se/~hercules Hercules Dalianis sid 1
Innehållsförteckning Människans produktion av text Datorns produktion av text Textgenereringsapplikationer Hercules Dalianis sid 2
Hur talar en människa? 1) Får en fråga av någon och svarar 2) Sätter igång och talar med ett visst syfte Hercules Dalianis sid 3
Tar hänsyn till mottagaren av budskapet Vad vet och kan mottagaren? Väljer ut vad som skall sägas, av allt som talaren vet Bestämmer i vilken ordning det skall sägas Väljer hur det skall sägas, språk, syntaktiska strukturer och lexikala objekt (ord) Hercules Dalianis sid 4
Hur talar en dator? 1) Får en fråga av någon och svarar 2) Sätter igång och talar med ett visst syfte Hercules Dalianis sid 5
Textgenerering Natural language generation (NLG) Naturligt språk generering Parsning-Textgenerering Canned text Burkad text Forskningsområdet började 1980- Hercules Dalianis sid 6
User model Style Pragmatics Control Deep generator Surface generator Knowledge Representation Text Planner Sentence Planner Surface Grammar Natural Language text Text Plan Library Aggregation Refererence Sentence- Delimitation Lexical Choice Theme Control Base- Lexicon Domain- Lexicon Kmowledge Representation Semantics Ontology Hercules Dalianis sid 7
Frågeanalys och användarmodellering Måste analysera frågan, Kan ta reda på vad användaren redan vet. Hercules Dalianis sid 8
Djupgenerering-Vad skall sägas? Innehållsval - Content selection Väljer ut från sin rikliga kunskapsbas vad som skall sägas. Textplanering (Diskursplanering) Gör en textplan som består av ett antal satsplaner. Textplanen måste vara koherent. Satsplanering Bestämmer form på satserna, aktiv, passiv, pronomen, aggregerering, satslängd Hercules Dalianis sid 9
Ytgenerering-Hur det skall sägas Väljer språk-grammatik Lexikala val (ord) Baslexikon Domänlexikon Post processing Hercules Dalianis sid 10
Djupgenerering Aggregering Koordinering Ellipsis Tar bort redundant information utan att ändra innehållet. ASTROGEN - Aggregated deep and Surface natural language GENerator http://www.dsv.su.se/~hercules/ ASTROGEN/ASTROGEN.html Hercules Dalianis sid 11
Hercules Dalianis sid 12
Vad används textgenerering till? Parafrasering av parsade frågor En parsning ger upphov till två eller fler tolkningar av en mening i tex ett frågegränsnitt Parafrasera dessa tolkningar till NL Oftast en menings genereringar (Man kan använda en bidirektionell grammatik både för parsning och generering tex DCG) Hercules Dalianis sid 13
Hercules Dalianis sid 14
Vad används textgenerering till? Generering av måltexten vid maskinöversättning Generering av väder- eller börsrapporter direkt från rådata På flera språk Generering av bruksanvisningar på flera språk på en gång (Scania) Hercules Dalianis sid 15
Validering av formella specifikationer genom att parafrasera dessa till NL Förklaringar till medicinska, juridiska, och tekniska komplexa system, i tex expertsystem. Tex MYCIN Hercules Dalianis sid 16
Parafrasering HSQL-(Help systen for structured query language) prototypen är implementerad mot en databas som innehållerinformation om olika sjukhus och deras verksamheter. Exempel på generering av SQL från naturligt språk samt parafrasering från SQL tillbaka till naturligt språk Fråga: vilken diagnos har Amster? SQL: SELECT DISTINCT T2.other_info, T1.name, T2.reg_no FROM PATIENT T1, DIAGNOSIS T2 WHERE (T1.name = `Amster K.`) AND (T2.reg_no=T1.reg_no) PARAFRAS AV SQL I NATURLIGT SPRÅK vilka diagnoser har en patient som heter Amster K. Hercules Dalianis sid 17
Fråga: vem behandlar Adler. SQL: SELECT DISTINCT T3.name, T1.name,T2.empl_no, T3.reg_no FROM DOCTOR T1, ATTDOCTOR T2, PATIENT T3 WHERE (T1.name = `Adler J.`) AND (T2.empl_no = T1.empl_no) AND (T3.reg_no=T2.reg_no) PARAFRAS AV SQL I NATURLIGT SPRÅK: Vilka patienter behandlar doktor Adler J. Fråga: vem behandlar Hansson. SQL: SELECT DISTINCT T1.name,T2.empl_no, T3.reg_no, T3.name FROM DOCTOR T1, ATTDOCTOR T2, PATIENT T3 WHERE (T2.empl_no = T1.empl_no) AND (T3.reg_no = T2.reg_no) AND (T3.name=T2.`Hansson A.`) PARAFRAS AV SQL I NATURLIGT SPRÅK: Vilka doktorer behandlar patienten Hansson A. Hercules Dalianis sid 18
Generering till ett eller flera språk Väderrapporter COGENTEX, Canada Börsrapporter Bilmanualer TechDoc, Honda Tyskland Stödsystem Scarrie - Scania (via Scaniasvenska och direkt) Hercules Dalianis sid 19
Generering från rådata Utdata från GOSSIP: Indata till GOSSIP: ee(martin,ttyp0,login,[],8:20:03,_,_,0). The system was used for 7 hours 32 minutes and 12 seconds. ee(martin,ttyp0,editor,[f1],8:30:00,9:10:32,0:40:32,240). The users of the system ran editors and compilers during this ee(martin,ttyp1,editor,[f2],8:42:21,9:13:14,0:30:53,183). time. Compilers were run six times (the cpu-time equal to 46% ee(martin,ttyp0,logout,[],9:21:05,_,1:01:02,0). of the total cpu-time). Editors were run twelwe times (the ee(martin,ttyp0,login,[],10:17:32,_,_,0). cpu-time equal to 53% of the total cpu-time). Two users, Martin ee(martin,ttyp0,editor,[f1],10:20:58,12:15:27,1:54:29,1200). and Jessie, logged on to the system. Jessie used the system for ee(martin,ttyp1,editor,[f2],11:00:39,11:32:48,0:32:09,185). 63 % of the time in use. ee(jessie,ttyd0,login,[],11:03:46,_,_,0). ee(jessie,ttyd0,editor,[f5],11:12:45,12:48:22,1:35:37,573). ee(jessie,ttyd1,compiler,[f4],11:23:32,11:31:01,0:07:29,300). ee(jessie,ttyd1,editor,[f3],11:32:25,11:45:56,0:13:31,70). ee(jessie,ttyd1,editor,[f4],11:47:34,11:59:09,0:11:35,65). ee(jessie,ttyd1,compiler,[f4],12:04:47,12:08:32,0:03:45,186). ee(jessie,ttyd1,editor,[f3],12:09:57,12:16:34,0:06:37,15). ee(jessie,ttyd1,editor,[f4],12:18:43,12:39:24,0:20:41,154). ee(martin,ttyp0,logout,[],12:20:21,_,2:02:49,0). ee(jessie,ttyd1,editor,[f7],12:56:01,13:15:02,0:19:01,143). ee(jessie,ttyd0,editor,[f6],12:59:56,13:20:43,0:20:47,187). Hercules Dalianis sid 20
Validering av formella specifikationer genom att parafrasera dessa till NL Ellemtel-Ericsson LOXY ett predikatlogiskt språk för att beskriva telefonitjänster Clare = LOXY+Konceptuell modell Validera LOXY och Clare genom att översätta dessa till NL Hercules Dalianis sid 21
CLARE-Ericsson network[1] subscriber[0..1000] #phonenumber Subscribers are part of a network. Mobile subscribers are subscribers. Subscribers can either be in the state idle or busy. The state busy can either be in the substates ringtone, ringsignal, busytone or dialtone. When one subscriber is calling an other subscriber then the first subscriber has ringtone and the other subscriber has ringsignal. calling idle busy [1] [1] XOR XOR ringtone ringsignal busytone dialtone isa mobile_subscriber Hercules Dalianis sid 22
ASTROGEN-Validerar INSTANTIATION example OF SPECIFICATION network ENTITIES John:subscriber phonenumber = 100;phonenumber = 101 IS STATES idle; Mary:subscriber phonenumber = 200 IS STATES idle; Tom:subscriber phonenumber = 300 IS STATES idle; END; Hercules Dalianis sid 23
paraphrase(f(pres,isa,john,subscriber) & (text plan) f(pres,state,john,idle) & f(pres,poss,john,f(pres,attr,phonenumber,100)) & f(pres,poss,john,f(pres,attr,phonenumber,101)) & f(pres,isa,mary,subscriber) & f(pres,state,mary,idle) & f(pres,poss,mary,f(pres,attr,phonenumber,200)) & f(pres,isa,tom,subscriber) & f(pres,state,tom,idle) & f(pres,poss,tom,f(pres,attr,phonenumber,300)) ). john, mary and tom are subscribers they are idle john has phonenumbers 100 and 101 mary has a phonenumber 200 tom has a phonenumber 300. yes Hercules Dalianis sid 24
STEP/EXPRESS VOLVEX STEP/EXPRESS standarden Tillverkningsindustrin, bil, båt,flyg, processindustrin, elkraft,olja, etc AP Application Protokoll AP 214, 500 begrepp ASTROGEN Hybridsystem både textgenerering och burkad text Hercules Dalianis sid 25
STEP-VOLVEX-ASTROGEN lexical building tool lexicon STEP AP EXPRESS to Prolog f-structures ASTROGEN Natural Language Validation Hercules Dalianis sid 26
ENTITY fillet SUBTYPE OF (transition_feature); END_ENTITY; 5.2.3.1.75 Fillet A Fillet is a concave circular arc transition between two intersecting Face (see 4.2.167) objects without any constraints concerning changes of the radius along the Fillet. ENTITY constant_radius_fillet SUBTYPE OF (fillet); radius : feature_parameter; first_offset : OPTIONAL feature_parameter; second_offset : OPTIONAL feature_parameter; END_ENTITY;?- question(fillet). A constant_radius_fillet is a subtype of a fillet. A fillet is an entity. It is a subtype of a transition_feature. (Pron.) A Fillet is a concave circular arc transition between two intersecting Face (see 4.2.167) objects without any constraints concerning changes of the radius along the Fillet. (Canned text) Hercules Dalianis sid 27
ENTITY project; (*UOF:S5*) id : undefined_object; name : string_select; description : OPTIONAL string_select; actual_start_date : OPTIONAL date_time; actual_end_date : OPTIONAL date_time; planned_start_date : OPTIONAL event_or_date_select; affected_product_class : SET[0:?] OF product_class; work_program : SET[0:?] OF activity; planned_end_date : OPTIONAL period_or_date_select; END_ENTITY; 4.2.359 Project A Project is a unique process with a time limit, with a defined goal, with a defined budget, and with defined resources. A Project is a type of organization representing a work programme that consists of a set of assigned actions. See ARM definition for Project in paragraph 4.2.356 for more information. Hercules Dalianis sid 28
ENTITY project_relationship; (*UOF:S5*) related : project; relating : project; relation_type : undefined_object; description : OPTIONAL string_select; END_ENTITY; 4.2.357 Project_relationship A Project_relationship is a relationship between two Project (see 4.2.356) objects (Example text) EXAMPLE 174 -- For the development of a new car, a project is set up that is responsible for the development decisions as well as for the accounting of the costs. yes Hercules Dalianis sid 29
?- question(project & project_relationship). a project is an entity and a project has an undefined_object id and a project has a string_select name and a project has a string_select description and a project has a date_time actual_start_date and a project has a date_time actual_end_date and a project has an event_or_date_select planned_start_date and a project has a product_class affected_product_class and a project has an activity work_program and a project has a period_or_date_select planned_end_date and a project_relationship is an entity and a project_relationship has a project related and a project_relationship has a project relating and a project_relationship has an undefined_object relation_type and a project_relationship has a string_select description. yes Hercules Dalianis sid 30
?- sort(1,2,3),canned_text, canned_example,clause_comma, pronoun, predicate_do.?- question(project & project_relationship). A project and a project_relationship are entities. (Agg.) They have a string_select description. (Pron.) A project has a date_time actual_end_date. It has a date_time actual_start_date. (Pron.) It has a product_class affected_product_class. " It has an undefined_object id. It has a string_select name. It has a period_or_date_select planned_end_date. " It has an event_or_date_select planned_start_date. " It has an activity work_program. A project_relationship has a project related. It has a project relating. (Pron.) It has an undefined_object relation_type. " A Project is a unique process with a time limit, with a defined goal, with a defined budget, and with defined resources. (Canned text) A Project_relationship is a relationship between two Project (see 4.2.356) objects (Example text) EXAMPLE 174 -- For the development of a new car, a project is set up that is responsible for the development decisions as well as for the accounting of the Hercules costs. Dalianis sid 31
sort(1,2,3),subject_pred,predicate_do,subject,predicate,sym_rel,,canned_text, canned_example.?- question(project & project_relationship). A project, a project_relationship are entities and A project, a project_relationship have a string_select description and A project has a date_time actual_end_date, a date_time actual_start_date, a product_class affected_product_class, an undefined_object id, a string_select name, a period_or_date_select planned_end_date, an event_or_date_select planned_start_date, an activity work_program and A project_relationship has a project related, a project relating and an undefined_object relation_type. A Project is a unique process with a time limit, with a defined goal, with a defined budget, and with defined resources. A Project_relationship is a relationship between two Project (see 4.2.356) objects. EXAMPLE 174 -- For the development of a new car, a project is set up that is responsible for the development decisions as well as for the accounting of the costs. yes Hercules Dalianis sid 32
?- sort(1,2,3),subject_pred,predicate_do,subject,predicate,sym_rel,canned_text, canned_example, clause_comma.?- question(project & project_relationship). A project and a project_relationship are entities. A project and a project_relationship have a string_select description. A project has a date_time actual_end_date, a date_time actual_start_date, a product_class affected_product_class, an undefined_object id, a string_select name, a period_or_date_select planned_end_date, an event_or_date_select planned_start_date and an activity work_program. A project_relationship has a project related, a project relating and an undefined_object relation_type. A Project is a unique process with a time limit, with a defined goal, with a defined budget, and with defined resources. A Project_relationship is a relationship between two Project (see 4.2.356) objects. EXAMPLE 174 -- For the development of a new car, a project is set up that is responsible for the development decisions as well as for the accounting of the costs. yes?- Hercules Dalianis sid 33
Textplan Textschema Diskursschema TEXT McKeown (1985a, b) McKeown studerade stora mängder text, som var skriven för tre olika syften: att definiera att jämföra att beskriva olika objekt. Hercules Dalianis sid 34
Analys av texterna gav fyra olika retoriska predikat, dvs basbegrepp för att uttrycka sig. Med fyra retoriska predikat definierade McKeown fyra retoriska schemata. Varje schema fungerar som en text plan Hercules Dalianis sid 35
Varje schema kan svara på en eller flera typer av metafrågor om innehållet i en databas: 1) Hur är ett objekt definierat? 2) Vad är skillnaden mellan två objekt? 3) Beskriv tillgänglig information! Hercules Dalianis sid 36
Frågan: What is a WHISKEY-SUBMARINE?, gör att schemat IDENTIFICATION väljs. A whiskey is an underwater submarine with a PROPULSION_TYPE of DIESEL and a FLAG of RDOR. A submarine is classified as a whiskey if its CLASS is WHISKEY. All whiskies in the ONR database have REMARKS of 0, FUEL_CAPACITY of 200, FUEL_TYPE of DIESEL, IRCS of 0, MAXIMUM_OPERATING_DEPTH of 700, NORMAL_OPERATING_DEPTH of 100 and MAXIMUM_SUBMERGED_SPEED of 15. Hercules Dalianis sid 37
Planering och resonerande KAMP, Knowledge And Modalities Planner, av Appelt (1985) Systemet resonerar om användarens tro och kunskap för att kunna planera yttranden i naturligt språk. Hercules Dalianis sid 38
Systemet använder sig av modallogik, som är en utökad första ordningens predikatlogik. I modallogik kan man även resonera med modaliteter som t ex att tro och att veta. KAMP representerar systemets och användarens tro och kunskap med ett axiomschema, en mängd alltid sanna satser. Hercules Dalianis sid 39
En teorembevisare får ta reda på om användaren har tillräcklig kunskap för att utföra en viss uppgift. En bieffekt av systemets användande av modallogik är att KAMP kan anpassa sig till om användaren verkar vara en novis eller expert. Systemet kan om det vet att användaren inte vet en viss sak informera honom om det på samma gång som huvudmålet uppnås. Hercules Dalianis sid 40
Resultatet kommuniceras med en enda sats. (Ingen diskurs ) KAMP har ingen riktig djup- och ytgenerering i textgenereringen Den första domänen KAMP utvecklades för, var ett expertsystem för underhåll och reparation där användaren var en novis. Hercules Dalianis sid 41
Ett exempel: Målet är: Att ta loss ett svänghjul Systemet vet att användaren inte vet vilket verktyg han skall använda. Vilket verktyg skall jag använda? Delmålet till målet blir då att informera användaren att verktyget är en skiftnyckel som ligger på bordet. För att uppnå dessa två mål skulle två satser behövas: Var god och ta loss svänghjulet med skiftnyckeln. Skiftnyckeln ligger på bordet. Hercules Dalianis sid 42
Men det går att slå ihop dessa två mål till ett: Var god och ta loss svänghjulet med skiftnyckeln som ligger på bordet Hercules Dalianis sid 43
Användarmodellering Anpassning till användaren. Systemet tar hänsyn till vem läsaren är Vilken nivå han/hon befinner sig på. Är det en expert eller är det en novis? Systemen har en modell av användaren, (user model). Hercules Dalianis sid 44
En metod att avslöja användarens nivå är att analysera användarens fråga, (Se Appelt) Studera föregående diskurs i en dialog. Om användaren ställer samma fråga två gånger så kan det betyda att han/hon inte förstod det föregående svaret. Hercules Dalianis sid 45
Tailor av Paris (1985, 1988) Studerade två olika typer av uppslagsverk skrivna dels för vuxna och dels för barn. Texterna för vuxna beskriver alla delarna i objekten Texterna för barn beskriver funktionen av objekten, alla stegen i resonemangen och förklaringarna Hercules Dalianis sid 46
Det innebär att vuxna får fakta presenterade för sig och att de sedan själva får dra sina slutsatser. Barn får beskrivningar på varje objekts funktion. Utifrån dessa upptäckter skapade Paris en strategi som går ut på att blanda de två sätten att beskriva objekt beroende på vad och hur mycket användaren vet. Hercules Dalianis sid 47
Systemet är dynamiskt så det kan blanda strategierna och generera beskrivningar för ett brett spektrum av användare. Hercules Dalianis sid 48