Luminaria

Hardware: Oculus Quest 2
Software: Unity3D, Python, C#
Development time: 3 days
Luminaria is a playful experiment that uses several natural language processing techniques to generate random combination of ideas related to the art and tech world. I used a python script to scrape every blog post on the Creative Applications Network website and over 3000 tweets from the amazing MagicRealismBot in order to use Markov chain algorithms and Tracery to forge new interesting combinations of text. You can read more about the process, including code and examples below.
.
Process
Creative Applications Network

You can follow along with this notebook I made in Google Collab. I decided to gather all of the blog entry abstracts from the blog. You can identify them in the image below as the short abstracts of text you see below each title. After scraping the 147 entries, I made a CSV file out of them so I could take a better look.


I noticed most of the entries (or at least the ones I was interested in) followed a similar pattern. “X Name” is a “Y adjective” “Z New Media project”. I made a small diagram of it below.

Right away I thought this type of one-line format (after cleaning up the data a bit) would mix perfectly with Magic Realism Bot’s posts. So I took all of those and formatted them into a format acceptable by Spacy and to be processed with the Markov chain algorithm. I then proceeded to scrape tweets from the MagicRealismBot on Twitter.
Magic Realism Bot

I will not go into much detail about how I scraped it, since it is commented in the notebook. I obtained about 3200 tweets, which I took a screenshot of below.

Spacy, Tracery and the fun part
After having both my sources, I joined them into one CSV file. I processed the file using Spacy and Allison Parrish’s guide for corpus-driven narrative generation. The whole collection was about 4800 entries.
I also used a copy of Allison’s notebook. Using Spacy I identified entities, as well as actions, verbs, objects, and other linguistic items, which I used as input for Tracery.
I made a couple of tests to see how it would go. You can see some of the results below





You can see some of my favorites below:
“An interactive installation that facilitates collaboration between a human and a puddle of alcohol.”
Other remarkable examples:
A bisexual fisherman falls in love with the use of CCTV.
A professor reads a poem about an arduino that can destroy metaphysics.
A new life as a performance.
A theologian discovers that Wikipedia does not exist.
The dancer’s body is extended and manipulated as a tool to quantify the world.
An interactive installation and performance inspired by light rays traveling in a latent space of situations.
A project explores possible alternatives of how we experience the materiality of nature through the mediums of fiction.
Exploring behavior-based design systems that are self-aware, mobile, and self-structure / assemble.
To compensate for the lack of material I had from the Blog, I had to duplicate those entries several times, as well as some of the examples shown before. By the end it came out to a 3200(MRbot) vs. 1600 entries.(creativeappsnet + handpicked generated).
Output?
I came around this talk by Kate Compton (creator of Tracery) who lead the most enlightening discussion about procedural generation, and it dawned on me that I did not want to leave the output of this experiment only in text.
Through this VR experiment, I included several elements I became captivated by earlier this year. Such as the sense of waiting present in Epitaph, or the idea of spatial and environmental storytelling in Bitsy. I felt some of these generated ideas were brilliant in their own way, and deserved more attention that could not be afforded through a computer screen.
Ideally, each of these beams of light generate a set of ideas that vary in parameter values. Ideally, all of them could span a large area of the generation latent space. You would be able to walk to other beams of light and pick up some of these and keep them.
You can see how the quick prototype looked below.


