Flaksator – wprowadzenie

Zabawnie zbiegły się w jednym czasie interesujące okoliczności – Maciej Aniserowicz ogłosił kolejną edycję konkursu Daj się poznać, ja miałem ochotę wrócić do pisania a do tego odgrzebałem źródła jednego starego projektu – parodystycznego generatora tekstów piosenek black/death metalowych.

Zastanawiałem się jeszcze nad wznowieniem tworzenia Anonimizatora, ale póki co nie mam wystarczająco weny do tego – a bardziej zewnętrznej motywacji, ale głównie dlatego, że wznowiłem prace nad jeszcze innym, prehistorycznym projektem… Początkowo zastanawiałem się, czy nie pisać o niem, ale warunki konkursu (projekt open-source) go dyskwalifikują, mimo, że IMHO jest najciekawszy – ale to jest z założenia projekt o zamkniętym bazowym kodzie, za to otwarty na rozszerzanie. Ale pewnie i tak w jakiejś postaci prędzej czy później się tutaj pojawi 🙂

Tymczasem. Czym jest Projekt Flaksator? Jest to aplikacja oparta o moją wymyśloną (głównie) na jej potrzeby bibliotekę „Foneksator” do odmieniania części mowy przez przypadki, osoby itd. To nie miało być rozwiązanie do sprawdzania poprawności pisowni / gramatyki. Absolutnie. Założenie było takie by mając wybrany wyraz z bazy dostępnych słów zapisać go w potrzebnej odmianie. Za natchnienie posłużyły rozmaite prymitywne generatory białych wierszy i tekstów piosenek, ale bazujące jednak na sztywnych bazach wyrazów – a ja chciałem bardziej zróżnicowanych wyników. Poza tym było to całkiem zabawne, zwłaszcza po prowadzeniu do słownika wyrazów zupełnie od czapy.

Przykładowy wygenerowany tekst utworu:


[1.0] DARMOWY BLIŹNI
Wyjmuję miecz, robię zamach i mierzę w Ciebie,
To Twe ostatnie chwile, już za moment będziesz w niebie.
Chwyciłem mózg w dymającym smoczku,
Nadejdą dziś dziewicy polimorficzne fale.

(Refren)
W Twych duszach widzę tłuste gardło,
Dusząc Cię nie gryzie mnie jednak smoczysko.
Dostrzegłem ciało, doniczkę dziada,
Nie, nie zawiodę dziś mego doktora.
Już Cię widzę, jeszcze poranek, jeszcze frytka,
Ja już czuję jak bagno me się w Ciebie wbija.

Rzucasz mi się u nocy na ostrza o jęk mnie błagając,
Mnie to nie rusza, "Zginiesz jak Pan!" - krzyczę, trumną Cię przebijając.
Pancerz mroku w moich aparoskopiach,
Delektuje się w Twoich kaczuszkach.

(Refren)
W polnym odbycie dziś morduję,
skarbników, inkubów i inne śrubki.
Czuję Twój strach gdy ostrze me podąża wzdłuż Twej twarzy,
Woń flaków Twych, jelit, serca, płuc, podnieca mnie, ich dotyk parzy.
Rzucasz mi się u gnid na zwłoki o flak mnie błagając,
Mnie to nie rusza, "Zginiesz jak Yeti!" - krzyczę, lobotomią Cię przebijając.

Nastąpił świat zastanawiania,
Nadszedł już zew zabijania.
Jesteś w mej jatce, czas zmówić zielonego afrodyzjaku,
To już Twój zew, pochłonie Cię zombiaka kwiat.

Umywalki Twoje wezwały mnie,
Omamowi doktorowej nie powiem nie.
Znalazłem skrzep mojego wroga,
Wbiję go w łba mego sukuba.

Jakie są podstawowe problemy:

  1. Mimo bardzo dużej bazy szablonów wersów program z jakiegoś powodu i tak wybiera dość zawężony ich repertuar – wyraźnie widać to w wierszach drugiej zwrotki i refrenu
  2. Podobnie z bazą słów – generalnie jedne trafiają do wyników zdecydowanie zbyt często… Inne sporadycznie lub w zasadzie wcale…
  3. Aktualnie kod obsługuje wyłącznie rzeczowniki i przymiotniki. Swego czasu, 10 lat temu wymiękłem na etapie dodawania czasowników. Czemu dokładnie – to będzie tematem jednego z późniejszych postów.
  4. Najbardziej zaawansowana wersja aplikacji umożliwiała generowanie całych albumów, tego kodu nie udało mi się odnaleźć w archiwach.
  5. Do edytorów słowników dodałem opcję kategoryzowania wyrazów (ot np. by uniknąć wybierania słów generujących teksty rasistowskie lub antyreligijne – gdyby ktoś się tym przejmował – mimo, że wszystkie ważniejsze religie / grupy etniczne mają jednakową szansę na bycie obsmarowanym – kod jest bardzo sprawiedliwy i bezstronny pod tym kątem :-P) – ale to zupełnie nie działa, ani nie jest uwzględnione w bazie słów. Podobnie jak słowa abstrakcyjne, które są owszem – sucharowato zabawne – ale psują klimat
  6. Edycja rzeczowników się wywala – korzysta z nieistniejącego kodu. Bardzo dziwne, musiał się zagubić podczas ostatniego refaktoringu albo przenosin, może jest jeszcze do odzyskania. Ale zapewne i tak napiszę to od nowa.
  7. Niektóre wyrazy (np. kluczowy dla tematyki „Szatan”) mają odmianę niezgodną z pełnioną w zdaniu funkcją. Przez co niektóre zdania brzmią bez sensu. Czasami też występują obok siebie dwa rzeczowniki w różnych rolach – sporo kombinacji nie brzmi dobrze. W przykładowym tekście są to fragmenty „doniczkę dziada” oraz „zombiaka kwiat” – tu akurat poprawne, ale często tak nie jest. Trzeba to jakoś zaadresować.
  8. Ręczna edycja szablonów jest bardziej niż upierdliwa: Jest już za późno na Twoje {NC2N},<br>{1:NC1T} {NG2P} {NG2P} jest bowiem {1:A???E}. Trzeba coś z tym zrobić, zwłaszcza, gdy planuję rozszerzenie generatora o czasowniki i zaimki.
  9. „W łba mego sukuba” jest już totalnie uwalone – do poprawy. Albo odmiana zawiodła, albo szablon jest źle skomponowany
  10. Generalnie tytuły są generowane dość poprawnie, to z samymi tekstami są jazdy…
  11. Ale co najważniejsze – przestało być śmiesznie. A najczęściej jest żenująco. Tak być nie może!

Prawdopodobnie będę też chciał na nowo przepisać UI – zarówno edycyjne jak i użytkowe. Przy okazji zamierzam się przemóc i sprawdzić jak się pisze w ModernUI – nie będzie lekko, bo póki co odrzuca mnie swoją topornością. A potrzeby mam spore:

OldUi_Adjectives