MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Generátor příběhů
DIPLOMOVÁ PRÁCE Bc. Martina Procházková
Brno, 2016
Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracovala samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používala nebo z nich čerpala, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Bc. Martina Procházková
Vedoucí práce: RNDr. Zuzana Nevěřilová, Ph.D.
Poděkování Ráda bych tímto poděkovala RNDr. Zuzaně Nevěřilové, Ph.D. za její cenné rady, konstruktivní kritiku, podporu a vedení při tvorbě této diplomové práce. Děkuji také své rodině a příteli za podporu a pochopení poskytnuté v průběhu tvorby práce. Dále bych chtěla ocenit snahu přátel a ostatních lidí, kteří v dotazníku hodnotili výsledky práce a umožnili mi tak ji dokončit. V neposlední řadě také oceňuji, že mi bylo nadřízenými a kolegy v zaměstnání umožněno nerušeně věnovat čas na tvorbu této práce.
Shrnutí Tato diplomová práce se zabývá problematikou automatického generování textu. Její součástí je kromě přehledu problematiky a souvisejících existujících nástrojů také analýza, návrh a popis implementace vlastního generátoru pohádek. Hlavním přínosem práce je vytvoření programu generujícího fiktivní texty osobně navrženým způsobem; fikce je přitom žánr, na který se obvykle odborné práce oblasti generování textu nezaměřují.
Klíčová slova automatické generování textu, korpusová data, slovní profil, analýza sentimentu, koherence, koheze, struktury příběhů, NLG, INLG, SIGGEN, ACL
1
Obsah
2
Úvod............................................................................................................ 4
3
Generování textu ....................................................................................... 5 3.1
Využití .................................................................................................. 5
3.2
Historie................................................................................................. 7
3.3
Základní přístupy ke generování..................................................... 8
3.4
Generování přirozeného jazyka (NLG) ........................................... 9
3.4.1
Plánování obsahu ........................................................................ 9
3.4.2
Plánování vět ............................................................................. 11
3.4.3
Povrchová realizace .................................................................. 12
3.4.4
Trénovatelné plánování vět ..................................................... 13
3.5
4
Využití databáze a nástrojů na zpracování dat............................ 14
3.5.1
The Sketch Engine ..................................................................... 14
3.5.2
WordNet ..................................................................................... 16
3.5.3
SentiWordNet ............................................................................ 16
3.6
Zajištění koheze a koherence .......................................................... 18
3.7
Existující nástroje na generování textu.......................................... 19
3.7.1
Fog ............................................................................................... 19
3.7.2
ModelExplainer ......................................................................... 19
3.7.3
Suregen-2 .................................................................................... 20
3.7.4
How was School Today? .......................................................... 20
3.7.5
BabyTalk ..................................................................................... 21
3.7.6
SCIgen ......................................................................................... 22
Základní struktury příběhů z pohledu spisovatele ........................... 23 4.1
Struktura příběhu ............................................................................. 23
1
5
4.2
Narativní úhel pohledu ................................................................... 26
4.3
Hlavní element příběhu................................................................... 26
4.3.1
Prostředí ..................................................................................... 26
4.3.2
Myšlenka .................................................................................... 26
4.3.3
Postava ........................................................................................ 27
4.3.4
Událost........................................................................................ 27
Generátor pohádek ................................................................................. 28 5.1
Úvod ................................................................................................... 28
5.2
Rozhraní generátoru ........................................................................ 29
5.3
Zpracování a získávání dat z databáze ......................................... 30
5.3.1
Sběr dat ....................................................................................... 30
5.3.2
Předzpracování ......................................................................... 30
5.3.3
Vytváření korpusu .................................................................... 30
5.3.4
Vybírání slov ze získaných dat ............................................... 31
5.4
Hodnocení pozitivity slov ............................................................... 32
5.5
Struktura generovaného příběhu ................................................... 32
5.5.1
Celková maximální struktura (ideální stav) ......................... 39
5.5.2
Celková minimální struktura (v případě nenalezení všech
slov v korpusu) ........................................................................................ 39 5.6
Lexikální zpracování ........................................................................ 39
5.6.1
Minulý čas prostý...................................................................... 40
5.6.2
Minulý čas průběhový ............................................................. 40
5.6.3
Tranzitivita sloves ..................................................................... 41
5.7
Možnosti rozšíření............................................................................ 41
5.7.1
Datové zdroje ............................................................................. 41
5.7.2
Použití shody ............................................................................. 41
5.7.3
Zdokonalení použití sloves ..................................................... 42
2
5.8
Hodnocení kvality výsledku........................................................... 42
5.8.1
Metody hodnocení výsledku ................................................... 42
5.8.2
Výsledky ..................................................................................... 42
6
Závěr ......................................................................................................... 47
7
Literatura .................................................................................................. 49
8
Přílohy ...................................................................................................... 52 8.1
Kompletní výsledky ......................................................................... 52
8.1.1
Příběh s úrovní náhodnosti 1 .................................................. 52
8.1.2
Příběh s úrovní náhodnosti 2 .................................................. 52
8.1.3
Příběh s úrovní náhodnosti 3 .................................................. 53
8.1.4
Příběh s úrovní náhodnosti 4 .................................................. 54
8.1.5
Příběh s úrovní náhodnosti 5 .................................................. 55
8.1.6
Příběh s úrovní náhodnosti 6 .................................................. 55
8.1.7
Příběh s úrovní náhodnosti 7 .................................................. 56
8.1.8
Příběh s úrovní náhodnosti 8 .................................................. 57
8.1.9
Příběh s úrovní náhodnosti 9 .................................................. 57
8.1.10
Příběh s úrovní náhodnosti 10 ................................................ 58
3
2
Úvod
Automatické generování textu je jednou z oblastí, které logicky provází vývoj umělé inteligence. Stejně jako jiné využití počítačových technologií či robotiky umožňuje zjednodušení lidské práce, a to především takové, která je pro člověka příliš monotónní a unavující. Může tak pomoci lidem s jejich již existující prací nebo vytvářet něco, co by jinak vůbec nevzniklo, protože by to vyžadovalo úsilí, které není nikdo ochoten vynaložit. Je-li řešený problém velmi specifický a jednotlivé formulace se ve výsledném textu můžou opakovat, lze použít šablonu, která vychází z potřeb dané oblasti a využívá formulace z dříve používaných textů. Takový proces vyžaduje analýzu velkého množství dat a porozumění cílové oblasti. V případě autonomního generování flexibilního textu v přirozeném jazyce jde o ještě složitější úkol - takový proces vyžaduje široké spektrum znalostí: gramatické, lexikální a konceptuální. Vytváření textu musí stát na kvalitní specifikaci dobře definující předávané informace, účel a formu výsledného textu; to vše s přihlédnutím k potřebám cíleného čtenáře. Všechny tyto informace musí být program schopen vhodně zpracovat a spojit do výsledku, který bude pokud možno nerozeznatelný od textu psaného člověkem. Text musí obsahovat všechny potřebné informace a musí je předkládat čtenáři ve srozumitelné, smysluplné a koherentní formě – tedy jednotlivé věty i části textu na sebe musí odpovídajícím způsobem navazovat. Stejně jako každý jiný program, který se pokouší imitovat lidské myšlení, naráží i tento na problémy, které nelze definovat jednoduchými technickými postupy. Generátor proto zpravidla vyžaduje velký objem dat postavených na textech dříve tvořených lidmi a kód rozhodující na základě mnoha různých pravidel a výjimek. Ten navíc musí být také robustní vůči chybějícím znalostem, nepřesným a neúplným vstupům. Musí umět zpracovat i odlišné významy slov v různorodém kontextu. Vytváření textu tak vyžaduje různorodé postupy z oblasti jazykovědy, programování, zpracovávání velkého množství dat i znalosti z oblasti, ve které bude výsledný text využíván.
4
3
Generování textu
3.1 Využití Počítačový program může sloužit jako účinná pomoc při psaní často vytvářených textů, k čemuž se také používá nejčastěji. Program na generování přirozeného jazyka v takovém případě vytvoří jakousi šablonu, do které vkládá uživatel pouze různé kusé informace, analytické a vysvětlující sekce. Produkování opakujících se textů je často práce lidí, kteří tuto činnost nemají jako svoji hlavní náplň, jako například lékaři, kteří by mohli namísto psaní věnovat více času pacientům a potřebnému vzdělávání. Možnost nemuset psát zprávy o zdravotním stavu pacientů, nebo alespoň nemuset je psát slovo od slova by znatelně zlepšilo jak jejich produktivitu, tak i morálku. Výsledný text by také mohl být lépe čitelný a srozumitelný. Úlohou programu je tedy ušetřit člověku práci při psaní monotónních a nudných částí textu a umožnit mu tak věnovat se pouze komplexním problémům. Při použití šablony může lékař jen doplňovat složitější informace do předpřipraveného textu. Počítač a člověk zde pracují v symbióze, každý vytvářející to, co mu jde lépe. Přesto by možnost plně autonomního generování mohla pracovat i lépe a ušetřit tak s dalším vývojem v oblasti generování textu člověku ještě více práce. [1] Některé texty jsou takového charakteru, že jejich obsah se příliš nemění a neobsahuje ani příliš komplexní prvky – takovým příkladem jsou zprávy o výsledcích sportovních zápasů. Tyto zápasy mají stovky podobných záznamů obsahujících nejen texty psané novináři, ale také statistiky obsahující další informace. Vytvoření automatického textu pak vyžaduje analýzu velkého množství dat a konzultaci s odborníky ve snaze zjistit, jaké informace mají být pro jaký text vybírány. Celý proces musí být proveden pro každou sportovní oblast zvlášť nebo musí být použit sofistikovaný algoritmus hledající souvislosti mezi vypisovanými informacemi. [2] Potřeba komplexnějšího a samostatnějšího textu pak stojí především na využití pro výukové a zábavné účely. Zapojení čtenáře do tvorby příběhu alespoň na úrovni výběru postav ho může efektivně zaujmout a
5
v některých situacích může vygenerovaný text také lépe odpovídat jeho potřebám. Učitelé mohou tvořit texty, díky kterým dětem předloží probíranou látku zajímavějším způsobem. V rámci zábavy pak najde generovaný text místo v hrách na hrdiny (RPG), které jsou postavené na tom, že hráč sám svými činy ovlivňuje svoji herní postavu a události ve hře. Přestože hry tohoto typu stojí právě na tomto konceptu, používá většina z nich jen omezenou skupinu možných dějových scénářů; možnost složitějšího generování těchto scénářů a přidružených příběhových textů by tedy mohlo hře prospět a ještě posílit základní princip vlivu hráče na děj. [1] Využití v kreativním psaní je diskutabilní, protože taková tvorba je založená na vysoké míře uměleckého cítění a inteligence a monotónnost automaticky generovanému textu vlastní je u něj nežádoucí. Úrovně kreativity srovnatelné s lidskou umělá inteligence zatím zdaleka nedosahuje. Použití v této oblasti by proto mohlo fungovat pouze pro vytváření návrhů či základní kostry, kterou by autor využil jako inspiraci nebo základ, který by dále upravil a doplnil o složitější konstrukce, prvky překvapení, morálky a další komplexní prvky. S dalším vývojem v oblasti robotiky a umělé inteligence bude také růst poptávka po technologiích umožňujících strojům vyjadřování podobné lidskému. Takový proces bude také vytvářet z abstraktního významu konkrétní reprezentaci, výsledek bude ale muset být mnohem více flexibilní než doposud používané nástroje pro generování textu. Postavit ho na šabloně nebude možné a využití dříve použitých textů v podobném kontextu bude podstatně obtížnější, protože to bude vyžadovat velmi široký záběr znalostí a schopností a obrovské množství dat, která v mnoha případech ani neexistují nebo je velmi obtížné je zpracovat.
6
3.2 Historie Generování přirozeného jazyka je relativně mladou oblastí, která začala vytvářením systémů pro překlad v padesátých letech dvacátého století. Tyto systémy nevyžadovaly příliš mnoho abstrakce a zabývaly se především překladem jednotlivých slov a slovních spojení mezi dvěma jazyky. V sedmdesátých a osmdesátých letech byly napsány první akademické práce na téma generování přirozeného jazyka odhalující hlavní problémy tohoto úkolu a vyslovující skutečnost, že generování přirozeného jazyka je více než jen povrchová realizace jednotlivých vět. Toto období položilo základy oboru a odstartovalo zájem odborníků mimo jiné mezinárodním workshopem, který se konal v roce 1983. Výzkum v oblasti generování se začal soustředit na rozdělení a rozvíjení jednotlivých kroků při generování spíše, než aby podporoval generování textu jedním velkým systémem. V letech devadesátých pokračoval vývoj mnoha dalšími pracemi, workshopy, za podpory rozvoje v ostatních oblastech informatiky a celá oblast se stala rozmanitější. Někteří z autorů se začali soustředit na vícejazyčné generování a vytváření obrázků a diagramů jako doplňků k textům. [1] V současné době probíhají pravidelně každý sudý rok konference INLG (International Natural Language Generation Conference), v roce 2016 ve Skotsku. Konference vytvářejí prostor pro diskuzi, šíření a archivování výsledků v dané oblasti. Na jejich organizaci se podílí skupina SIGGEN (Special Interest Group on Generation) patřící do asociace ACL (Association for Computational Linguistics).
7
3.3 Základní přístupy ke generování Pro vytvoření textu programem existují dva základní způsoby. Prvním je generování založené na definované šabloně, které se používá nejčastěji. Tento způsob generování vyžaduje nejméně znalostí z oblasti jazykovědy a umožňuje vytváření vysoce kvalitních textů za cenu toho, že pro každý problém musí být vytvořena nová šablona a generovaný text tak není příliš flexibilní. Je proto nutné vytvořit a udržovat více takových šablon, které musí vhodně sedět do kontextu. Opakovaně také musí být vytvářena různá lingvistická omezení. Aplikace tohoto přístupu je tedy nejefektivnější, nejrychlejší a nejpřesnější, ale také nejméně flexibilní a výsledky takového přístupu jsou nejvíce monotónní, což může a nemusí být žádoucí v závislosti na přesném účelu generovaného textu. Druhým způsobem je generování přirozeného jazyka (NLG), kde je postupným procesem vytvářena z informací tvořících zadání sémantická (významová) struktura, která je dále specifikována a nakonec převedena do jednotlivých vět a vyhodnocena. Jako nadstavbu může systém NLG používat schopnost trénování programu, kde díky hodnocení uživatelů postupně zlepšuje svoje mechanismy. Metodě NLG a využití metody trénování se věnuje následující kapitola.
8
3.4 Generování přirozeného jazyka (NLG) Dalo by se říci, že proces generování textu přirozeného jazyka je procesem opačným vzhledem k procesu porozumění přirozenému jazyku. Čteme-li nějaký text, pokoušíme se porozumět, za jakým účelem autor tento text vytvořil, tedy co je obsahem zamýšleného sdělení. To děláme pomocí myšlení, které funguje na principu abstrakce neboli hledání abstraktních pojmů a vytváření propojení mezi nimi. Jednotlivá slova jsou v myšlenkách reprezentována jako obecné pojmy a jejich tvar jen dokresluje okolnosti nebo vlastnosti pojmu. Tyto pojmy nejsou přitom nijak seřazeny. Při generování je tomu naopak - program se pokouší dosáhnout určitého komunikačního cíle neboli předání nějakého sdělení pomocí zformulování slov. K tomu používá abstraktní struktury, které postupně zpřesňuje, uspořádává a nakonec formuluje do vět. Oba procesy mají ovšem ve středu zájmu stejný cíl a tím je efektivní předání informace. [1] Generování přirozeného jazyka se tedy zpravidla skládá ze tří kroků, kterými jsou plánování obsahu, plánování vět a povrchová realizace. Použití tohoto přístupu způsobí generování velmi flexibilních textů do jisté míry použitelných skrz různá témata. Jeho výsledky jsou ale právě v důsledku nižší úrovně specializace horší než při použití generování za pomocí šablon. Tomuto problému se dá zabránit vytvořením pravidel specifických pro danou oblast, používaných ovšem za cenu snížené flexibility či použitelnosti programu v jiných případech. Použití způsobu NLG bývá také náročné na výpočetní výkon - probíhá tak mnohem pomaleji a nehodí se tedy pro použití v prostředí, které vyžaduje rychlou odezvu. [3] 3.4.1
Plánování obsahu
Na počátku je vždy třeba vytvořit strukturu cílového textu na úrovni vybrání obsahu a jeho sestavení do logických souvislostí. Vše je sestaveno prozatím bez ohledu na konkrétní tvar uvnitř vět a gramatické detaily. V jistém smyslu jde o nejdůležitější součást, protože určuje informace předané do výsledného textu. Pro výběr informací je nutné zhodnotit oblast, ze které program čerpá, a uživatele a jeho potřeby, tedy účel za-
9
mýšleného textu. Jde proto o proces velmi specificky zaměřený na způsob použití vygenerovaného výsledku. Vstupem pro krok plánování obsahu jsou obecně čtyři věci: 1. Zdroj znalostí je použit ve formě databází a představuje nejdůležitější složku, ze které čerpá program pro generování. 2. Komunikační cíl, kterého má generování dosáhnout, specifikuje účel generovaného textu a jeho splnění je do jisté míry měřitelné. 3. Uživatelský model specifikuje skupinu osob, které je text určen. 4. Historie obsahuje soubor dříve úspěšně vytvořených textů na podobné téma, kde je žádoucí, aby se jim výsledný text podobal. Výstupem tohoto kroku je pak plán dokumentu. Jeho struktura je velmi specifická s ohledem na konkrétní použitou technologii, většinou má ovšem formu stromové struktury s nějakým způsobem reprezentace vztahů mezi podřízenými částmi stromu. Různé způsoby se liší mírou abstrakce i vnitřním uspořádáním stromů. V některých případech nesou části vyjadřované informace pouze listy stromu a uzly vyjadřují vlastnosti, v jiných nesou tyto informace uzly i listy. Jednotlivé větve stromu pak reprezentují jednotlivé zprávy, které mají být sděleny, s nejvyšší úrovní abstrakce, tedy bez ohledu na konkrétní formulace. Tato struktura je nezávislá na cílovém jazyce. Součástí plánování obsahu může být také vytvoření doménového modelu neboli ontologie domény. Přestože jejich názvy nebo přesná definice se můžou lišit, základními součástmi modelu jsou entity, atributy, vztahy a třídy. Entity obsahují fyzické objekty, jako jsou například lidi a stroje, ale také abstraktní objekty, jako je roční období. Atributy určují vlastnosti entit, jako je jejich barva či velikost, ale také abstraktnější vazby, jako je například zpoždění vlaku nebo intenzita srážek. Vztahy určují propojení mezi entitami a opět obsahují fyzické vlastnosti - například stejná lokace, ve které se dvě entity nacházejí, ale také abstraktní vztahy, jako je vztah vlastnický. Třídy slouží k třídění entit do skupin, kde jedna entita může náležet do více tříd. Třídy jsou obvykle uspořádány hierarchicky, v některých případech můžou být do tříd rozděleny i vztahy.
10
Atributy a jejich vztahy jsou využity ve zmiňovaném plánu dokumentu, který je zpracováván v dalším kroku. [1] 3.4.2
Plánování vět
Plánování vět (v originále Microplanning) poté vytváří abstraktní strom propojující jednotlivé lexikální části a syntaktické struktury. Předávané zprávy, definované v plánu dokumentu z předchozího kroku, jsou převedeny do sekvence specifikovaných vět nebo frází. Převod je již plně závislý na cílovém jazyce. Jednotlivé zprávy mohou být popsány vlastními větami nebo jich může být spojeno více do jedné věty či v souvětí. Tento proces se nazývá agregace a jeho účelem je zhodnotit možné formy realizace a vybrat nejvhodnější možnost s ohledem na to, jak spolu jednotlivé zprávy souvisí. Rozhodování probíhá na základě konvencí a pravidel daného žánru, a dále také s ohledem na strukturu plánu dokumentu – například jsou agregovány pouze věty, které mají ve stromu stejného nejbližšího rodiče. Proces výběru konkrétních slov, která budou použita pro sdělení zprávy, se nazývá lexikalizace. Rozhodování může probíhat na základě šablony, pomocí výběrových stromů nebo metodami přepisování grafů. Při výběru je třeba brát ohled na znalosti a preference cílového uživatele, fungování slova s ohledem na ostatní vybraná slova a předchozí použití v podobných větách. Mezi tím, zda má být vytvořen text co nejvíce podobný obvyklému nebo mírně odlišný pro zabránění monotónnosti textů, je třeba hledat rozumnou míru. Stejně tak musí být vyvážena úroveň srozumitelnosti textu a přesnost významu sdělované zprávy. Dalším jevem, který se běžně vyskytuje v lidské řeči a vyžaduje ve zpracovávajícím programu svoji část, je používání zájmen nebo jiných forem odkazu na objekt, o kterém text pojednává. V případě, že pojednává věta o entitě, která byla zmíněna v předchozí větě, a nelze ji zaměnit s jinou entitou, je na místě použít zájmeno (např. Harry Potter - on). Je-li možné entitu s něčím zaměnit, je lepší použít alespoň zkrácenou formu jejího označení (Harry), případně jinou formu vyjádření (čaroděj). Více o zajištění koherence a koheze je popsáno v kapitole 3.6.
11
Výstupem kroku plánování vět je tedy strom slov v základním tvaru s reprezentací souvislostí mezi těmito slovy. Text je, s výjimkou gramatických úprav a formátování, hotov. [1] 3.4.3
Povrchová realizace
Na rozdíl od předchozích dvou kroků je tento téměř vždy realizován nezávisle, aby byl zbytek programu co nejvíce oddělen od gramatických detailů používaného jazyka. Jako vstup používá strom syntaktických struktur, které lze převést na sekvenci slov v základním tvaru. Výstupem je pak soubor hotových a gramaticky správných vět. Hlavním úkolem tohoto kroku je lingvistická realizace, která zajišťuje vkládání funkčních slov, zajištění odpovídajícího skloňování, jejich uspořádání a dodržení správného pravopisu. Mezi základní techniky řešení patří oboustranná specifikace gramatiky, specifikace gramatiky uzpůsobená pro generování a mechanismy založené na šabloně. Oboustranná specifikace je definována jako sada logických propojení mezi sémantickými (významovými) a syntaktickými (větnými) strukturami. Daný způsob je teoreticky velmi elegantní a často se užívá v programech pro strojový překlad, na generování přirozené řeči se ale příliš nehodí, protože vstup povrchové realizace je již částečně zpracován a není ve formě, která by obsahovala pouze sémantický význam textu. Gramatika uzpůsobená pro generování konkrétního typu textu obsahuje zpravidla řadu pravidel vytvořených pro nějaké konkrétní řešení a je tak nepřenositelná - použitelná jen v daném případě. Na základě vstupů (dotazů) rozhoduje o nejlepších řešeních pro realizaci. V mnoha případech není třeba vytvářet sofistikovaný způsob realizace, který by pokrýval všechna syntaktická pravidla celého jazyka, ale generování si vystačí s použitím šablony či použitím několika jednoduchých pravidel. Taková pravidla jsou opět závislá na konkrétní realizaci a jsou tak obtížně přenositelná, případně pro řešení v jiných případech neúplná. Svému účelu ovšem slouží efektivně.
12
Dalším úkolem je pak zajištění realizace struktury, což je určení členění strany a odstavců a dalších grafických detailů dle cílového prostředí, kterým může být například HTML nebo LaTeX. Generování se může lišit i s ohledem na to, zda jde o dokument určený ke čtení uživatelem nebo bude strojově předčítán, zda bude tištěn nebo používán online a obsahovat odkazy. Výsledek může být uživateli předložen jako obyčejný text, strukturovaný, v tabulce, ve formě diagramu nebo pomocí specifického rozhraní nějakého programu. [1] 3.4.4
Trénovatelné plánování vět
Namísto snahy o generování nejlepšího možného výsledku lze vytvořit několik kandidátních a z nich poté vybírat nějakou specifickou metodou. Takový postup umožňuje zlepšování výsledku i výběrové metody společně s nárůstem generovaných textů. Generátor příběhů autorů McIntyre a Mirella Lapata[2] používá trénovatelný systém. Ve své práci vytváří především dětské říkanky. V jednom kroku reprezentuje plánování obsahu i vět. Čerpá z databáze obsahující jednotlivé entity a jejich interakce – z databáze sesbírá všechny vztahy typu sloveso-subjekt, sloveso-objekt, sloveso-příslovce, podstatnépřídavné jméno a pro tyto poté vypočítá hodnotu dle vzorce, který zohledňuje pravděpodobnost jejich výskytu. V podstatě vypočítává jejich četnost ve vstupních textech, které používá jako bázi pro generování. Z entit a jejich vztahů sestaví graf, který má jednotlivé výpočty pro vztahy jako ohodnocení hran. Hledání nejlepších výsledků je pak průchod tohoto grafu nejvýše hodnocenými cestami. Pomocí tohoto grafu program vygeneruje velké množství krátkých textů, které jsou dále ohodnoceny vzhledem k jejich zajímavosti a soudržnosti textu. Pro každý příběh ukládá různé lexikální proměnné jako například počet sloves, písmen, souhlásek, kategorií slov a další komplexní ukazatele. Mezi těmito hodnotami a hodnoceními čtenářů potom vytváří souvislost tak, že přiděluje váhu různým hodnotám charakterizujícím výsledný text. Tímto způsobem je program schopný z více potenciálních
13
textů vybrat takový, který bude mít vyšší hodnocení a tedy vyšší šanci na to, že se bude jevit čtenáři jako zajímavý a smysluplný. [2]
3.5 Využití databáze a nástrojů na zpracování dat Základem generování komplexnějších textů je vždy databáze vytvořená na základě textů, které byly psány lidmi. Tyto databáze obsahují jednotlivá slova a jejich spojitosti vzhledem ke kontextu, tedy jak často se vyskytují společně s jinými konkrétními slovy a v jakém vztahu; případně obsahují také další informace, které tato slova klasifikují. Všechny tyto informace se označují jako korpusová data. 3.5.1
The Sketch Engine
Jedním z často používaných nástrojů pro práci s daty užívaných v rámci lexikografie je Sketch Engine. Používaný je přes deset let a za tu dobu si prošel značným vývojem. Nabízí rozhraní a nástroje umožňující snadné vytváření korpusů a jejich používání velkému množství uživatelů v mnoha různých jazycích. Neomezuje se pouze na odborníky v oblasti generování přirozeného jazyka. Jeho hlavními uživateli jsou lexikografové, kteří jsou pomocí velkého korpusu schopni dokázat existenci málo používaných slov a frází. Proto jej také používají vydavatelé slovníků jako je například Cambridge University Press, Harper Colling, Macmillan a Oxford University Press, mimo angličtiny také pro některé evropské jazyky, arabštinu a čínštinu. Dalšími důležitými uživateli jsou univerzity a to v rámci lingvistických ústavů pro účely výzkumu a výuky. Mimo jiné pak nástroj slouží také učitelům jazyků, překladatelům a dalším. Nejen učitelům slouží jako vhodný způsob pro hledání příkladů, které jsou velmi užitečné a efektivní pro osoby, které se pokouší porozumět danému jazyku a jeho gramatickým specifikám. Jeho hlavní funkcí, ze které také pochází jeho jméno, je slovní profil (v originále word sketch). Tato funkce umí pro dané slovo vytvořit jednostránkový souhrn jeho gramatického a kolokačního chování. Zobrazí tedy seznam slov, se kterými se hledané slovo vyskytuje v daném vztahu. Na obrázku 1.1 můžete vidět část slovního profilu slova „princess“.
14
Obrázek 1.1: slovní profil slova „princess“ ve Sketch Engine.
Chce-li se uživatel dozvědět více o daném slově v kontextu, ve kterém je používáno, může pomocí funkce concordance vyhledávat, kde se dvě slova vyskytují ve větě blízko sebe a co je mezi nimi. Při vyhledávání u vstupních slov nezávisí na velikosti písmen a vyhledávají se různé tvary slovesa (například infinitiv, minulý a průběhový tvar). Dále je také možné vyhledat i určité fráze. Pro potřeby jazyků, které mezi některými slovy nedělají mezery (například čínština a japonština), umožňuje i vyhledávání znaků. Nastavení kontextu pak také specifikuje, v jaké lexikální roli se slova budou vyskytovat. Pomocí nástroje Thesaurus je možné najít k danému termínu slova, která se s ním vyskytují v podobných kontextech; ta poté mohou být zobrazena pomocí tabulky nebo nově pomocí slovních mraků (v originále word cloud nebo tag cloud). [4]
15
3.5.2
WordNet
WordNet je lexikální databáze, která seskupuje slova do synonymických řad zvaných synsety, poskytuje definice jejich významu a zachycuje sémantické vztahy, které mezi synsety existují. Tyto charakteristiky popisuje pro podstatná jména, slovesa, přídavná jména a příslovce. Mezi podstatnými jmény popisuje nejen synonyma (slova podobného významu), ale také antonyma (opačného významu), hyponyma (významově podřízené a nadřízené slovo), meronyma (slova, kde jedno tvoří významem logickou část druhého) a další. V rámci sloves popisuje troponyma (sloveso znamená dělat něco nějakým způsobem – například: mluvit a šeptat), slovesa, kde jedno z druhého vyplývá (například: spát a chrápat), jedno je druhému nadřazené a další. Databáze Princeton WordNet obsahuje více než 118 000 synsetů, 90 000 různých významů a více než 166 000 logicky souvisejících dvojicí. Každému slovu je přiřazen jeden nebo více významů, kde pokud se některý význam dvou slov shoduje, tvoří spolu tato slova synonyma. Přibližně 17% slov má více významů, přibližně 40% má nějaké synonymum. Slova jsou rozdělena podle svých syntaktických kategorií, s tím, že některé mohou patřit do více kategorií. Společně tvoří všechna slova síť souvislostí. Program umožňuje použití pomocí rozhraní, kde uživatel zadá slovo a jeho syntaktickou kategorii a získá seznam všech vztahů, které má dané slovo společné s ostatními. Vytvoření databáze každého jednotlivého jazyka vyžaduje sestavení nové sítě souvislostí, protože jednotlivá slova v překladu obvykle nemají stejné všechny svoje významy a tedy i vztahy v síti se liší. [5] 3.5.3
SentiWordNet
Analýza sentimentu (v originále sentiment mining nebo opinion mining) přidává slovům v databázích další charakteristiku, která se obvykle v databázích nevyskytuje, a to vyjádření názoru nebo emoce, která se k němu skrz autora článku pojí. Využití takové informace je například v rozpoznávání významu recenzí, komentářů, které píšou uživatelé
16
k produktům prodávaným na internetu, politických názorech voličů a podobně. SentiWordNet takto rozšiřuje dříve zmíněnou databázi Princeton WordNet. V rámci nástroje SentiWordNet jsou pro každé slovo používány termíny SO polarita a PN polarita. SO polarita určuje, nakolik nějaký úsek textu popisuje spíše fakta a nakolik vyjadřuje názor autora; jde tedy o míru objektivity. PN polarita určuje, zda je jeho hodnocení spíše negativní nebo pozitivní a do jaké míry. Jednotlivá hodnocení jsou vytvářena pomocí tří klasifikátorů, kde každý z nich pracuje metodou, která byla trénovaná na jiných vstupních datech. Výsledky těchto klasifikátorů jsou pak normalizovány a spojeny do jednoho. Výsledné skóre termínu pak zohledňuje i to, jak moc se tyto tři odhady od sebe odlišovaly. Klasifikátory začínají s tréninkovými daty, kde pouze malá část termínů byla manuálně ohodnocena. Ostatní jsou pak ohodnoceny na základě svých propojení k již hodnoceným termínům. Pro tento účel používají klasifikátory několik různých typů propojení. Například jsou-li termíny podobné nebo se k sobě v textu přímo vztahují, je jejich PN polarita stejná, pokud jde o antonyma, je jejich PN polarita opačná. Výsledná databáze je tedy souborem slov, která obsahují označení svého lexikálního klasifikátoru, hodnocení svojí pozitivity, negativity a objektivity a dále je blíže popsán konkrétní význam, ve kterém se dané slovo nebo skupina slov užívá právě s tímto hodnocením. [6]
17
3.6 Zajištění koheze a koherence Text není jen náhodná sada výroků poskládaných za sebe, jednotlivé věty musí vykazovat nějakou formu propojenosti. Lexikální a gramatická koheze textu charakterizuje právě taková propojení, která jsou vyjádřena pomocí jednotlivých slov. Tato propojení mohou být popsána jako [7]: 1. Odkaz – ve větě je blíže popsána entita vyskytující se v předchozí větě. (Např.: „Jan chodí do parku. Chodí tam často.“) 2. Substituce
–
element
je
použit
znova,
pojmenování
z předchozí věty není zopakováno, ale je nahrazeno jiným, více obecným slovem jako je třeba zájmeno. (Např.: „Jana má ráda knihy. Ona hodně čte.“) 3. Elipsa – některý větný člen je vynechán. (Např.: „Všichni měli zmrzlinu. Eva vanilkovou a Adam také.“) 4. Souvislost – spojitost mezi větami je definována spojkou. (Např.: „protože, aby, ale…“) 5. Lexikální koheze – využívá slov, která jsou logicky propojena jako například synonyma. (Např.: „Jaké obrazy se ti líbí? Mám rád klasické malby.“) Právě nahrazováním slov například za zájmena či synonyma může být dosaženo lexikální a gramatické koheze. Provádění takových náhrad pochopitelně vyžaduje takovou databázi slov, která obsahuje odpovídající logické a gramatické vazby. Zároveň musí program, který text generuje, obsahovat metody pro rozhodování, kdy použít jakou formu propojení. V některých případech je spojitost mezi větami složitější nebo abstraktnější a nelze proto definovat pomocí jednoduchých spojitostí mezi slovy. V takové případě se mluví o koherenci, která může být dvou typů: 1. Referenční koherence – část textu je přímo závislá na jiné části textu – obsahuje na ni odkaz, dříve zmíněný pojem rozvíjí nebo specifikuje.
18
2. Relační koherence – části textu jsou propojeny pomocí vztahů typu příčina a důsledek. Na rozdíl od koheze vyžaduje koherence sofistikovanější řešení, protože logické souvislosti nelze vyčíst z výchozích dat bez pochopení mnoha velmi abstraktních vazeb. Části spolu nesouvisejí v rámci slov, ale na úrovni výrazů nebo celých vět. Řešením tedy může být využití šablony, ve které jsou souvislosti definovány programátorem. Flexibilnějším způsobem je definice některých takových souvislostí specifických pro oblast, pro kterou je text generován. V rámci částí textu, které spolu souvisejí a následují bezprostředně za sebou, pak může fungovat hledání výrazů, které se v textech, které jsou používány jako zdroj, vyskytují poblíž sebe (například vyhledání slovesa, slova „because“ a slov, které následují, pomocí metody concordance v nástroji Sketch Engine). [7]
3.7 Existující nástroje na generování textu Přestože bylo v oblasti generování textu vytvořeno a používáno již mnoho nástrojů, v rozsahu této práce může být stručně popsáno jen několik vybraných reprezentantů. Nástrojů, které by se zabývaly přímo generováním fiktivních textů, je přitom málo a nejsou příliš dokumentované, proto jsou uvedeny jiné nástroje na generování textu. 3.7.1
Fog
V oblasti generování za pomocí šablon existuje například nástroj na generování předpovědi počasí Fog, který je nejdéle používaným nástrojem na generování textu, používaný souběžně v angličtině a francouzštině v Kanadě. Svoje texty předpovědí vytváří na základě numerických modelů počasí a dalších informací, jako jsou například, pro koho je předpověď určena (například námořníky bude zajímat především vítr), a dále také, jak detailní a jak dlouhý má výsledný text být. [1] 3.7.2
ModelExplainer
Tento systém vytváří textové popisy informací obsažených v objektově orientovaném softwaru. Jako vstup používá specifikaci objektově orientovaného modelu tříd a jeho výstupem je popis tohoto modelu nebo jeho části. Přestože grafické zobrazení je obvykle lepší variantou, protože je
19
rychleji a snáz pochopitelná a obsahuje více informací, některé případy vyžadují textový popis. Například popis minimálního počtu entit může být v modelu jedno malé číslo, které může uživatel přehlédnout, přestože jde o důležitou informaci, ovšem v textovém popisu ji přehlédnout nemůže. Na rozdíl od jiných nástrojů pro generování umožňuje ModelExplainer modifikace i obyčejným uživatelům, nejen programátorům. Vygenerované texty navíc obsahují odkazy na jednotlivé entity a vztahy modelu, takže je možné mezi jednotlivými částmi systému přecházet. [1] 3.7.3
Suregen-2
Jedním z nástrojů pro použití v medicíně je Suregen-2 používaný v německém zdravotnictví. Jeho účelem je vytvářet texty v němčině, s formulacemi blízkými těm, které používají lékaři, s tím, že jim umožní ho používat snadno a s možností přizpůsobení jejich potřebám i dalšímu vývoji medicíny. Právě kvůli důrazu na snadné použití a robustnost nepoužívá plně generovaný text. Místo toho funguje formou dialogu, ve kterém uživatel (lékař) vybírá možnosti ve strukturované nabídce termínů a program pak generuje na základě jeho voleb jednotlivé věty. Toto řešení tak sice není příliš elegantní ani obecné, ale plní svůj účel. [8] 3.7.4
How was School Today?
Program s názvem “Jak bylo dnes ve škole?” vytvořený skupinou britských autorů v roce 2015 je určený pro děti, které mají různé problémy s komunikací v důsledku postižení nebo nemoci a má sloužit pro rozvíjení jejich komunikačních schopností a schopnosti mluvit o jejich osobních zážitcích. Za těmito účely zpracovává data, která získává mimo jiné z obrazových a zvukových médií. V porovnání k obvyklým způsobům generování přirozené řeči klade důraz především na robustnost vzhledem k chybějícím informacím a na vytváření textu na základě nestrukturovaných dat. Kvalita generovaného textu je hodnocena s ohledem na jeho smysluplnost a snadné pochopení, hodnocení bylo prováděno opakovaně skupinou rodičů.
20
Děti, které mají v důsledku zhoršeného vnímání vjemů nedostatečně vyvinuté jazykové schopnosti, obvykle čelí tomu, že je jejich okolí jen omezeně přístupné, interakce s jinými osobami jsou limitované a ke komunikaci je málo příležitostí. Program je proto postaven tak, aby používal klient-server architekturu a bylo možné k němu přistupovat kdykoli, snadno a z mnoha zařízení, především z mobilního telefonu. Rodiče dětí a učitelé, kteří s nimi běžně přicházejí do styku, pak byli požádáni o to, aby dělali fotografie a nahrávky, kdykoli se stane něco zajímavého, a nahrávali je do databáze, kterou program využívá. Přestože program má být schopen se dětí sám dotazovat na události jejich dne na základě pořízených nahrávek, musí často fungovat i bez těchto informací, protože nahrávky mohou být nekvalitní, chybějící nebo neodpovídající okolnímu dění. Pro tyto případy mají děti možnost sami sdílet své zážitky nebo může být použit předem zadaný rozvrh činností. Díky používání programu se zlepšuje komunikace postižených dětí, jejich ochota sdílet s okolím svoje zážitky a to nejen pomocí rozhraní, ale i běžnou komunikací. Jeho vývoj bude pravděpodobně pokračovat s důrazem na rozšíření použití pro více věkových skupin a zajištění soukromí. [9] 3.7.5
BabyTalk
Zajímavým nástrojem je také BabyTalk, který generuje automatické popisy obrázků. Za tímto účelem zpracovává velké množství textů a algoritmy pro rozpoznávání obrazu. Obrázek popisuje velmi jednoduchými větami obsahujícími pojmenování entit, jejich základní charakteristiky a umístění. Příklad: This is a photograph of one person and one brown sofa and one dog. The person is against the brown sofa. And the dog is near the person, and beside the brown sofa. V prvním kroku jsou získány objekty, jejich charakteristiky a rozmístění pomocí algoritmů pro rozpoznávání obrazu. Všechna tato slova jsou opatřena hodnotou určujících jejich pravděpodobnost na základě dat
21
z korpusu obsahujícího velké množství různých textů. Z hodnot a jejich pravděpodobností je sestaven hodnocený graf a na jeho základě je generován text s nejvyšším hodnocením. [18] 3.7.6
SCIgen
Za účelem maximálního pobavení generuje program SCIgen náhodné odborné práce v oblasti informatiky, a to včetně grafů, výpočtů a citací. Tento program vytvořila za použití programovacího jazyku Perl, programu pro sázení textu LaTeX a dalších nástrojů skupina studentů univerzity MIT (Massachusetts Institute of Technology). Ke generování používá manuálně vytvořené bezkontextové gramatiky s důrazem pobavení spíše než na soudržnost textu. Texty vygenerované tímto programem byly nejen skupinou autorů posílány na různé konference, u kterých existovalo podezření na velmi nízké standardy pro vkládané práce nebo nevhodné praktiky. V případě konference WMSCI v roce 2005 (World Multi-Conference on Systemics, Cybernetics and Informatic) se skupině autorů podařilo díky dotacím od fanoušků podat přihlášku a získat přijetí na konferenci, které bylo ale později stáhnuto. Autoři přesto dorazili do hotelu, ve kterém se konference odehrávala, a předvedli zde svou falešnou práci. Program tedy sloužil nejen pro pobavení, ale také jako účinný nástroj pro testování důvěryhodnosti odborných konferencí. [19]
22
4
Základní struktury příběhů z pohledu spisovatele
Příběh je tvořen především dějem, tedy souborem událostí, které za sebou následují a nějak spolu souvisí. Děj každého příběhu je unikátní. Struktura definuje více abstraktní stránku neboli celkové logické rozložení příběhu. Základní nebo častá forma příběhů může být definována různými způsoby, pro různé typy příběhů se může lišit a podléhá osobnímu pohledu každého autora. Přesto je možné definovat něco jako základní strukturu používanou napříč kreativní literární tvorbou.
4.1 Struktura příběhu Již od starověkého Řecka se používá struktura pěti dějství, ve které začíná vyprávění představením postav a jejich prostředí (expozice). Poté dojde na vzestup akce, kde několik událostí zkomplikuje život postavám a jejich situace se zdramatizuje (kolize). Postavy musí na nově vzniklý problém reagovat a dochází k vyvrcholení příběhu (krize). Po vyvrcholení se situace řeší (peripetie) a napětí upadá až do momentu, kdy jsou všechny problémy vyřešeny a vše se vrací zpět do normy (katastrofa). Pětibodová struktura může být rozšířena také do osmibodové. Ta představuje klasickou dramatickou jednotku – má-li autor textu dojem, že například s jeho románem není něco v pořádku, pravděpodobným důvodem je vynechání nebo přeskočení některé fáze. Nejčastěji opomíjenou fází je rozhodující volba, která není nutná pro smysluplný příběh, ale dodává mu potřebné napětí. Ne vždy musí být použity všechny fáze a v přesném pořadí, jejich vynechání nebo záměna ale může fungovat pouze v případě, že to odpovídá nějaké specifické situaci a autor si s ní umí díky vysoké úrovni svých schopností vypořádat bez ztráty na napětí a smysluplnosti příběhu. Na této úrovni abstrakce není psaní příběhů příliš variabilní a narušování struktury je riskantní. Význam rozhodování, dějových vyvrcholení a zvratů musí s vývojem zápletky (a tedy také s pokračováním skrz jednotlivé body osmibodové struktury) růst, jinak příběh ztratí tempo. Hlavní postavy musí procházet stále nebezpečnějšími situacemi a vynakládat stále větší úsilí na do-
23
sažení svého cíle. Je-li toto pravidlo porušeno v některé ze závěrečných fází, dojde k antiklimaxu, který přináší úspěch jen zřídka. Jednotlivé body osmibodové struktury jsou: 1. Expozice Expozice dává čtenáři základní realitu příběhu. Zde sice může dojít k začátku konfliktu nebo předmětu příběhu, ale její hlavní účel je popsání obyčejného stavu věcí. V některých případech je tato fáze přeskočena a popisy, které by měly být v ní, jsou rozmělněny a vkládány postupně v rámci ostatních částí. 2. Spoušť Spouští rozumíme událost, která není obvyklá a je mimo kontrolu hlavní postavy. Událost může mít různě velký význam a může mít negativní i pozitivní podtext. Hlavní postava na tuto událost reaguje, vystupuje z pozadí a teprve nyní začíná v rámci příběhu jednat. 3. Hledání Došlo-li v rámci zmíněné události k nastolení pozitivního stavu, snaží se hlavní postava ho zachovat nebo i znásobit ve svůj prospěch, došlo-li k něčemu negativnímu, snaží se tuto situaci napravit a vrátit chod věcí do původního stavu. Tato snaha tvoří hlavní předmět příběhu, ten ale nemusí nutně zůstat celý příběh stejný – často se například snaha o peníze, úspěch nebo vítězství nad nepřítelem promění v hledání lásky. 4. Kolize Hlavní postavu čeká série neočekávaných událostí – pozitivních i negativních. Události musí být do jisté míry překvapivé, ale také uvěřitelné. Jsou-li události příliš předvídatelné, čtenář se nudí a čeká na událost, o které dopředu ví. Je-li událost neuvěřitelná, považuje to čtenář za podvod a nedostatek schopností vypravěče, jeho pozornost a angažovanost upadá. 5. Rozhodující volba Hlavní postava zde zvolí svůj čin, čímž ovlivní další děj. K této volbě pak může dojít i nevědomě a volba může být i pro to, aby
24
neudělala nic. Za toto rozhodnutí je hlavní postava zodpovědná, a to i pokud jednala pod tlakem, impulzivně či mylně. Tato volba čtenáři odhalí více z pravé podstaty hrdinovy povahy. 6. Vyvrcholení Klíčová rozhodnutí se zde dostanou do kulminačního bodu a dojde k projevení jejich vlivu na probíhající skutečnosti. Pozitivní a negativní síly příběhu se zde dostávají do střetu. Vyvrcholení nemusí být šokující, ale vždy musí být zřejmé. Někdy jsou rozhodující volba i vyvrcholení líčeny současně, jindy jde o dvě zcela oddělené události, jejich souvislost je ale zřejmá. 7. Peripetie Dle Aristotela je definována jako zvrat vývoje událostí a jeho přímý protiklad. Musí vyplynout ze samotné povahy zápletky, takže je v podstatě nevyhnutelným důsledkem předchozího děje. Dojde ke změně, a to například povahy hlavní postavy nebo místa, na kterém se nachází. V rámci tragédie dojde k úmrtí. Tato část je nejméně předvídatelná v případě dramatu psaného pro dospělé čtenáře, v případě pohádky pro děti je často předvídatelná. 8. Rozuzlení Na konci je čtenáři představena nová a originální expozice, do které se nějak promítají důsledky všeho, co se stalo v celém příběhu. V rámci pohádek, které jsou primárně určeny pro děti, lze použít základní strukturu příběhu s přihlédnutím na jisté skutečnosti. Obzvláště mladší děti vyžadují spíše jednodušší způsob vyjádření a používání kratších vět. V pohádkách bývá také větší důraz na výchovný aspekt a důsledky morálních či nemorálních rozhodnutí postav, a to v otázkách univerzálních nebo odpovídajících jejich věku. Dále je třeba mít na mysli, že děti udrží pozornost spíše jen omezenou dobu a třeba úvodní popis prostředí a situace je třeba vměstnat jen do několika vět. Zároveň jsou posluchači dosti netrpělivými, a tak upřednostňují akci a napínavé situace před rozvleklým vyprávěním. [10]
25
4.2 Narativní úhel pohledu Dalšími pojmy používanými v oblasti psaní jsou narativní úhel pohledu. Z pohledu první osoby prožíváme děj z pohledu jedné osoby, která je součástí příběhu ať už jako důležitá postava účastnící se děje nebo spíše jako přihlížející, o některých postavách pak mluví za použití zájmen „já“ nebo „my“. Při pohledu třetí osoby, která je nejčastější, mluví o postavách se zájmeny „on“, „oni“ apod. Vzácnější pohled je pohled druhé osoby, ve kterém se k postavě mluví jako ke čtenáři „ty“. Pohled spisovatele je buďto objektivní, nebo subjektivní, kde do textu autor přidává také svoje vlastní myšlenky nebo myšlenky jiných postav. Použití narativního úhlu pohledu se může během vyprávění příběhu měnit. [11]
4.3 Hlavní element příběhu Při bližším pohledu na děj příběhu můžeme odhalit další struktury, které příběh definují, a těmi jsou prostředí, nápad, postava a událost. Ačkoli všechny tyto elementy se v každém příběhu nacházejí, jeden z nich bude vždy v popředí a v rámci příběhu bude dominovat jakožto element, na kterém autorovi nejvíce záleží. 4.3.1
Prostředí
Příběhy postavené na prostředí obsahují neobvyklé místo, jejich děj začíná poté, co postava navštíví toto místo a detaily charakteru postavy jsou zde v pozadí. Například v Gulliverových cestách příliš nezáleželo na postavě Gullivera, čtenář byl vtáhnut do děje pomocí zvláštních míst, do kterých dorazil. Podobně často fungují science-fiction a fantasy příběhy, případně příběhy založené na tom, že se hlavní postava ocitá v prostředí, které reprezentuje protipól jeho normy (jako například divoch z pralesa ve městě, děti v pohádkové říši apod.). Tyto příběhy obvykle začínají vstupem postavy do onoho prostředí a končí jeho odchodem z něho. 4.3.2
Myšlenka
Příběhy založené na myšlence popisují hledání a získávání nové informace z pohledu hlavní postavy. Jeho děj začíná v momentě, kdy si hlavní postava položí otázku a končí, když je tato otázka zodpovězena. Tato
26
struktura je přítomna například v příbězích, kde hlavní postava hledá pravdu o svém původu, odpověď na otázku z oblasti vědy nebo filozofie či v kriminálních příbězích, kde je otázkou, kdo a proč vraždil. Po objevení trosek dávné civilizace může být také otázkou důvod jejího zániku apod. 4.3.3
Postava
Každý příběh je částečně příběhem postavy, ne vždy se ale autor soustředí na to, jaký má postava charakter a jaká je její role v rámci svého prostředí, případně jak se role a charakter postavy během příběhu mění. Tento typ příběhu obvykle začíná v momentě, kdy je postava tak nešťastná, nedočkavá nebo rozčílená, že spustí proces změny, a končí tím, že je tento proces dokončen, ať už úspěšně nebo ne. 4.3.4
Událost
Významná událost je spouštěčem v posledním, nejčastějším a také nejdramatičtějším typu příběhu. Na základě této události je běžný řád věcí narušen a nastává chaos, který je třeba napravit a vrátit vše zpět do normálu. Na rozdíl od ostatních typů příběhu vyžaduje tento mnohem větší důraz na navázání vztahu mezi čtenářem a postavami, protože jinak se nepodaří nastolit potřebnou úroveň napětí spojenou s vyvstalým nebezpečím, která provází pouze čtenáře, kteří jsou emocionálně propojeni s hlavními hrdiny. Naopak zdlouhavé popisování prostředí je tomuto typu příběhu na škodu a lépe funguje v případě, že jsou všechny okolnosti příběhu předávány čtenáři postupně zároveň s tím, jak nastává zmíněný chaos. [12]
27
5
Generátor pohádek
5.1 Úvod Hlavním účelem generátoru je vytvářet krátké pohádkové příběhy postavené na osmibodové struktuře příběhu. Jako vstupní data jsou použita slova (v rámci rolí hrdiny, padoucha, rekvizity a prostředí) specifikovaná uživatelem. Příběh je psán v anglickém jazyce z pohledu třetí osoby a je v základu postaven na události (popsáno v kapitole 4.3.4). Ve středu dění je hlavní hrdina a pohádka má mít dobrý konec vyznívající v jeho prospěch. Pro svůj generátor pohádek jsem shromáždila texty pohádek a vytvořila značkovaný korpus nástrojem Sketch Engine[13] (nástroj je popsán v kapitole 3.5.1). Jako přístup ke generování jsem si vybrala kombinaci použití šablony a autonomního generování. Jako základní šablonu textu jsem použita osmibodovou strukturu (popsána v kapitole 4.1), kterou jsem vytvořila se snahou o použití minimálního množství slov, které nejsou generované dynamicky s ohledem na zadané hodnoty. Dále jsou do šablony doplňována slova na základě nalezených vztahů ve zmiňovaném korpusu. Struktura je do jisté míry flexibilní a dokáže se přizpůsobit situaci, kdy není nalezen dostatek dat. Výsledný příběh (pohádka) je tvořena pěti až jedenácti větami v závislosti na slovech, která byla nalezena v korpusu, a jejich vztazích. Koheze a koherence (popsána v kapitole 3.6) je v textu řešena pomocí šablony, použití spojek mezi větami a zájmen. Pro některá slova je použita analýza sentimentu (popsána v kapitole 3.5.3). Užití takového generátoru by mohlo být výukové či zábavné, mohl by sloužit jako základní inspirace pro tvůrce pohádek, kteří se teprve učí základní principy psaní nebo jazyka. Po jistém rozšíření by mohl být využit v počítačových nebo deskových hrách na hrdiny. Základ programu jsem napsala v programovacím jazyce python, pro uložení dat kromě korpusu používám textové soubory. Program využívá korpus v prostředí Sketch Engine[13], ze kterého pomocí URL dotazů získává Json objekty, které dále zpracovává. Pro použití mimo příkazo-
28
vou řádku bylo vytvořeno také webové rozhraní pomocí kombinace HTML, PHP a Javascriptu, které zajišťuje zpracování vstupů formuláře, jejich předání python skriptu a následné zobrazení výsledků zpět na stránce. Všechny příběhy, které program vygeneruje, jsou uloženy do logovacího souboru, doplněny všemi použitými hodnotami a aktuálním datem.
5.2 Rozhraní generátoru Pohádky jsou definovány čtyřmi entitami: hrdina, padouch, prostředí a rekvizita. Do generátoru je možné zadat jakékoli slovo. V případě slov, která se v korpusu nenacházejí často, hrozí, že neexistuje dostatek spojení, a nedávají proto dostatečně kvalitní výsledky. Uživatel může zadat slovo, které se v korpusu nevyskytuje vůbec anebo se v něm vyskytuje, ale nelze k němu najít vhodnou charakteristiku nebo spojitost mezi ním a jinými slovy (například není nalezeno žádné sloveso, které by se v textech vyskytovalo v kontextu konfrontace hrdiny a padoucha). Z tohoto důvodu jsem vytvořila základní seznamy doporučených hodnot pro tyto entity. Tyto hodnoty obsahují jedny z nejčastějších podstatných jmen v korpusu.
Hrdina: král, královna, otec, matka, princ, princezna, chlapec, dívka
Padouch: obr, čarodějnice, trpaslík, drak, macecha, medvěd, lev, vlk
Prostředí: hrad, palác, dům, zahrada, les, kostel, malé město, velké město
Rekvizita: meč, kámen, růže, koruna, poklad, oheň, prsten, hůlka
Pro hrdinu a padoucha je pak možné definovat pohlaví, kde pohlaví „Other“ znamená použití zájmena „It“. V případě, že je slovo v doporučeném seznamu a je pro něj vybrána hodnota „Other“, je mu automaticky přidělena předem známá hodnota pro pohlaví (například queen – she).
29
Je-li zadána do webového rozhraní hodnota „random“ nebo je pole ponecháno prázdné, vybere se hodnota náhodně ze seznamu doporučených. Všechna zadaná slova také musí být bez mezery, jinak je použito první z těchto slov. Společně s generovaným příběhem vrací generátor i informace o všech zadaných hodnotách a aktuálním datu a čase. V případě, že například v důsledku překlepu nebylo zadané slovo nalezeno v korpusu, je o tom uživatel vyrozuměn větou na konci navráceného textu. Samotný text pohádky pak obsahuje menší počet slov, případně i vět.
5.3 Zpracování a získávání dat z databáze 5.3.1
Sběr dat
Jako jeho datový základ slouží dříve vytvořený korpus pohádek čítající přes 400 příběhů především od Bratří Grimmů, Andersena, La Fontaina a dalších [14]. Základ byl pak doplněn více než dvěma tisíci dalšími příběhy z databáze Gutenberg [15]. Tyto pak byly zpravidla ve formě větších sbírek čítajících desítky jednotlivých pohádek. Autory těchto sbírek je široká řádka jmen, mnoho textů také nemá jmenovaného konkrétního autora a pochází z různých národních pohádek (evropské, americké, skotské, švédské, japonské, keltské, francouzské, ruské a další), jmenovitě například také pohádky Charelse Perraulta a Pohádky tisíce a jedné noci. 5.3.2
Předzpracování
Soubory s příběhy byly ručně zbaveny úvodu, závěru, cizojazyčných (jiných než anglických) částí textu a případných poznámek a poté skriptem napsaným v pythonu zbaveny hranatých závorek a jejich obsahu; hranaté závorky obvykle označovaly reference a vložené ilustrace a nebyly tak logickou součástí samotného textu. 5.3.3
Vytváření korpusu
Pro účely vytváření generovaných příběhů jsem pomocí standardních funkcí nástroje vytvořila značkovaný korpus s názvem FairyTales v prostředí Sketch Engine[13].
30
5.3.4
Vybírání slov ze získaných dat
Pro každé slovo, které uživatel zadal, a některá další, je z korpusu získán pomocí URL dotazu na slovní profil (word sketch) Json slovník reprezentující všechny vztahy, které má výraz k jiným slovům ke korpusu (v souboru conn.py). Ze slovníku lze získat různé typy vztahů, v případě tohoto generátoru jmenovitě vztah subjektu a objektu a charakteristiky (v souboru corpus.py). Pro každý dotaz na slovo, které je v příslušném vztahu ke zdrojovému slovu, je vybrán předem definovaný počet slov – označený jako random level neboli úroveň náhodnosti – a z tohoto seznamu slov je poté jedno náhodně vybráno. Nejnižší hodnotou je 1 – pak se vybírá pouze jedno nejčastější slovo: při takovém nastavení je příběh za použití stejných vstupů pokaždé stejný. V průběhu vytváření textu se všechna použitá slova ukládají do seznamu (v souboru previously_used.py), který zajišťuje, že například při vypisování tří charakteristik nebude jedna použita víckrát. Tato slova jsou vylučována ze všech výběrů společně se seznamem zakázaných slov, který je uložen v textovém souboru forbidden_words.txt s četností jednoho slova na řádek. Mezi zakázaná slova patří například jednotlivá písmena, číslovky, zájmena a příslovce času, protože tato nefungují jako charakteristiky ani jako objekty a jejich výskyt ve výsledném textu je nežádoucí. Ze stejného důvodu jsem do seznamu zakázaných slov přidala také ta slova, která se ve výsledcích vyskytovala často, ale byla při vytváření korpusu chybně označkována a v důsledku se tedy vyskytovala na neodpovídajícím místě v textu (například u slova „dragon“ se nacházela jako druhá nejdůležitější charakteristika „burst“, která se v textu vyskytovala především kvůli opakování věty „Burst, dragon!“, která znamená „Vzplaň, draku!“ a neobsahuje jeho charakteristiku). Definovaný počet slov random level je počtem maximálním – menší bude v případě, že se v korpusu nenachází pro daný vztah dostatek slov, která nebyla použita dříve a nenachází se v seznamu zakázaných slov.
31
5.4 Hodnocení pozitivity slov Pro účely vyjádření událostí pozitivních či negativních vůči některé postavě byl použit nástroj Sentiword[16]. Tato databáze sloves používá hodnocení sloves pomocí skóre – pro každé definuje jeho míru pozitivity i negativity. Tato hodnota byla načtena do struktury slovníku v souboru sentiword.py, některá se vyskytovala jak v pozitivním, tak v negativním seznamu. V případě, že se některé sloveso nacházelo ve zdroji víckrát v různých významech, bylo jeho hodnocení zprůměrováno a uloženo jako jedna hodnota. Při dotazu na například pozitivně zabarvené sloveso bylo ze seznamu slov, která byla ke zdroji v příslušném vztahu, vybrán učený počet sloves (čtyřnásobek úrovně náhodnosti), ta byla poté seřazena podle jejich hodnocení pozitivity, z nich byl vybrán obvyklý počet (úroveň náhodnosti) takových, která měla nejvyšší hodnocení a z nich nakonec jedno náhodně vybráno. V případě, že zabarvené sloveso nebylo nalezeno, byla použita jiná formulace věty nebo věta z výsledku vypadla úplně (viz Struktura generovaného příběhu níže).
5.5 Struktura generovaného příběhu Pro základní strukturu byl použit koncept osmibodové osnovy[10] a pro každý z bodů byl navržen způsob vyjádření pomocí použití korpusových dat (viz níže). Tato struktura byla použita, protože obsahuje nejvyšší úroveň detailnosti a přestože může z tohoto důvodu působit jako fádní a pro tvůrčí psaní příliš svazující, je nejlepší pro zajištění smysluplného průběhu generovaného příběhu. Zároveň byl vybrán základní typ příběhu, kde je hrdina zasažen negativní událostí z rukou padoucha, ale ve výsledku to pro něj skončí dobře. Plánování obsahu i vět je tedy nadefinováno šablonou, která je ale tvárná s ohledem na to, jaká data jsou nalezena v korpusu. Může proto obsahovat různé typy vět, a přestože v ideálním případě by všechny jednotlivé příběhy měly stejnou základní strukturu (ale předávaly by jiné zprávy), ve výsledku je každý mírně odlišný, což způsobuje jistou různorodost výsledků. Všechna slova, která jsou určena na pevno (nejsou
32
generována), jsou vybrána s ohledem na smysluplnost a gramatickou korektnost vět a nesou v sobě minimum informací, aby tak byla generována co největší poměrná část textu. Koheze a koherence je v textu obsažena hned v několika bodech. V rámci expozice je v první větě představen hrdina a v druhé je rozvinut jeho charakter. Ve spoušti je propojení souvětí pomocí spojky „protože“, kde je použit předpoklad, že činnost, kterou padouch obvykle vykonává, bude souviset s jeho charakterem. A nakonec v části peripetie použije hrdina svoji rekvizitu, která způsobí problém padouchovi. Napříč celým textem pak jako spojující elementy fungují hlavní postavy. V dalším textu následuje bližší popis jednotlivých bodů osnovy, u každého jednotlivého bodu osnovy jsou popsány tyto tři části: a. Obecná charakteristika bodu osnovy. b. Popis způsobu, kterým byla ta která část reprezentována ve vygenerovaném příběhu. V závorkách jsou uvedeny příklady vět vygenerované ideálním způsobem – jde o formulace, na které je při generování textu mířeno. Charakteristika se může vztahovat k postavě, jeho vlastnosti nebo slovesu; jde o jejich upřesňující vlastnosti - v různých případech může být taková vlastnost reprezentována jiným slovním druhem. V anglickém textu je popsána jako modifier. c. Reprezentace kostry generovaného textu. Tučně zvýrazněná slova jsou ta, která nejsou generovaná – maximálně je upraven jejich tvar po lexikální stránce. Jednotlivé části kostry příběhu jsou reprezentovány tak, jak jsou upřednostňovány. Tedy pozdější možnost v pořadí je použita v případě, že pro předchozí nejsou nalezena slova. 1. Expozice a. Expozice dává čtenáři základní realitu příběhu. Vidíme hlavního hrdinu ve své obvyklé situaci, vykonávající obvyklé činnosti.
33
b. Po klasickém „bylo nebylo“ následuje představení hlavní postavy a popis jejích vlastností (celkem maximálně tři vlastnosti, jedna z nich opatřená vlastní charakteristikou). Dále je použito jedno z nejčastějších sloves, které se v korpusu pojí k postavě ve snaze reprezentovat její běžnou činnost. Toto sloveso je použito společně s jemu příslušícím objektem (popelka uklízela smetí) nebo v případě, že je vybráno sloveso, které není tranzitivní, pak s charakteristikou (popelka spěchala rychle). V zápětí se objeví také vybraná rekvizita opět s charakteristikou (měla šedivého holoubka). c. První věta: i. Once upon a time, there was a modifier hero. ii. Once upon a time, there was a hero. Druhá věta i. He was modifier-of-modifier modifier and modifier. ii. He was modifier and modifier. iii. He was modifier. iv. (Pozn.: Případně není tato věta použita vůbec.) 2. Spoušť a. Spouští rozumíme událost, která není obvyklá a je mimo kontrolu hlavní postavy. b. Protože hlavním „problémem“ hrdiny je v tomto příběhu padouch, začíná část slovy „ale byl zde také“ (např. macecha), poté je vyjádřena běžná činnost padoucha – opět pomocí slovesa opatřeného objektem nebo charakteristikou (křičela hlasitě) a jako důvod činnosti padoucha jsou uvedeny jeho vlastnosti – jedna s a jedna bez charakteristiky (protože byla zlá a velmi sobecká). c. První věta: i. But there was also a villain. Druhá věta: i. He was verb an object, because he was modifier and modifier-of-modifier modifier.
34
ii. He was verb an object, because he was modifier and modifier. iii. He was verb an object, because he was modifier. iv. He was verb modifier, because he was… (Pozn.: Zde opět pořadí vět pokračuje jako v možnostech i iii, s tím, že objekt je nahrazen možností modifier.) v. He was verb, because he was… (Pozn.: Zde opět pořadí vět pokračuje jako v možnostech i - iii, s tím, že sloveso nemá objekt ani modifier.) vi. He was… (Pozn.: Zde opět pořadí vět pokračuje jako v možnostech i - iii, s tím, že je vynechána věta se slovesem.) vii. (Pozn.: Případně není tato věta použita vůbec.) 3. Hledání a. Vyvstanou nějaké události. Hrdina je nucen začít jednat, vydat se na cestu nebo nějak jinak reagovat. b. Jako vyjádření cesty či počátku řešení vzniklého problému se hrdina a padouch ocitnou v definovaném prostředí rozšířeném o charakteristiku (byli ve starém domě). V této situaci provede padouch hrdinovi něco špatného (když macecha ponížila popelku). Sloveso s negativním zabarvením je získáno pomocí databáze SentiWordNet způsobem popsaným v kapitole 4.4. c. První věta i. They were in the modifier surroundings, when the villain verb the hero. ii. They were in the surroundings, when the villain verb the hero. iii. They were in the modifier surroundings. iv. They were in the surroundings. 4. Kolize a. Hlavní postavu čeká série neočekávaných událostí – pozitivních i negativních. Tyto události by neměly být příliš
35
náhodné ani příliš předvídatelné, měly by být uvěřitelné a pro čtenáře zajímavé. b. Tato část je bohužel velmi závislá na kreativitě spisovatele a jeho schopnosti posoudit, jaké události jsou překvapivé a z toho důvodu zábavné pro čtenáře. Zároveň je důležitá jejich uvěřitelnost. V rámci strojového generování je to úloha náročná pro zpracování a vyžaduje vysokou úroveň umělé inteligence. Z korpusových dat sice lze získat méně obvyklé vazby mezi entitami, ale jejich použití by pravděpodobně vyvolalo nesmyslné situace častěji, než by došlo k vytvoření použitelné věty. c. Z důvodů popsaných v bodě b se tato část negeneruje. 5. Rozhodující volba a. Hlavní postava zde zvolí svůj čin, čímž ovlivní další děj. Tato volba čtenáři odhalí více z pravé podstaty hrdinovy povahy a má pro něho v pozdější části příběhu důležité důsledky. b. Stejně jako předchozí bod vyžaduje tento vysokou úroveň inteligence a znalosti lidské morálky a fungování principů společnosti právě na základě morálky (případně by se dalo říct karmy), a proto je mimo rozsah základního programového generování. c. Z důvodů popsaných v bodě b se tato část negeneruje. 6. Vyvrcholení a. Pozitivní a negativní síly příběhu se zde dostávají do střetu, příběh kulminuje. b. Interakce mezi hrdinou a padouchem je zde definována jako soubor sloves, které obsahují jednu postavu jako subjekt a druhou jako objekt a naopak. Pro tento účel jsou zpracovávány json objekty získané pomocí dotazu na slovní profil (word sketch) hrdiny a padoucha, je v nich hledána shoda v parametru „object_of“ jednoho a „subject_of“ druhého a naopak. Výsledkem jsou dva seznamy obsahující odpovídající slovesa. V případě, že je nalezen dostatek takových
36
vazeb, je nejdříve vybrána taková, kde je hrdina subjektem, protože v poslední větě byl objektem (popelka oblékala macechu). Poté je vybrána obrácená vazba (macecha okřikovala popelku). Dále můžou být takové vazby vybírány střídavě až do vyčerpání, pokud tomu odpovídá nastavení programu. Pro stručnost výsledku byly v tomto případě vybrány pouze věty dvě. c. Věty (náhodně generované 0-2 věty ve tvaru, střídavě první a druhá možnost, můžou být obě stejného typu, není-li druhý tvar k dispozici): i. The hero/villain verb the villain/hero. ii. (Pozn.: Případně není tato věta použita vůbec.) 7. Peripetie a. Hrdinovi se nějak projeví důsledek jeho kritické volby a dojde tak k nějaké změně, v případě pozitivně laděného příběhu se věci obrátí v dobré právě pro hlavního hrdinu. b. V tomto momentě přichází na řadu použití rekvizity hrdinou takovým způsobem, že to vyvolá něco negativního padouchovi. Opět je uvedena hrdinova charakteristika ve snaze o propojení jeho chování a důsledku (hodná popelka povolala holoubka). Nyní je v případě, že je nalezeno sloveso s negativním zabarvením, kde je rekvizita subjektem, popsán důsledek použití rekvizity (statečný princ švihnul mečem a ten seknul draka), nebo je vybráno jiné negativně zabarvené sloveso vyjadřující negativní dopadem pro padoucha nyní se subjektem (a princ zklamal macechu) nebo v případě nenalezení subjektu bez (a macecha prohloupila). Zároveň se také stane nějaká pozitivně zabarvená událost hlavnímu hrdinovi opět se subjektem (pak princ miloval popelku) nebo je použito pozitivně zabarvené sloveso samo o sobě, případně s charakteristikou (popelka tancovala krásně). Slovesa s negativním či pozitivním zabarvením jsou získána pomocí databáze SentiWordNet způsobem popsaným v kapitole 4.4.
37
c. První věta (použití rekvizity a dopad na padoucha): i. The (modifier) hero verb the property and it verb the villain modifier. ii. The (modifier) hero verb the property and it verb the villain. iii. The (modifier) hero verb the property and a subject verb the villain modifier. iv. The (modifier) hero verb the property and a subject verb the villain. v. The (modifier) hero verb the property and villain verb modifier. vi. The (modifier) hero verb the property and villain verb. vii. The (modifier) hero used the property and... (Pozn.: Zde opět pořadí vět pokračuje jako v předchozích možnostech, s tím, že verb je nahrazeno used.) viii. The modifier hero used the property. ix. The hero used the property. Druhá věta (použito pozitivně zabarvené sloveso): i. Then a subject verb the hero. ii. Then hero verb modifier. iii. Then hero verb. iv. (Pozn.: Případně není tato věta použita vůbec.) 8. Rozuzlení a. Na konci je čtenáři představena nová a originální expozice, do které se nějak promítají důsledky všeho, co se stalo v celém příběhu. b. Opět se objevuje sloveso, které je často použito ve vztahu k hrdinovi, nyní ovšem takové, které ještě nebylo použito opět použito s objektem případně s charakteristikou (popelka žila šťastně). c. První věta: i. The hero verb an object. ii. The hero verb modifier.
38
iii. The hero verb. iv. (Pozn.: Případně není tato věta použita vůbec.) Druhá věta: i. The end. 5.5.1
Celková maximální struktura (ideální stav) 1. Once upon a time, there was a modifier hero. 2. He was modifier-of-modifier modifier and modifier. 3. But there was also a villain. 4. He was verb an object, because he was modifier and modifier-of-modifier modifier. 5. They were in the modifier surroundings, when the villain verb the hero. 6. The hero verb the villain. 7. The villain verb the hero. 8. The modifier hero verb the property and it verb the villain modifier. 9. Then a subject verb the hero. 10. The hero verb an object. 11. The end.
5.5.2
Celková minimální struktura (v případě nenalezení všech slov v korpusu) 1. Once upon a time, there was a hero. 2. But there was also a villain. 3. They were in the surroundings. 4. The hero used the property. 5. The end.
5.6 Lexikální zpracování Celý generovaný příběh je psaný v minulém čase (prostém i průběhovém) a používá členy, zájmena a klasifikaci tranzitivity sloves. Lingvistickou realizaci provádí program na základě sady specifických pravidel definovaných k tomuto účelu. Jednotlivá slova jsou předávána funkcím, které je dle pravidel transformují a navrací je zpět ve výsledném správ-
39
ném tvaru. Pravidla včetně seznamů slov byla vytvořena na základě gramatických pravidel knihy Practical English Usage[17]. Realizace struktury je odlišná pro texty generované přes web a přes příkazovou řádku, protože každé toto prostředí využívá jinou formu přechodu na další řádek. Jinak se formátování textu nemění. 5.6.1
Minulý čas prostý
Převod do minulého času vychází z předpokladu, že se ke slovesu v infinitivu přidává „ed“ (např. work, worked) s výjimkou: 1. Sloves, která končí na „y“ – u těch se mění y na i a poté se přidá „ed“ (např. cry, cried). 2. Sloves, která končí na „e“ – u těch se přidává pouze „d“ (např. care, cared). 3. Nepravidelných sloves – ty mají specifické tvary slovesa v minulém čase (např. become, became). V programu je pro ně definován textový soubor pojmenovaný irregular_verbs.txt s jejich výčtem, kde na jednom řádku je vždy sloveso v infinitivu a jeho tvar v minulém čase. 4. Sloves, která vyžadují zdvojení poslední hlásky a poté přidání „ed“ (zpravidla krátká slovesa s jednou samohláskou – např. plan, planned). Pro tyto je vytvořen soubor pojmenovaný double_past.txt, který obsahuje na jednom řádku vždy příslušné sloveso v infinitivu. 5.6.2
Minulý čas průběhový
Průběhový čas je použit v počátku příběhu, aby podtrhnul fakt, že je činnost probíhající, běžná, aby mohla být později narušena dalšími událostmi. Průběhový čas je tvořen slovesem „was“ a průběhovým tvarem příslušného slovesa – k infinitivu je přidáno „ing“ (např. work, was working) s výjimkou: 1. Sloves, která končí na „e“ - pokud nekončí na „ee“ nebo se nejedná o sloveso „be“ – takovým je třeba nejprve poslední písmeno odstranit a poté je přidáno „ing“ (např. live, was living).
40
2. Sloves, která končí na „ie“ – u těch se mění „ie“ na „y“ a poté se přidá „ing“ (např. die, was dying). 3. Sloves, která vyžadují zdvojení poslední hlásky a poté přidání „ing“ (např. sit, was sitting). Pro tyto je vytvořen soubor double_continuous.txt, který opět obsahuje infinitivy sloves na jednotlivých řádcích. 5.6.3
Tranzitivita sloves
Tranzitivita sloves definuje, zda se používají společně s objektem (nesl tašku) nebo takové použití nedává smysl (plakal). Pro jejich klasifikaci byl použit soubor intransitive_verbs.txt čítající netranzitivní slovesa oddělená řádky. V případě, že bylo vybráno sloveso netranzitivní, přidala se k němu ve výsledném textu místo objektu charakteristika ve formě příslovce (plakal teskně).
5.7 Možnosti rozšíření 5.7.1
Datové zdroje
Protože generované výsledky přímo souvisí s rozsahem a kvalitou korpusu, jeho rozšiřování by prospělo výsledku. Korpus navíc v důsledku nedokonalého tvaru vstupního textu obsahuje slova, která mají například na konci pomlčku nebo části slov a jednotlivá písmena. Část takových případů byla upravena pomocí zakazování slov, ale to je jen částečná pomoc a použití korpusu bez problémových slov by bylo lepší. 5.7.2
Použití shody
Použitím dotazu na shody (v originále concordance) v korpusu by bylo možné získat slova, která se v textech obvykle vyskytují mezi dvěma slovy (v tomto případě především mezi hrdinou a padouchem) a z těchto slov poté vybírat slovesa, která dále používat. To by pravděpodobně vedlo k lepšímu výběru interakcí mezi postavami především v sekci Vyvrcholení. Vzhledem k tomu, že trvání zpracování takového dotazu v korpusu dosahovalo několika minut a výsledný program měl pracovat i přes webové rozhraní, které vyžaduje kratší čas generování, bylo od tohoto způsobu dotazování upuštěno.
41
5.7.3
Zdokonalení použití sloves
Rozdělení sloves bylo rozděleno pouze do kategorie tranzitivní (používající objekt) a netranzitivní (ostatní), nicméně slovesa můžou používat různé předložky, můžou fungovat jako frázová slovesa a může se lišit jejich použití charakteristik (příslovcí). Tento problém by vyžadoval použití databáze sloves a případně u těch, které lze používat různými způsoby, i rozpoznání toho, ve kterém konkrétním tvaru má smysl je pro daný problém použít. Pro řešení tohoto problému bylo zvažováno použití nejčastějšího tvaru z databází, jako jsou například VerbNet, FrameNet nebo PDEV, bohužel ale tato obsahovala jen málo slov, která se často vyskytovala v korpusu pohádek.
5.8 Hodnocení kvality výsledku 5.8.1
Metody hodnocení výsledku
Pro hodnocení kvality vygenerovaných výsledků jsem použita metodu dotazníku. V dotazníku byly záměrně obsaženy náhodně vytvořené příběhy obsahující hodnoty pouze z doporučených seznamů hodnot a zvyšující se úroveň náhodnosti. Protože tato slova se vyskytují v korpusu často a s bohatými vazbami, obsahoval každý příběh standartní počet 11 vět. V dotazníku jsem použila 10 příběhů s úrovní náhodnosti ve všech hodnotách v rozsahu 1 až 10, jejich pořadí v rámci úrovně náhodnosti bylo náhodně pozměněno. Každý uživatel hodnotil všech 10 příběhů, u každého příběhu tak činil pomocí tři různých ukazatelů – míra gramatické správnosti, míra smysluplnosti a subjektivní hodnocení zábavnosti či zajímavosti příběhu. Každou otázku mohl dotazovaný ohodnotit na škále od 1 do 5, kde 1 označovala nejhorší a 5 nejlepší výsledek. Vše bylo doplněno o základní informace o dotazovaném a ohledně jeho úrovně angličtiny. 5.8.2
Výsledky
Hodnocení uživateli probíhalo během měsíce května pomocí internetové služby Google Forms. Jak můžeme vidět na obrázku 1.2, dotazovanými
42
bylo 31 osob ve věku 16 až 40 let se střední nebo vysokou úrovní angličtiny. Pohlaví
Věk
Úroveň angličtiny
do 15 16 - 25
Muži Ženy
26 - 40
Beginner
nad 40
Elementary Intermediate Upper intermediate Advanced Master
Obrázek 1.2: Základní charakteristiky dotazovaných.
Původním předpokladem bylo, že hodnocení bude postupně klesat se zvyšující se úrovní náhodnosti, jak je vidět na grafu 1.3, který zobrazuje průměrné hodnocení pro příběhy s jednotlivými úrovněmi náhodnosti, taková spojitost nebyla prokázána.
Hodnocení v závislosti na úrovni náhodnosti 5 4.5
hodnocení
4 3.5
Is it grammatically correct?
3
Does it make sense?
2.5 2
Is it entertaining or interesting?
1.5 1 1
2
3
4
5
6
7
8
9
10
úroveň náhodnosti
Obrázek 1.3: Hodnocení v závislosti na úrovni náhodnosti.
43
Naproti tomu při řazení průměrného výsledku dle pořadí, v jakém byly příběhy řazeny v dotazníku, můžeme vidět (na obrázku 1.4), že hodnocení zohledňující to, jak byl daný příběh zábavný či zajímavý, průběžně klesalo v důsledku upadající pozornosti hodnotitelů. Tato skutečnost může být přisouzena zdlouhavosti dotazníku a faktu, že se všechny generované příběhy drží stejné základní struktury.
Hodnocení v závislosti na pořadí příběhu 5 4.5
hodnocení
4 3.5
Is it grammatically correct?
3
Does it make sense?
2.5 2
Is it entertaining or interesting?
1.5 1 1
2
3
4
5
6
7
8
9
10
pořadí příběhu
Obrázek 1.4: Hodnocení v závislosti na pořadí příběhu.
Při rozdělení hodnotitelů do dvou skupin dle jazykových schopností (nejpokročilejší úroveň Master a ostatní) je vidět (na obrázku 1.5), že hodnocení pokročilejších uživatelů bylo ve všech otázkách nižší. Tento rozdíl je pak obzvlášť patrný v případě hodnocení smysluplnosti.
44
Hodnocení v závislosti na úrovni náhodnosti 5 4.5 4
hodnocení
3.5 3 2.5 2 1.5 1 1
2
3
4
5
6
7
8
9
10
úroveň náhodnosti Is it grammatically correct? (ostatní) Does it make sense? (ostatní) Is it entertaining or interesting? (ostatní) Is it grammatically correct? (master) Does it make sense? (master) Is it entertaining or interesting? (master)
Obrázek 1.5: Hodnocení v závislosti na úrovni náhodnosti dle skupin úrovně angličtiny.
Celkové průměrné hodnocení gramatické korektnosti příběhů dosahovalo hodnoty 2,85 (s průměrnou střední hodnotou 3), v případě smysluplnosti 2,05 (s průměrnou střední hodnotou 1,9) a v případě zajímavosti či zábavnosti příběhu 2,49 (s průměrnou střední hodnotou 2.5). Celkově tak příběhy ve všech ohledech dostaly mírně negativní až neutrální hodnocení.
45
Nejlépe hodnoceným příběhem byl příběh v pořadí první s úrovní náhodnosti 6: Once upon a time, there was a good girl. She was very pretty and lovely. The girl was running quickly, she had a silver wand. But there was also a bear. He was getting up, because he was great and middle-sized. They were in the little garden, when the bear felt the girl. The bear brought the girl. The bear called the girl. The pretty girl lifted the wand and a man replied the bear. Then a chief sent the girl. The girl began instantly. The end. Ostatní testované příběhy můžete vidět v příloze v kapitole 8.
46
6
Závěr
Generátor pohádek byl vytvořen se snahou vytvořit poměrně funkční generátor, který bude vytvářet krátké texty v rychlosti takové, že jej bude možno používat pomocí webového rozhraní. Z tohoto důvodu byl vybrán přístup kombinující využití šablony a generování přirozeného jazyka na základě vztahů ve vytvořeném korpusu. Dalším důležitým prvkem bylo použití některé obvyklé struktury používané při psaní příběhů spisovateli. Tato struktura byla použita jako základní mantinely, uvnitř kterých byl tvořen text co nejvíce flexibilní a co nejméně monotónní vzhledem k nalezeným datům v korpusu jakožto hlavnímu zdroji dat. Text obsahuje pro mnoho vět více možností jako reakci na chybějící data a způsobuje tak různorodost generovaných výsledků. Výsledný text tedy kromě doplňovaných hodnot, slov „bylo nebylo“ a „konec“ obsahuje jen prázdnou kostru sestavenou téměř jen ze spojek a zájmen. Minimální šablonou tak cílí na pozici na cestě mezi generováním pomocí šablony a přístupem automatického generování jazyka NLG. Dle výsledků dotazníku nezískaly generované texty v žádném ohledu příliš vysoké hodnocení. Hodnocení bylo průměrně mírně negativní až neutrální, a to nejhůře s ohledem na smysluplnost příběhu, nejlépe hodnocena byla naopak gramatická korektnost. Toto hodnocení lze z části přikládat upadající pozornosti hodnotitelů, důležitějším důvodem jsou ovšem metody pro generování a vstupní data. Takový výsledek je v podobných pracích v této oblasti běžný. Jedním ze zásadních problémů jsou nedostatečná a částečně nesprávná vstupní data, kde bohužel nebylo v rámci časových možností práce možné vytvořit širší sběrnou metodu pro příběhy, ze kterých byl vytvořen korpus a jeho rozsah je tak omezený. Další postupné rozšiřování a další opravy korpusu by tak mohly generované výsledky zlepšit.
47
Podobně také u klasifikace použití sloves nebyla nalezena dostatečně rozsáhlá databáze a výsledky by tak musely být spojovány z více databází, případně by musela být některá rozšířena o často používaná slovesa korpusu. Vhodnějším způsobem pro hledání správných tvarů sloves a lépe odpovídajících formulací by bylo použití konkordance, které by ale výsledný program výrazně zpomalilo a využití skrz webové rozhraní by tak nebylo možné. Generování přirozeného jazyka se v současnosti omezuje především na velmi úzké oblasti, které používají často opakované formulace a lze je relativně snadno převést do technického postupu (např.: předpověď počasí, sportovní výsledky, popis struktur). Kreativní psaní je ale oblast, která je velmi úzce závislá na inteligenci a fantazii autora a jeho schopnosti udělat text zajímavý a. Čtenáři jsou také velmi citliví na nudné a neuvěřitelné texty. Z těchto důvodů a pravděpodobně také protože pro fiktivní texty generované počítačem není tak velká poptávka, neexistuje v této oblasti mnoho dohledatelných nástrojů a jejich vývoj je obvykle pouze krátký a omezený na velmi jednoduché úkoly. Zajímavějších výsledků by také mohlo být dosaženo použitím jmenných frází namísto jednotlivých slov, v takovém případě by ale bylo v důsledku nedostatku dat pro dané fráze ještě obtížnější najít v korpusu odpovídající vazby. Výsledek generátoru pohádek by také mohl být lepší, pokud by byly vytvořeny rozsáhlejší a přesnější databáze, bylo by možno využít vyšší výpočetní výkon a pokud by mohl být nadále vyvíjen a upravován s ohledem na podporu takových struktur, které se často vyskytovaly v lépe hodnocených textech. Další možností by bylo omezení struktury výsledného textu například dle typu prostředí nebo by ve větší míře mohl být zapojen do tvorby textu uživatel – jeho specifikace by mohla být přesnější s ohledem na používané entity anebo by mohl do vytváření příběhu zasahovat vybíráním nejlepší možnosti z nabízených náhodně vybraných vět, případně doplnit některé kritické obtížně generovatelné části.
48
7
Literatura [1]
REITER, Ehud. a Robert DALE (eds.). Building natural language generation systems. Cambridge: Cambridge University Press, c2000. Studies in natural language processing. ISBN 0-52162036-8.
[2]
BARZILAY, Regina a Mirella LAPATA. Collective Content Selection for Concept-to-Text Generation. Proceedings of the Joint Human Language Technology and Empirical Methods in Natural Language Processing Conferences (HLT/EMNLP-2005) Vancouver, Canada, 2005.
[3]
STENT, Amanda, Rashmi PRASAD a Marilyn WALKER. Trainable Sentence Planning for Complex Information Presentation in Spoken Dialog Systems. In Proc. of the Annual Meeting of the Association for Computational Linguistics, 2004.
[4]
KILGARRIFF, Adam, Vít BAISA, Jan BUŠTA, Miloš JAKUBÍČEK, Vojtěch KOVÁŘ, Jan MICHELFEIT, Pavel RYCHLÝ a Vít SUCHOMEL. The Sketch Engine: ten years on. Lexicography. 2014, 1(1), 7-36. DOI: 10.1007/s40607-014-0009-9. ISSN 21974292. Dostupné také z: http://link.springer.com/10.1007/s40607014-0009-9
[5]
MILLER, George A. WordNet: A Lexical Database for English. Communications of the ACM. 1995(38), 39-41.
[6]
ESULI, Andrea a Fabrizio SEBASTIANI. SENTIWORDNET: A Publicly Available Lexical Resource for Opinion Mining. In Proceedings of the 5th Conference on Language Resources and Evaluation (LREC’06), 2006.
[7]
SANDERS, T. a H. PANDER MAAT. Cohesion and Coherence: Linguistic Approaches. Encyclopedia of Language. Elsevier, 2006, , 591. DOI: 10.1016/B0-08-044854-2/00497-1. ISBN 9780080448541. Dostupné také z: http://linkinghub.elsevier.com/retrieve/pii/B0080448542004971
[8]
HÜSKE-KRAUS, Dirk a H. PANDER MAAT. Suregen-2: Linguistic Approaches. Proceedings of the tenth conference on European chapter of the Association for Computational Linguistics - EACL
49
'03. Morristown, NJ, USA: Association for Computational Linguistics, 2003, , 215-. DOI: 10.3115/1067737.1067788. ISBN 1111567890. Dostupné také z: http://portal.acm.org/citation.cfm?doid=1067737.1067788 [9]
TINTAREV, Nava, Ehud REITER, Rolf BLACK, Annalu WALLER a Joe REDDINGTON. Personal storytelling: Using Natural Language Generation for children with complex communication needs, in the wild…. International Journal of Human-Computer Studies. Morristown, NJ, USA: Association for Computational Linguistics, 2016, 92-93, 1-16. DOI: 10.1016/j.ijhcs.2016.04.005. ISBN 1111567890. ISSN 10715819. Dostupné také z: http://linkinghub.elsevier.com/retrieve/pii/S1071581916300155
[10] WATTS, Nigel. Umění psát. Praha: Grada, 1998. ISBN 80-7169570-X. [11] NICHOL, Mark. Narrative, Plot, and Story [online]. [cit. 2016-0524]. Dostupné z: http://www.dailywritingtips.com/narrativepoint-of-view/ [12] CARD, Orson Scott. The 4 Story Structures that Dominate Novels [online]. 2010 [cit. 2016-05-24]. Dostupné z: http://www.writersdigest.com/writing-articles/by-writinggoal/write-first-chapter-get-started/4-story-structures-thatdominate-novels [13] Sketch Engine Masarykovy univerzity [online]. [cit. 2016-05-24]. Dostupné z: https://ske.fi.muni.cz/ [14] LOBO, Paula Vaz a David Martins DE MATOS. Fairy Tale Corpus Organization Using Latent Semantic Mapping and an Itemto-item Top-n Recommendation Algorithm: Proceedings of the Seventh International Conference on Language Resources and Evaluation (LREC'10). Valletta, Malta: European Language Resources Association (ELRA), 2010. ISBN 2-9517408-6-7. [15] Project Gutenberg [online]. [cit. 2016-05-24]. Dostupné z: http://www.gutenberg.org/
50
[16] SentiWordNet [online]. 2010 [cit. 2016-05-24]. Dostupné z: http://sentiwordnet.isti.cnr.it/ [17] SWAN, Michael. Practical English usage. Oxford: Oxford University Press, 1991. ISBN 01-943-1185-6. [18] KULKARNI, Girish, Visruth PREMRAJ, Sagnik DHAR, Siming LI, Yejin CHOI, Alexander C BERG a Tamara L BERG. Baby Talk: Understanding and Generating Image Descriptions. Stony Brook University, NY 11794, USA. [19] SCIgen [online]. [cit. 2016-05-30]. Dostupné z: https://pdos.csail.mit.edu/archive/scigen/
51
8
Přílohy
8.1 Kompletní výsledky 8.1.1
Příběh s úrovní náhodnosti 1
Once upon a time, there was a little boy. He was very poor and good. The boy was taking away, he had a magic wand. But there was also a dwarf. He was standing there, because he was yellow and wicked. They were in the great forest, when the dwarf warned the boy. The boy thanked the dwarf. The boy answered the dwarf. The poor boy waved the wand and it brought the dwarf back. Then a man called the boy. The boy grew up. The end. Story info: hero - boy, male; villain - dwarf, male; property - wand; surroundings - forest; random level – 1 2016-05-03 23:14 text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
8.1.2
Příběh s úrovní náhodnosti 2
Once upon a time, there was a beautiful princess. She was pretty little and young. The princess was seeing before, she had a white rose. But there was also a giant. He was taking away, because he was great and too big. They were in the magnificent palace, when the giant guarded the princess. The princess returned the giant. The princess heard the giant. The little princess gathered the rose and it got the giant back. Then a maiden answered the princess. The princess stood still. The end.
52
Story info: hero - princess, female; villain - giant, male; property - rose; surroundings - palace; random level – 2 2016-05-03 23:16 text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
8.1.3
Příběh s úrovní náhodnosti 3
Once upon a time, there was an young king. He was lord and high. The king was sending forth, he had a great sword. But there was also a step-mother. She was starving surely, because she was wicked and either unkind. They were in the royal castle, when the step-mother tried the king. The king took the stepmother. The lord king seized the sword and it failed the step-mother even. Then king delighted greatly. The king gave also. The end. Story info: hero - king, male; villain - step-mother, female; property - sword; surroundings - castle; random level – 3 2016-05-03 23:18
53
text dává smysl
text je gramaticky korektní 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
8.1.4
Příběh s úrovní náhodnosti 4
Once upon a time, there was a poor boy. He was only indian and little. The boy was seeing again, he had a rich treasure. But there was also a witch. She was giving gladly, because she was white and very wicked. They were in the native town, when the witch took the boy. The boy thanked the witch. The witch called the boy. The indian boy guarded the treasure and a knight replied the witch. Then a neighbour named the boy. The boy lay asleep. The end. Story info: hero - boy, male; villain - witch, female; property - treasure; surroundings - town; random level - 4 2016-05-03 23:22 text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
54
8.1.5
Příběh s úrovní náhodnosti 5
Once upon a time, there was a beautiful prince. He was very happy and poor. The prince was turning away, he had a royal crown. But there was also a wolf. He was eating heartily, because he was white and terribly hungry. They were in the large town, when the wolf kept the prince. The prince replied the wolf. The wolf met the prince. The happy prince felt the crown and it awaited the wolf there. Then a woman loved the prince. The prince returned here. The end. Story info: hero - prince, male; villain - wolf, male; property - crown; surroundings - town; random level - 5 2016-05-03 23:22 text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
8.1.6
Příběh s úrovní náhodnosti 6
Once upon a time, there was a good girl. She was very pretty and lovely. The girl was running quickly, she had a silver wand. But there was also a bear. He was getting up, because he was great and middle-sized. They were in the little garden, when the bear felt the girl. The bear brought the girl. The bear called the girl. The pretty girl lifted the wand and a man replied the bear. Then a chief sent the girl. The girl began instantly. The end. Story info: hero - girl, female; villain - bear, male; property - wand; surroundings - garden; random level - 6 2016-05-03 23:23
55
text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
8.1.7
Příběh s úrovní náhodnosti 7
Once upon a time, there was a handsome prince. He was very noble and poor. The prince was taking again, he had a diamond ring. But there was also a lion. He was lying asleep, because he was curly and daddy. They were in the flower garden, when the lion guarded the prince. The prince turned the lion. The lion saw the prince. The noble prince drew the ring and it fited the lion only. Then a violette loved the prince. The prince began already. The end. Story info: hero - prince, male; villain - lion, male; property - ring; surroundings - garden; random level - 7 2016-05-03 23:24 text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
56
8.1.8
Příběh s úrovní náhodnosti 8
Once upon a time, there was a beautiful princess. She was quite little and real. The princess was standing hardly, she had a poor rose. But there was also a dragon. He was disappearing entirely, because he was small and very old. They were in the village church, when the dragon replied the princess. The princess saw the dragon. The little princess found the rose. Then a man answered the princess. The princess opened wide. The end. Story info: hero - princess, female; villain - dragon, male; property - rose; surroundings - church; random level - 8 2016-05-03 23:25 text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
8.1.9
Příběh s úrovní náhodnosti 9
Once upon a time, there was a good mother. She was evening and sky. The mother was giving gladly, she had a black stone. But there was also a witch. She was hearing distinctly, because she was old and scorpion. They were in the country house, when the witch shouted the mother. The mother left the witch. The witch saw the mother. The evening mother rolled the stone and it struck the witch only. Then a none pleased the mother. The mother lived alone. The end. Story info: hero - mother, female; villain - witch, female; property - stone; surroundings - house; random level - 9 2016-05-03 23:44
57
text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
8.1.10 Příběh s úrovní náhodnosti 10 Once upon a time, there was an young queen. She was fairy and dear. The queen was consenting readily, she had a wondrous treasure. But there was also a dragon. He was drawing all, because he was red and even great. They were in the fine garden, when the dragon rushed the queen. The queen saw the dragon. The dragon replied the queen. The fairy queen guarded the treasure and a man beholded the dragon. Then a leg became the queen. The queen gave thus. The end. Story info: hero - queen, female; villain - dragon, male; property - treasure; surroundings - garden; random level - 10 2016-05-03 23:27
58
text je gramaticky korektní
text dává smysl 1
1
2
2
3
3
4
4
5
5
text je zábavný či zajímavý 1 2 3 4 5
59