We were fascinated by the polarizing effects of media echo chambers and believed people deserved to have a more holistic consumption of the news. We also thought readers should be better informed on political leanings, sentiments, and trustworthiness of their articles.

What it does

Dialectic puts together a collection of trending headlines and aggregates relevant articles from various sources with different political leanings. Political leanings and sentiments are displayed under each article title. It also puts together unbiased summaries of each current event after analyzing articles from various sources about the same event.

How we built it

We built the backend in Go and the frontend in Swift. We used News API to source trustworthy articles scattered throughout the political spectrum. We built our own parser to grab content from news articles. We used Python's Natural Language Toolkit library for sentiment analysis on news articles. We used Python's NetworkX library to identity "important common sentences" and generate our summaries.

The text summarization feature was implemented through a text rank. We pulled multiple articles from across the political spectrum for each topic, broke down each article into sentences (which became vectors), compiled all the sentences, and then compared each sentence to every other sentence, giving each sentence a rank based on how similar they are to the other sentences (the edges that connected the vectors). The final generated "objective" summary is the sentences that have the highest similarity rank.

Challenges we ran into

We found Swift development to be frustrating due to the lack of examples and documentation for the features we we're trying to implement.

Accomplishments that we're proud of

Our news aggregating algorithm isn't too bad!

What we learned

Don't try to tackle too many features all at once. And do more research before diving into the development! (We found an API that may have been better for our use case.)

What's next for Dialectic


Share this project: