Poem Visualizer

March 24th, 2023 12:35 PM

This project looks at how we can use word vectors aesthetically to analyze poems and to better understand the word vectors themselves.

Watch this video to see how stupid this project really is, or try it out for yourself here

The process of creating this was really quite the rollercoaster of emotions. Nothing really ended up how I expected it to, sometimes in good ways, sometimes in bad ways. The first hurdle was realizing that the word vector library I intended to use didn’t work at all, so I had to implement my own word vector handler. Then the next challenge was figuring out how to combine this vector handler with react and d3. None of this proved particularly difficult but was tedious yet fulfilling.

The main poem visualization turned out almost exactly how I wanted it to except for a couple expections. Some poems actually look like the conceptual drawing that I gave in my project proposal, although many did not because they would be stuck in concentrated hotspots of words. The trend analyzer, as cool as it may look, also wasn’t as useful as I had hoped it would be. This is mostly because the type of trends I was hoping to find aren’t really present in word vectors, especially at such low dimensionality. Ideally, if I had more time, I would use >50 dimensional word vectors for the trend graph to have a more accurate representation, but as of now, the trend graph doesn’t really display much. It simpy graphs how loosely related two terms are which may or may not be what you’re looking for. Opposite words tend to be close to each other in vector space because they are related terms, so it’s not really impossible to graph the sentiment of a poem over time using this method. A hateful poem would appear lovely because “hate” and “love” have almost the same exact vector representation.

I really enjoyed going through a bunch of different poems and trying to find ones that looked cool when visualized with this tool. It was also fun to think of unintended activities to use the tool for. Sometimes I would ask people to think of the two most unrelated words possible and see who could do the best. Other times, I would put in two people’s names to see how close they are (if they are soul mates).

If I were to do this project again, I would have at least 1 partner. I wrote over 1500 lines of code just to get the most basic version of my project working, but I imagine it could’ve been a lot cooler and more beautiful if I had 2 other people working on it. I would probably also do more research about word vectors to see what kind of things are even useful to visualize with them. I think my intuitions about word vectors were really put to the test, but maybe that was a good thing after all. In the end, I created a website that I’m proud of, even if it’s not the most useful tool in the world.