Inspiration

Horoscopes are very vague and bizarre, which fits the slightly-gibberish output of Markov chain text very well.

What it does

Uses a custom Markov chain text generator to create custom horoscopes.

How I built it

The Markov Chain implementation is written from scratch, in Python 3. It actually keeps track of two chains: one produces slightly less predictable text, and the other produces obvious, predictable text. It is randomly decided which chain to read from for each generated word, making for natural-sounding output text.

The server is written in Flask (with Python 3), and the frontend is done just in standard HTML/CSS/JS.

Challenges I ran into

Calibrating the Markov chain implementation to produce something natural, without being too predictable and boring, was difficult. Getting the frontend and backend to work together correctly was also very challenging. Apache broke on us about a billion times. Not to mention the hundred or so sample horoscopes we had to write in order for the Markov chain to learn how to produce text.

Accomplishments that I'm proud of

The final text generation is quite natural-sounding, even occasionally making sense (mostly not).

What I learned

We learned a lot about frontend development, as well as dealing with Apache.

What's next for Markov Zodiac

Probably nothing.

Built With

Share this project:

Updates