Understand social sentiment helps companies to better understand the consumer’s feeling towards their product or their brand. This sentiment monitoring tool gives users insights about how the public feels in regards to their business and topics of interests. A company’s Public Relationship Department can utilize the tool to find the root of the problem and revise a plan to correct the negativity. Additionally, users can also analyze the social sentiment of the competitors, and develop a more innovative way to change how public reflects on their brand.
What it does
SentiView is a social media sentiment analytic tool that helps users to gather people’s opinion the hottest topic on Reddit. It uses the AI and Machine Learning algorithms from Amazon Web Services to analyze how the public perceive a topic on Reddit submissions. Users may search a topic and hit the process button to have the backend gather the hottest Reddit submissions. Users may monitor the overall statistics under the STAT tab. Users may also view sentiment performance on the individual comments. If you are lazy to read, you can click the audio button to have the AWS Polly service read the comments for you.
How I built it
The entire backend is written in Serverless using AWS lambda and API Gateway. When a user clicks the process button, a lambda function gathers its hottest submissions using the Reddit PRAW API, and notify other lambda functions to start the sentiment analysis and the audio generation over SNS. The results were stored in DynamoDB tables, and the audio file is stored in S3. When the user clicks the show button, the pre-processed data are then pulled from the DynamoDB.
The frontend is written in React.js, React-Bootstrap, React-Sound, and Chart.js, and the web app is hosting on Amazon Simple Storage Service.
Challenges I ran into
It's difficult to debug with a backend that is completely written in serverless, especially when you have multiple lambda functions running asynchronously. I ended up using the CloudWatch extensively to bug track what was causing the problem. Also, because I did not want to spend extra money on a project for fun, I ended up limiting the read/ write capacity of DynamoDB to be extremely low, and reduced the time frame for the audio generation lambda function to be only 30 seconds. This means the backend process performance has been dropped significantly, and some of the audio may just not working. However, those parameters are adjustable and the backend should be able to be scaled horizontally easily.
Accomplishments that I'm proud of
I started learning AWS less than 4 months ago but has become capable of architecting, developing, and operating the basic AWS services. I made the entire backend architecture, developed the entire frontend, and managed the entire software from start to end during the past three months. This is a really valuable experience that helps me advance my career in full stack web development.
What I learned
Amazon Comprehend, AWS Polly, Lambda, SNS, React.JS, Chart.JS
What's next for SentiView
Possibly use Elastisearch in the backend.