Very often, a company's biggest issues is the inability to grow and earn more revenue. By finding what consumers like and dislike about products and services, a company can gain valuable information about possible steps and paths for improvement in the future. Machine learning is one of the fastest growing skills to know, and implementing AI to automatically analyze the positives and negatives about a certain product or service they provide allows the company to grow faster. We decided to fast-track the guess work about if a consumer enjoys or detests a product by simply finding all relevant information on social media and analyzing their sentiments, as well as to provide an easy way for companies to analyze trends.

What it does

SocialSentiment is a webapp that utilizes Google Cloud's Natural Language API to quickly determine the sentiment of a social media post. Given a keyword it displays a graph that shows the distribution of posts along the sentiment magnitude. An average rating is calculated and displayed as an at-a-glance. The app was built for JetBlue but can be modified for a wider range of use.

How we built it

The front-end was built with the help of a template from Bootstrap and the back-end was developed with NodeJS, ExpressJS and Multer,. The main processing was performed by using Google Cloud\s Natural Language Processing. The data was visualized at the end using Charts.js. The webapp consists of two pages. One page allows for input of a keyword and a date range, and the next displays the summary of the data analyzed as well as a graph showing the distribution of ratings.

Challenges we ran into

This was the first time we've built a web app, so a lot of challenges were inevitable. One of the main ones was dealing with asynchronous code. We learned that because JavaScript is event-driven there are some processes that can run in parallel with one another, and one of these processes was sending data to the Google Natural Languages API. We had to learn about the ways we can use JavaScript to make sure a chunk of code doesn't run before it's wanted through the use of promises and callback functions.

Accomplishments that we're proud of

This project was two of the team member's first hackathon's and we successfully implemented our idea. There were a lot of challenges to overcome, and although it is incomplete, there was still a lot of stuff we learned and a lot of little cool things that we were able to make. One of the things we accomplished was taking the data from an API and generating the list of objects to analyze. Another was generating the graph from this information. One of the more major accomplishments was figuring out asynchronous code.

What we learned

Mostly we learned about JavaScript syntax and conventions. We learned about how to send GET and POST requests, how to send these requests to an API, and how to structure a Node.js project. We learned about how to deploy webapps on the Google Cloud App Engine platform, and how to handle asynchronous code. We also learned about how full stack development is used to build a web app, for example, through the use of Node.js and its modules to connect the front end to the back end.

What's next for SocialSentiment

What's next is cleaning up code, and adding more social media websites that can be scanned through. There are a lot of planned analysis features that didn't end up making it in, such as clicking bars on the graph to find a more detailed view of posts that fit that sentiment range, and sorting posts by both negative to positive sentiment or intensity of sentiment. There were also some planned search features that didn't make it in, such as varying the amount of samples to take. Another feature is to select which social media sites the user wants to browse. All these features would make the app easily scalable, which would be useful for a company like JetBlue to move into the future with.

Share this project: