Inspiration

With so much happening right now such as the pandemic and protests and riots, there is a lot of information going around, not all of which can be said to be accurate. There are still misconceptions going around for things that were previously proven false by credible sources, and our job is to make it as easy and quick as possible to know what being said is true or false. Going to Twitter, the YouTube comments section, or any other platform that involves user opinion creates a lot of misinformation. For example, I was reading through a YouTube comment thread involving a debate, and people were constantly making new claims. Right when a new claim was made, however, people were quickly corrected on their misinformation. With Rapid Rebut, never again will anyone have to check if an argument is false. Our Chrome extension will mark up a page with any rumors, misconceptions, and false information so that you know that you are getting the most reliable information.

What it does

Rapid Rebut is a Chrome extension that will mark up a page, highlighting in red any rumors, false information, and misconceptions. By hovering over this false information, you can see the reason for why the information is wrong, and by clicking on the highlighted portion, you will be brought to a credible article disproving the false claim.

How we built it

The chrome extension itself is created in JavaScript and JSON. It separates the text of the body into an array of sentences, sends a request to a Flask app on the hosted machine. We created a MongoDB database that stores rumors, corrections, sources that disprove the rumor, and the InferSent sentence embedding of the rumor. The embeddings of the rumors are stored in a K-Dimensional Tree for quick access. When the Flask API gets sentences to fact-check, it gets it corresponding embedding and uses the K-Dimensional Tree to get the rumors closest to that embedding. If the distance between the sentence and the closest rumor is below a certain threshold, the API sends back a JSON containing the rumor, correction, and link to correction. The non-rumor entries are just sent back as false booleans. The JavaScript program must then backtrack, using a given sentence to first find an element, and then surrounding the specific sentence with new tags to not include the entire element.

Challenges we ran into

One challenge that we ran into was connecting the extension and the Python. We wanted to integrate different parts, but we were unfamiliar with how the connection would be, so that too a while. Although we never used it, we also wanted to integrate MongoDB Atlas in some way, so we used that as our database. Setting up this database was challenging at first, but after figuring out how to use it, we feel that it will serve as a great tool for the future and we are glad that this hackathon informed us of such a good database service. Another challenge was accurately giving a similarity score and finding a good threshold which took a lot of experimentation with different types of sentences. Also, with the extension itself, it took a while to figure out a good way to backtrack and find an element based on a sentence, and then to use that given element to put mark and link tags around the given sentence. In the end, despite these challenges, we figured it all out and finished the project.

Accomplishments that we're proud of

We are proud of completing a Chrome extension and being able to connect that with Python when we had never created a Chrome extension before. On top of that, in the back-end, there were also new things. We needed to use new libraries and techniques to create a similarity score, and we also needed to figure out how to use MongoDB Atlas for the first time. In general, we are proud that the components connected this well and that this tool makes it easy to find false information. We learned a lot of new concepts about extensions and document-based databases that we will use in future hackathons!

What we learned

Through this project, we learned a lot. We created a Chrome extension for the first time, learned more JavaScript when we were not super comfortable with it, were able to connect the Chrome extension with Python when we lacked knowledge on doing this beforehand, were able to create similarity scores based on different sentences, and were able to learn and use MongoDB Atlas. Overall, I feel that this hackathon was a great learning experience and allowed us to improve upon old skills and gain new ones.

What's next for Rapid Rebut

We can see a lot for the future of Rapid Rebut. For one, we would like to officially publish this extension to the Chrome store so that it is quick and easy for anyone to access. This is especially important during these current events with misinformation spreading rapidly. We would also fix it so that it wouldn't impact a website's JavaScript. This would make it more user-friendly and compatible with social media sites. We would also like to keep growing our database and even automate it in the future using what we term to be credible sources.

Built With

Share this project:

Updates