fbpx
Menu Zamknij

Sztuczna inteligencja jako pisarz: Generowanie fabuły

sztuczna inteligencja jako pisarz

Dziś mam dla Was coś wyjątkowego.

Niedawno na blogu pojawił się ostatni wpis z cyklu “Jak maszyny piszą teksty” (link do pierwszego wpisu tutaj, jakby ktoś jeszcze nie czytał). Rozmawialiśmy o tym, co to są sieci neuronowe i na czym polega tworzenie przez nie tekstów, od swobodnej prozy do tłumaczenia. Wyjaśniliśmy sobie, że przede wszystkim są to modele statystyczne, które wyszukują najczęściej występujące po sobie sekwencje wyrazów i potem starają się je odtworzyć. Oczywiście, z takiego produkowania tekstu wyraz po wyrazie (albo nawet litera po literze) ciekawej powieści raczej nie będzie.

Jak się jednak dowiecie z dzisiejszego wpisu, są i takie programy komputerowe, które powoli pracują nad stworzeniem spójnej i interesującej dla czytelnika historii. Poniżej omawiam jeden z nich.

Słowem wstępu

Niedawno uczestniczyłam w konferencji o nazwie International Joint Conference on Artificial Intelligence (w skrócie IJCAI). Spotykają się tu wszyscy: badacze języka (tacy jak ja), ale również matematycy, logicy, programiści, spece od robotyki… Słowem wszyscy, którzy mają cokolwiek wspólnego ze sztuczną inteligencją.

Na konferencji wysłuchałam wielu ciekawych prezentacji, ale jedna z nich szczególnie zapadła mi w pamięć. Była to prezentacja Lary Martin, która wraz z kolegami i koleżankami pracuje nad stworzeniem programu, który potrafiłby generować fabułę ciekawej historii. Projekt jest bardzo fajny i uznałam, że na pewno chcielibyście o nim usłyszeć. Poprosiłam Larę o zgodę na omówienie ich artykułu na blogu i oto jest historia tego, skąd wziął się dzisiejszy wpis 🙂

Artykuł nosi tytuł Controllable Neural Story Plot Generation via Reward Shaping [Kontrolowane tworzenie opowieści za pomocą sieci neuronowych poprzez kształtowanie wzmocnienia]. Autorami są Pradyumna Tambwekar, Murtaza Dhuliawala, Lara J. Martin, Animesh Mehta, Brent Harrison i Mark O. Riedl. Artykuł dostępny jest tutaj, a strona internetowa Lary tutaj.

Opowieść jako zbiór wydarzeń

Zacznijmy od prostej koncepcji. Kiedy myślimy sobie o jakiejś książce lub opowiadaniu, tak naprawdę myślimy o pewnej sekwencji wydarzeń, która doprowadziła nas od punktu początkowego do punktu końcowego. Pisarze również są zachęcani do patrzenia na swoje teksty w ten właśnie sposób. Planując książkę, zastanawiamy się, co musi się stać z bohaterami i ze światem przedstawionym, żeby opowieść dobiegła pożądanego końca. Każde wydarzenie w powieści czy opowiadaniu powinno nas do tego końca przybliżać. Ponadto, wydarzenia powinny następować po sobie w logicznym porządku, czyli po prostu mieć sens jako całość fabuły.

Podejście naukowe

W ten właśnie sposób potraktowano opowieści w omawianym tu artykule. Każda opowieść została zdefiniowana jako sekwencja wydarzeń, która prowadzi nas od momentu bieżącego do momentu, w którym spełnione są nasze założenia. W tym projekcie moment docelowy oznaczał pojawienie się w historii określonego czasownika: marry (‘pobrać się’) albo admire (‘podziwiać’).

Dlaczego akurat te czasowniki? Ano dlatego, że Lara i jej zespół pracowali na zbiorze opowieści z dominującym wątkiem miłosnym 🙂 Ze zbioru streszczeń filmów (pochodzących z angielskiej Wikipedii) wybrali te, które można było określić mianem opery mydlanej. Więc ‘pobranie się’ jest oczywistym szczęśliwym zakończeniem. ‘Podziwianie’ może wydawać się trochę dziwne w tym kontekście, ale to tylko kwestia nomenklatury. Pod ‘podziwianiem’ kryje się tak naprawdę ‘zakochanie się’. To dlatego, że każdy czasownik oznaczający wydarzenie został uogólniony do swojego szerszego znaczenia zgodnie z klasyfikacją w VerbNet. No i tak się złożyło, że ‘zakochanie się’ podpada pod szerszą kategorię ‘podziwiania’ 🙂 Później wyjaśnię, dlaczego takie uogólnienie było konieczne.

Jak jednak sprawić, żeby nasza sekwencja wydarzeń była logiczna?

Historia musi mieć sens!

Tworząc opowieść, musimy ustalić sobie pewne ograniczenia fabularne. No bo wyobraźcie sobie historię, która wygląda tak:

  1. Maria pojechała do Indii.
  2. Weszła do basenu.
  3. Wypolerowała drewniany stół.
  4. Przekonała Baracka Obamę do zjedzenia marchewki.
  5. Zgubiła kolczyki.
  6. Odniosła wazon na miejsce.
  7. Sprzeciwiła się budowie knajpy.
  8. Zobaczyła trzy kruki.

Czy ta historia ma sens? Raczej nie. Na pewno znalazłby się ktoś, kto by ją napisał przy odpowiedniej motywacji, ale fabuła byłaby chaotyczna i niespójna. Dlatego właśnie w omawianym projekcie autorzy pracowali na zbitkach wydarzeń.

Zbitki wydarzeń

Jeśli ustalimy sobie, że opowieść stanowi sekwencję wydarzeń, to możemy sobie z tego policzyć kilka rzeczy. Na przykład to, jak daleko są od siebie dwa wydarzenia w tej sekwencji. Albo to, jak często dwa wydarzenia występują jednocześnie w różnych sekwencjach-opowieściach. To pierwsze nazwijmy sobie po prostu odległością, a to drugie współwystępowaniem. Na podstawie odległości i współwystępowania wydarzenia w opracowywanych streszczeniach zostały zgrupowane w coś, co nazywamy klastrami (clusters). Jest to pojęcie, które pewnie do niczego Wam się nie przyda w życiu, ale jak już mówimy o grupowaniu, to na wszelki wypadek postanowiłam je podać. Dla jasności, klaster to po prostu grupa podobnych do siebie elementów.

W przypadku tego projektu sąsiadujące ze sobą klastry zawierały wydarzenia, które często następowały w pobliżu siebie w opracowywanych streszczeniach filmów. Czyli odległość między nimi była mała, a współwystępowanie częste. Klastry wyglądały podobnie jak poniżej, oznaczone różnymi kolorami. Obrazek zapożyczyłam z prezentacji Lary. Jest on raczej ilustracją poglądową niż faktycznym przykładem, ale dobrze pokazuje, co zrobiono. Jak widać, klastry można przedstawić jako kręgi schodzące się w środku do czasownika docelowego, oznaczone literką C i kolejnym numerkiem.

klastry czasowników

W ten sposób dla każdego wydarzenia mamy określoną grupę wydarzeń, które mogą po nim nastąpić. Zilustrowałam to poniższą historią. Na każdym etapie wybrane wydarzenie jest pogrubione, a etap kolejny zawiera klaster wydarzeń, z których można sobie wybrać, jak fabuła rozwinie się dalej.

  1. Maria pojechała do Indii.
  2. Zobaczyła słonie/zrobiła sobie tatuaż z henny/poszła na targ.
  3. Kupiła kolorowe sari/wpadła na przystojnego nieznajomego/podziwiała stragany z egzotycznymi owocami.
  4. Umówili się na randkę/przeprosiła go i poszła dalej/dostała od niego kwiaty.
  5. Wypili trzy drinki w barze/spacerowali w parku/jeździli na słoniach.

Ta historia już bardziej trzyma się kupy. Choć brakuje nam szczegółów – na przykład tego, co działo się od momentu wyjścia z samolotu do momentu pójścia na targ – to fabuła wydaje się być w miarę spójna i zmierzać do czegoś konkretnego. Dlatego właśnie na historie generowane przez omawiany tu program komputerowy zostało nałożone ograniczenie, że następne wydarzenie w sekwencji powinno pochodzić z puli wydarzeń w kolejnej zbitce.

A jak w ogóle produkujemy sekwencję wydarzeń? Tutaj wracamy do podstaw, czyli do naszych sieciowych modeli języka.

Model dla wydarzeń

O modelach językowych mówiliśmy sobie w jednym z wpisów z cyklu “Jak maszyny piszą teksty”. W skrócie: były to rekurencyjne sieci neuronowe, które potrafiły produkować sekwencję słów. Ta sekwencja z kolei układała się w zdania. Wyjaśniliśmy sobie też, jak taki model działa. Powiedzieliśmy, że przerabia on ogromne ilości tekstów, na podstawie których uczy się kolejności słów. Najpierw oblicza sobie prawdopodobieństwo wystąpienia określonej sekwencji wyrazów. Potem, przy produkcji tekstu, stara się to prawdopodobieństwo zmaksymalizować, czyli wybrać najbardziej prawdopodobną sekwencję.

Jeśli nie jest dla Ciebie do końca jasne, jak działa rekurencyjna sieć neuronowa, zdecydowanie zachęcam najpierw do poczytania cyklu “Jak maszyny piszą teksty”. W niniejszym wpisie będę używała tych samych pojęć i oznaczeń, które się tam pojawiły.

Wyobraźmy sobie model dla sekwencji wydarzeń. Dla przypomnienia, taka już wytrenowana sieć rekurencyjna mogłaby wyglądać na przykład jak niżej:

model wydarzeń

Do pierwszego pudełka wsadzamy nasze zwyczajowe niby-dane, a potem czekamy z założonymi rękami na produkcję sekwencji wydarzeń. Element <EOS> oznacza w tym wypadku coś w rodzaju end of story, czyli końca produkcji.

Jednak sieć stworzona przez Larę i jej zespół wyglądała trochę inaczej. Jej działanie zostało dokładniej opisane w jednej z ich poprzednich publikacji. Ta konkretna sieć wykorzystała omawiany już przeze mnie model enkodera-dekodera, który został zapożyczony z innych badań. Wiemy więc, że zarówno dane wejściowe, jak i dane wyjściowe były jakąś sekwencją. I to właśnie sposób ustalenia tej sekwencji jest tu nowością. Otóż danymi wejściowymi był czasownik oznaczający wydarzenie oraz wszystkie podrzędne mu elementy, takie jak podmiot czy dopełnienia. Danymi wyjściowymi był inny czasownik wraz z przyległościami. Konkretnie kolejność wyglądała tak: czasownik – podmiot – dopełnienie bliższe – dopełnienie dalsze. Jeśli któregoś z dopełnień nie było, miejsce pozostawało puste i było zaznaczone specjalnym pustym elementem (na rysunku poniżej jest to <puste>).

enkoder-dekoder dla wydarzeń

Wspomniałam już o zbiorze streszczeń filmów, z których każde zostało zamienione na ciąg wydarzeń. Możemy sobie z tego ciągu wybrać pary wydarzeń, gdzie drugie następuje po pierwszym. I właśnie takie pary posłużyły do trenowania modelu. Danymi wejściowymi zawsze było wydarzenie numer jeden, a danymi wyjściowymi kolejne wydarzenie. Enkoder-dekoder uczył się, w jaki sposób tworzyć reprezentację pośrednią tak, żeby pasowała do jak największej liczby wydarzeniowych par. Potem ten mały wytrenowany model można było powielić i połączyć w łańcuch podobny temu jak na pierwszym obrazku. Czyli wprowadzamy wydarzenie numer 1, z enkodera-dekodera dostajemy wydarzenie numer 2, które potem wprowadzamy jako dane wejściowe do kolejnej kopii modelu, otrzymujemy wydarzenie numer 3… i tak dalej aż do końca historii.

Tutaj właśnie chciałabym wyjaśnić, dlaczego czasowniki docelowe zostały uogólnione. Konkretnie: dlaczego zamiast zakochać się trzeba byłu użyć podziwiać? Ano dlatego, że model nadal jest statystyczny. Patrzy na pary występujących razem czasowników i uczy się, które współwystępują najczęściej. Jeśli nie wprowadzimy uogólnienia, to w danych treningowych będziemy mieli mnóstwo drobnych czasowników o wąskim znaczeniu, które będą pojawiać się razem w parach stosunkowo rzadko. Jeśli jednak je uogólnimy, to te uogólnione czasowniki pojawiać się będą częściej, bo wiele drobnych czasowników zostanie sprowadzonych do tej samej postaci. A jeśli coś pojawia się częściej w treningu, to lepiej można się tego nauczyć. My jako ludzie też wolimy przyswoić sobie kilka ogólnych zasad niż mnóstwo drobnych reguł i ich wyjątków. Dzięki uogólnieniu trening był więc skuteczniejszy.

Ale można zrobić jeszcze coś, żeby pomóc sieci w uczeniu się!

Wzmacniamy trening

drugim wpisie z cyklu “Jak maszyny piszą teksty” mówiliśmy sobie o tym, że sieć neuronowa uczy się poprzez wielokrotne obliczanie błędu i modyfikowanie swoich parametrów tak, żeby ten błąd wychodził jak najmniejszy. Te obliczenia nazywamy funkcją kosztu (cost function) lub funkcją straty (loss function). Sieć stara się, żeby strata/koszt były minimalne. To jest jej najważniejszy cel i definiuje on cały proces uczenia się.

Poprzez manipulowanie funkcją kosztu możemy więc manipulować procesem uczenia się sieci. Jednym z takich sposobów na manipulację jest uczenie ze wzmocnieniem (reinforcement learning). W skrócie polega ono na tym, że zmieniamy troszkę funkcję kosztu. Jeśli założymy, że koszt jest mały dla wyników, które chcieliśmy otrzymać, a duży dla wyników błędnych, to możemy jeszcze powiększyć tę różnicę. Możemy dać sieci nagrodę (reward) jeśli dostaniemy od niej pożądany wynik. Nagrodą jest zaś zmodyfikowanie obliczeń tak, żeby dla pożądanych wyników koszt ten był jeszcze mniejszy. Analogicznie, dla wyników błędnych koszt rośnie w porównaniu z wersją niezmienioną.

W omawianym dziś projekcie funkcja kosztu została zmodyfikowana poprzez włączenie w nią informacji o odległości i współwystępowaniu wydarzeń. Ta odległość była mierzona między wydarzeniem, które wyprodukowała sieć na danym etapie, a wydarzeniem docelowym, czyli ‘pobraniem się’ lub ‘podziwianiem’. Im bliżej siebie były te wydarzenia i im częściej wydarzenie wyprodukowane poprzedzało wydarzenie docelowe w streszczeniach filmów, tym większa była nagroda. A im większa nagroda, tym bardziej malał wyliczony koszt. Dzięki temu sieć uczyła się, jak generować łańcuch wydarzeń tak, żeby historia była spójna i sensowna. Obliczenia nagrody robiono na każdym etapie generacji, czyli dla każdego wydarzenia w danych wyjściowych.

Eksperymenty

Dane z korpusu streszczeń filmów zostały podzielone na dwie części. 90% tekstów zostało użyte do trenowania sieci, a pozostałe 10% do testów. Jak już wspomniałam, sieć była trenowana na parach następujących po sobie wydarzeń z korpusu treningowego.

Wydarzenia z korpusu testowego posłużyły zaś do sprawdzenia, czy nauka się powiodła. Z każdej historii z korpusu wzięto pierwsze wydarzenie i wprowadzono je do sieci jako dane wejściowe, a potem sieć miała produkować łańcuch kolejnych wydarzeń. Generacja kończyła się, jeśli został spełniony któryś z trzech warunków:

  • sieć wyprodukowała wydarzenie docelowe (‘pobrać się’ lub ‘podziwiać’);
  • sieć wyprodukowała element <EOS> oznaczający koniec produkcji;
  • sieć wyprodukowała już 15 wydarzeń pod rząd.

Trzy modele

Do eksperymentów wykorzystano trzy sieci neuronowe.

Pierwsza sieć (Seq2Seq) to prosty model dla wydarzeń. Dostawał jakieś zdarzenie i na podstawie obliczonych prawdopodobieństw wybierał kolejne. Ten model nie posiadał żadnych ograniczeń; nie miał też zaimplementowanego wzmocnienia. Był trenowany na szerszym zbiorze tekstów, którego częścią był korpus streszczeń romansów. Tutaj zastosowano go głównie dla porównania z nową metodą implementowaną w dwóch pozostałych modelach.

Model drugi (Unrestricted) korzystał ze wzmocnienia. Bazą dla niego był Seq2Seq, ale Unrestricted został dodatkowo jeszcze raz przetrenowany tylko na omówionym tu korpusie streszczeń filmów romantycznych.

Model trzeci (Clustered) korzystał ze wzmocnienia, był trenowany podobnie jak Unrestricted oraz posiadał takie ograniczenie, że na każdym etapie produkcji musiał przestrzegać zasad dotyczących zbitek/klastrów wydarzeń. Załóżmy, że czasownik z danych wejściowych należy do klastra o numerze n. Wtedy czasownik wyprodukowany jako kolejny w danych wyjściowych musiał należeć do klastra kolejnego, czyli o numerze n+1. Żadne inne czasowniki nie były brane pod uwagę.

Wyniki

Poniższa tabela obrazuje wyniki dla wszystkich modeli oraz dla korpusu testowego pod względem zakończenia historii czasownikiem docelowym, stopnia różnicy z korpusem testowym oraz średniej długości wyprodukowanych historii mierzonych w wydarzeniach. Najlepsze wyniki są pogrubione.

wyniki eksperymentów

Co wynika z tabeli? Przede wszystkim tyle, że model Clustered wypadł najlepiej. Osiągnął zamierzony cel w ponad 90% przypadków! Metoda opisana w artykule okazała się tym skuteczniejsza, że przecież model Clustered uczył się na korpusie romansów, w którym – jak widać w tabeli – ślubem albo zakochaniem się kończyła się średnio jedna czwarta tekstów (korpus testowy i treningowy są podobne pod względami statystycznymi). To oznacza, że metoda wzmacniania treningu oraz grupowania czasowników w klastry przyniosła rezultaty. W dodatku Clustered calkiem dobrze odwzorował korpus testowy, bo miał niski stopień różnic (perplexity). Tu trzeba jednak przyznać, że Seq2Seq nie był dodatkowo trenowany na korpusie romansów, więc oczywiste, że nie poradził sobie w tym względzie aż tak dobrze.

Clustered tworzył też najkrótsze historie – krótsze nawet niż w korpusie testowym! To oznacza, że jego opowieści szybko i skutecznie zmierzały do celu, czyli do odpowiedniego czasownika. Unrestricted, którego nie ograniczały klastry wydarzeń, poradził sobie gorzej. Równie dobrze odzwzorował korpus, ale jego historie były dłuższe. To dlatego, że czasem zdarzało mu się odjechać z historią, bo w końcu mógł mieć nieograniczoną wyobraźnię 😉 W dodatku brak reguł klastrów sprawił, że Unrestricted mógł polegać tylko na tym, co wyczytał w korpusie treningowym. A w tym korpusie czasowniki docelowe występowały rzadko, więc tak samo Unrestricted rzadko je produkował.

Warto też powiedzieć, że wszystkie historie utrzymywały się w rozsądnej długości. Gdyby były za krótkie, to by oznaczało bezsensowne przeskakiwanie od razu do wydarzenia docelowego. Gdyby były bardzo długie – zakładając, że nie ucięlibyśmy generacji po 15 wydarzeniach – to z kolei mielibyśmy pewnie wyższy współczynnik osiągnięcia celu (bo prawdopodobnie w którymś momencie to pobranie się czy zakochanie się by wypadło), ale opowieści ocierałyby się o grafomaństwo. Długość około 7 wydaje się być w sam raz.

Sprawdzone ludzkim okiem

Wiadomo jednak, że najlepiej dać takie historie do przeczytania ludziom i zobaczyć, co na ten temat sądzą. Lara i jej zespół zatrudnili więc 26 osób, które przetłumaczyły ciąg wydarzeń z z maszynowego na ludzki. Konkretnie to ułożyli historię na podstawie wygenerowanej przez sieć sekwencji wydarzeń. Nie mogli zmieniać kolejności wydarzeń, pominąć żadnego z nich, niczego dodać ani podstawić innych czasowników. Chodziło tylko o to, żeby do ewaluacji przygotować opowieści jak najbliższe tym stworzonym przez człowieka, a jednocześnie wierne wersji maszynowej. Dzięki temu pod ocenę można było podać nie błędy gramatyczne czy styl pisania, lecz samą treść historii.

Z wyprodukowanych historii wybrano 5 dla modelu Seq2Seq, 5 dla modelu Clustered oraz 3 z korpusu testowego dla porównania. W obrębie jednego modelu było to 5 lub 3 różnych wydarzeń początkowych. Jednak każde z tych wydarzeń początkowych było obecne w każdym z trzech modeli. Czyli dowolne wydarzenie X było jednym z pięciu dla modelu Clustered, jednym z pięciu dla modelu Seq2Seq i jednym z trzech dla korpusu testowego. Każda historia miała długość 5-10 wydarzeń. Wszystkie historie wyprodukowane przez model Clustered kończyły się jednym z czasowników docelowych.

Poniżej znajdziecie kryteria oceniania historii. Miały one formę zdań oznajmujących. Przy każdym stwierdzeniu trzeba było określić, jak bardzo jest ono zgodne z własną opinią na skali od 1 do 5. W praktyce średnie oceny otrzymane przez wszystkie modele wahały się od 2 do 4. Opowieści były oceniane przez 150 ochotników.

  1. Opowieść jest poprawna gramatycznie.
  2. Wydarzenia w opowieści mają wiarygodną kolejność.
  3. Każde zdanie opowieści ma sens w kontekście zdania je poprzedzającego i zdania następującego po nim.
  4. Opowieść nie zawiera powtórzeń.
  5. Opowieść jest napisana ciekawym językiem.
  6. Opowieść ma wysoką jakość.
  7. Opowieść jest przyjemna w odbiorze.
  8. Opowieść przypomina mi operę mydlaną.
  9. Fabuła opowieści jest spójna.

W tych badaniach jednak nie wszystkie wyżej wymienione oceny były potrzebne. Stwierdzenia dotyczące gramatyki, ciekawego stylu oraz powtórzeń zostały zachowane raczej pro forma, ale nie miały znaczenia dla konkluzji prowadzonych badań. To dlatego, że tym razem historie nie były spisane przez komputer, a przez człowieka.

Oczywiście okazało się, że teksty pochodzące z korpusu testowego miały najbardziej wiarygodną kolejność wydarzeń. Ponadto najczęściej były postrzegane jako opery mydlane. Nie jest to zaskakujące; korpus zawierał przecież streszczenia napisane przez użytkowników Wikipedii na temat konkretnych filmów z dopracowaną fabułą.

Korpus testowy przeszedł jednak ewaluację tylko dla porównania. Najważniejsze było to, czy wystąpią różnice pomiędzy opowieściami produkowanymi przez dwa modele neuronowe. No i wystąpiły. Model Clustered wypadł lepiej niż Seq2Seq w kwestiach wiarygodnego porządku wydarzeń, spójności fabuły oraz sensowności w kontekście sąsiednich wydarzeń. To ostatnie wprawdzie tylko trochę, bo różnica nie była istotna statystycznie, ale jednak. Podobnie statystycznie nieistotne okazały się przypadki, gdzie Clustered wypadł gorzej niż Seq2Seq. Tak więc okazało się, że wprowadzenie wzmocnienia treningu oraz ograniczeń w postaci klastrów wydarzeń skutkuje lepszą opowieścią niż po prostu pozwolenie modelowi na produkowanie ciągu wydarzeń według samego prawdopodobieństwa.

Biorąc pod uwagę wszystkie wyniki omówione w tej sekcji, eksperymenty zakończyły się sukcesem.

Podsumowanie

Jak widać, maszyny potrafią pisać nie tylko teksty. Piszą również całe historie! Czy oznacza to, że niedługo będą potrafiły samodzielnie pisać książki o spójnej, ciekawej fabule? Raczej nie. Choć modele przedstawione wyżej radziły sobie całkiem nieźle z produkowaniem sekwencji wydarzeń, to nadal nie potrafią sklecić całkowicie sensownej historii. Popatrzmy na przykład z modelu Clustered, przetłumaczony na język ludzki:

Mój kuzyn zmarł. Aleksander nalegał na wizytę. Aleksander ją spotkał. Barbara współczuła Aleksandrowi. Przytulili się. Zebrani rozjechali się na Hawaje. Wspólnota pamiętała ich wycieczkę. Okradli zgraję. Podziwiali imprezę.

Jak widać, historia ma potencjał i kończy się czasownikiem docelowym (‘podziwiać’), ale nie jest do końca dopracowana pod względem fabuły. A przecież sama fabuła to jeszcze nie wszystko. Przypominam, że zdania opowieści wyszły spod rąk ludzkich. Komputer musiałby więc nauczyć się nie tylko tworzyć fabułę, lecz także przekładać ją na poprawne stylistycznie zdania. I to nie tak, że jedno zdanie opisuje całe wydarzenie – bo kto chciałby czytać opowieść składającą się z 20 lakonicznych zdań, które nie podają nam żadnych szczegółów? Wydarzenia powinny być więc rozwinięte w całe akapity lub nawet rozdziały. To na razie jest umiejętność, którą posiada tylko człowiek.

Więc po raz kolejny mówię: pisarze, nie martwmy się sztuczną inteligencją. Na razie nam wcale nie zagraża. Gdyby jednak kiedyś takie badania zakończyły się sukcesem, to zyskalibyśmy partnera w kreatywnym pisaniu, który mógłby nas wspomagać zamiast być dla nas konkurencją. Tak przynajmniej uznała Lara. Więc kto wie, może jednak powinniśmy wyczekiwać pisarskiej sztucznej inteligencji 😉

Podziel się tym wpisem w mediach społecznościowych

Powiązane wpisy

Dodaj komentarz

avatar
  Powiadamiaj o  
Powiadom o

Powrót do góry strony