People have always said that humanities and STEM are very different. STEM searches for one correct answer, while humanities explores the endless truths that are found in writing. This has created a mentality of segregation between the two fields. However, we wanted to show that they are not very different after all by creating an application that can study literature in a systematic way. By doing so, we hope to break down the barrier between these two studies and advance humanity's efforts in the pursuit of knowledge in new ways.
What it does
Dialectic Materializer takes in a passage of text, and then systematically applies strategies of close-reading analysis to the text in order to interpret its meaning. One thing that this application specifically looks for in the text is the appearance of binary oppositions, which give insight into the conflict buried between the lines. The application matches the text against a built-in library of antonyms through a partial-match algorithm (so that words such that happy and happiness match to the same concept). The application also looks for appearances of words that trigger specific emotions, such as "chill" or "shudder," and report the overall mood of the text based on the frequencies of these emotionally-charged words. Furthermore, this application also supports voice-input of passages, and the same algorithms used for close analysis of text can be used directly to analyze movie scenes and daily conversations, even help psychiatrists and other doctors who practice narrative medicine to help understand their patients better. Lastly, this application also matches the words in the passage against the common words in the English language, again through a partial match, and it supplies the definitions for the uncommon words that do not appear in the list of common words.
How we built it
This application has many components. Firstly, the analysis of the passage is conducted by a program hosted on a Heroku server written in C++. Next, the C++ application is called upon by a Python script, also hosted online. The front-end of the website, written in HTML and CSS, is hosted across both Amazon Web Services and Heroku in order to link the two services together. Furthermore, the Python script is hosted with Flask and employs Beautiful Soup and Selenium to scrape online dictionaries and thesauri for definitions and antonyms, respectively. Finally, the Python script also integrates with Google's speech API to generate text from speech to use as input.
Challenges we ran into
One challenge that we ran into was finding a way to put the different skillsets of the members of the team to work. One of us is good at C++, Java, and algorithms, while the other is good at servers, web dev, and Python. Breaking the project into two distinct portions and linking these two on a Linux-based server was how we made use of our strengths. Another challenge that we ran into was memory usage. Because it was being hosted on a server, the amount of available memory is a lot smaller, so we had to modify our program in order to conserve memory.
Accomplishments that we're proud of
We are very proud of being able to solve the unexpected memory insufficiency challenge that was brought before us. Having always been programming without too much consideration for memory usage, this provided an opportunity to solve a challenge that we have never met before. Finding ways to optimize memory usage was very rewarding, since it forced us to use a lot of knowledge that we had learned but had never applied before. Overall, we are very proud to have overcome this challenge. Another thing that we were proud of was writing a cross-language application of this scale. Typically, cross-language development uses languages that complement each other directly, such as HTML and SQL, but C++ and Python do not have too much in common, but working together we were able to find a way to make these puzzle pieces fit together.
What we learned
We definitely learned a lot more about the Linux operating system after completing this project. Being forced to work in a Linux environment was something out of our comfort zone, but in exchange we gained a lot more insight into something we had be so foreign to before this hackathon. We also learned a lot about the large variety of packages available for us to use. Discovering the Google Speech API and learning how to used it helped make our project a lot more interesting and useful for the world.
What's next for Dialectical Materializer
We will continue to work to expand Dialectical Materializer's functionality. Next, we can focus on identifying specific syntactic structures, such as anaphora, epistrophe, anadiplosis, etc, that bring additional meanings and interpretations to the text. We will also try to add natural language production to the program so that it can create sentences that can be used to explain the passage to a curious reader. We envision Dialectical Materializer to be a bridge between the humanities and the sciences, and we will continue to work toward that goal.