Wpis z mikrobloga

Jak przy pomocy łańcuchów Markova stworzyć hybrydę Witkacego i Bukowskiego?

Okazuje się, że całkiem prosto. Łańcuchem Markova nazywamy system matematyczny, który "przeskakuje" z jednego stanu do drugiego stanu (może też "przeskoczyć do siebie") z określonym prawdopodobieństwem. Przykładowo, sygnalizacja świetlna ma trzy stany. Czerwony, pomarańczowy i zielony. Będąc w stanie "zielonym", sygnalizacja może albo pozostać w tym stanie, albo zmienić stan na "pomarańczowy", ale nie może przeskoczyć od razu na "czerwony" . Stąd system ten zawdzięcza człon łańcuch, gdyż można generować wiele takich przeskoków - ogniw łańcucha.

Jak to zaaplikować do wygenerowania wspomnianej hybrydy?

Weźmy zdanie "Kto ma zakola, ten ma problem.". Przeiterujmy po każdym słowie, prócz ostatniego, i wypiszmy wszystkie możliwe wyrazy, które po nim wystepują.

"Kto" -> "ma"
"ma" -> "zakola,", "problem."
"zakola," -> "ten"
"ten" -> "ma"

Stąd widać, że traktując słowo jako stan i będać przy "ten", nie możemy przejść np. do "kto". Jedyną możliwością jest słowo "ma". Z kolei z "ma", mamy dwie możliwości. Można tak w nieskończoność. Oczywiście, im większa baza tekstu, tym efekty będą ciekawsze. Można łączyć pisarzy, style, gatunki. Możliwości są ogromne, model ma wiele zastosowań. Następnym razem spróbuję wygenerować muzykę.

Poniżej jeden z wyników, na tapet wzięte "Kobiety" Bukowskiego i "Narkotyki..." Witkacego. Brzmi ciekawie ( ͡° ͜ʖ ͡°)

Ponura flota z diabłów, z tego wyjdzie, ale proporcjonalnie zbudowana. Najpiekniejsza jednak nie potrzebnej przykrości zamiast jej prawdziwego przezwyciężenia. W koncu zdecydowalem sie w dol rwaca kaskada. Stalem, nikt nie jest po to, aby odpocząć, musi być.


#ciekawostki #matematyka #statystyka #gruparatowaniapoziomu #nodejs #javascript #literatura
  • 18
@findesiecle: ciekawe. Chyba można powiedzieć, że podpowiadanie słów w klawiaturze telefonu działa na takiej zasadzie? Wybierając po sobie jedynie sugerowane słowa można uzyskać podobną mieszankę. Przykład:

Ciekawostka nr konta i dane do przelewu i tak nie stosuję się do wszystkich sieci Internet jest to najstarsze planetarium w Polsce i na co cierpiała dziewczynka z tym za bardzo nie robię tego co wiem
@irytacjaniebosklonu: Dokładnie. Nie wiem do końca, co się teraz dzieje pod spodem w tym podpowiadaniu, pewnie stosują jakieś lepsze agorytmy. Ale tak jak piszesz, jest to jak najbardziej możliwe. Model z czasem się uczy się Twojego stylu pisania - im więcej tekstu napiszesz, tym jest lepszy. I z czasem, dla danego słowa, wyświetla jako propozycję to, co pojawiało się po nim najczęściej ;)
@findesiecle: Kiedyś robiłem coś podobnego (tylko na podstawie większej liczby słów, np. że po "usuń konto" jest "zielonko"). Przetrawiając wielki zbiór notatek prasowych PAP i klasyków literatury też dostałem dobre kwiatki, aż sobie zapisałem na dysku:

Pozdrawiają was bracia, którzy przetrwali krótkie cierpienia prowadzące do zmonopolizowania rynku telewizyjnego przez jedną stronę

KK przyjęła także kodeks etyczny pt. "Unijne zasady pełnienia dyżurów w lutym tego roku - poinformował PAP Marek Pokrywka z
@findesiecle: Kuzyn pisał pseudoartykuły(na stronki do programów do pozycjonowania stron) za pomocą algorytmów. Tylko jego algorytmy były trochę głębsze, najpierw zbierały dane(zlepki słów w artykułach na dany temat itp) potem wypluwały teksty. Generalnie co drugie/trzecie zdanie miało nawet jakiś sens. ;)
Potem obniżył wymagania, tworzył zdania z zlepkami słów gdzie 3-4 słowa w głąb jakoś się łączyły. Drugi system miał już tylko jedną ogromną bazę danych, nie potrzebował ingerencji człowieka do
@findesiecle @kobra07: Dawno temu, czyli na studiach :), napisałem na zajęciach z programowania generator losowych zdań, który działał na troche innej zasadzie. Na wejściu dostawał gramatykę zapisaną w BNF-ie. Część produkcji określała składnię zdań (przy każdej produkcji mającej alternatywne gałęzie były podane prawdopodobieństwa, z jakimi algorytm ma pójść daną gałęzią), a część były to de facto słowniki definiujące zbiory słów używanych w tych zdaniach (np. co należy podstawić pod "rzeczownik", "czasownik"
@Marmite: Z tego, co się dowiedziałem (nie jestem żadnym ekspertem w tej dziedzinie), to łańcuch Markova może być przedstawiony za pomocą "finite automata", tylko spełniony musi być założenie Markova - proces przejść musi być losowy. Suma prawdopodobieństw przejścia z każdego stanu jest równa 100%, wliczać się w to może również możliwość przejścia "do siebie" - pozostanie w tym samym stanie. W tym przykładzie akurat (upraszczając), ze stanu "zielony" mam 50% na