Opinions decoded: Why sentiment analysis is important
How to use AI to gain a deeper understanding of what your audience likes (or doesn’t).
If branding decisions came with a map, sentiment analysis would be something of a compass. Sentiment analysis gives you important signals about how customers and viewers feel about your products.
Let’s say you’re running a YouTube channel with hundreds of videos that generate comments. Or a marketing operation that’s analyzing customer surveys to understand feedback about several products. Analyzing the sentiment in customer feedback — whether that’s positive, neutral, or negative — offers an instant understanding of your core audience’s attitudes and opinions.
Leveraging AI for swift responses
When a person comments on something online, especially if it’s negative, it’s also important to respond to it quickly. Doing so can have a ripple effect and positively impact your brand in a number of ways.
But how? Content creators and managers know that manually responding to potentially thousands of comments is neither practical nor feasible.
In this blog, we’ll show you how to use artificial intelligence to create a system for analyzing sentiment in customer feedback using MindsDB.
What is sentiment analysis?
Sentiment analysis is a technique used to evaluate and determine the emotional tone, attitude, or sentiment expressed within text data, such as comments, reviews, or social media posts.
Its overarching purpose is to identify whether the text conveys positive, negative, or neutral sentiments, and to what degree. Leveraging sentiment analysis can provide content creators with treasure troves of insights that reveal exactly what their audience thinks about them and their content.
Why user engagement matters
User engagement is crucial to amplifying the value of, for example, a YouTube channel. It creates a reciprocal relationship that encourages users to involve themselves more fervently with your brand.
Interactions like this are contagious. When a user does this, another will take note and gravitate to your brand. Over time, this will compound and your audience will grow at an exponential rate.
How to use MindsDB for sentiment analysis
What is MindsDB?
MindsDB is an AI automation platform that connects any source of data with any AI/ML framework, automating how real-time data flows between them. It’s a unique tool that can help you to build AI-powered features and applications quickly and easily. With MindsDB, you can:
- Connect to any data source: MindsDB seamlessly integrates with over 130 data sources, encompassing relational and non-relational databases, data warehouses, applications, and streaming data sources.
- Deploy any AI/ML model: MindsDB offers support for a wide range of AI/ML models, including pre-trained models from popular frameworks like OpenAI, Hugging Face, or Anthropic, as well as having the flexibility to deploy custom models created with any ML framework.
- Automate AI workflows: MindsDB can automate the complete AI workflow, encompassing tasks from data preparation to model training and deployment, all the way to inference and continuous monitoring.
- Provide real-time predictions: MindsDB enables real-time predictions generated by AI models, even for streaming data sources, ensuring timely and actionable insights.
- Build AI-powered features and applications: MindsDB simplifies the development of AI-powered features and applications, ranging from recommendation engines and fraud detection systems to predictive maintenance systems, making AI integration accessible and efficient.
Companies of all sizes across different industries are using MindsDB to build a variety of AI-powered applications, all driven by machine learning. These include:
- Recommendation engines for e-commerce websites and streaming services
- Fraud detection systems for banks and financial institutions
- Predictive maintenance systems for manufacturing and transportation companies
- Chatbots and customer service assistants
- Real-time analytics dashboards for businesses of all sizes
For content creators, MindsDB can simplify sentiment analysis on a channel like YouTube by incorporating natural language understanding.
What happens here is that MindsDB will integrate comments data from YouTube without you having to undergo the complex data synchronization process. There are fewer hoops to jump through and less complexity to navigate, making sentiment analysis on YouTube quicker and more accessible for content creators.
How to Analyze Sentiment in YouTube comments with MindsDB
First, let’s connect your YouTube account to MindsDB.
Follow this instruction that guides you on how to generate the YouTube API Token required to connect your YouTube account to MindsDB in a read-only mode. Note that in this use case, we fetch the comments data from YouTube without inserting any data into YouTube, therefore, the read-only mode is sufficient.
To get comments for a channel, provide the channel_id value in the WHERE clause while querying the YouTube comments table.
SELECT *
FROM mindsdb_youtube.comments
WHERE channel_id="UC5_wBOLCWath6q1iTgPPD5A";
Alternatively, to get comments for a video, provide the video_id value in the WHERE clause while querying the YouTube comments table.
SELECT *
FROM mindsdb_youtube.comments
WHERE video_id = "G_S4K_9cCmI";
Now let’s move on to deploying the OpenAI GPT-4 model that will analyze the sentiment of YouTube comments.
Before you can create OpenAI models in MindsDB, you should create an engine, providing an OpenAI API key as below.
CREATE ML_ENGINE openai_engine
FROM openai
USING
api_key = "sk-xxx";
Now you can create a sentiment classifier model using this engine.
CREATE MODEL yt_sentiment_classifier
PREDICT sentiment
USING
engine = 'openai_engine',
model_name = 'gpt-4',
prompt_template = 'describe the sentiment of the comments
strictly as "positive", "neutral", or "negative".
"I love this video":positive
"It is not a helpful content":negative
"{{comment}}.":';
Join the YouTube comments table with the model to analyze the sentiment of the comments.
SELECT *
FROM mindsdb_youtube.comments AS c
JOIN yt_sentiment_classifier AS m
WHERE c.channel_id="UC5_wBOLCWath6q1iTgPPD5A";
or...
SELECT *
FROM mindsdb_youtube.comments AS c
JOIN yt_sentiment_classifier AS m
WHERE c.video_id = "G_S4K_9cCmI";
Let’s get the count of positive, neutral, and negative comments for a channel.
SELECT COUNT(*)
FROM mindsdb_youtube.comments AS c
JOIN yt_sentiment_classifier AS m
WHERE c.channel_id="UC5_wBOLCWath6q1iTgPPD5A"
AND m.sentiment = 'positive';
SELECT COUNT(*)
FROM mindsdb_youtube.comments AS c
JOIN yt_sentiment_classifier AS m
WHERE c.channel_id="UC5_wBOLCWath6q1iTgPPD5A"
AND m.sentiment = 'neutral';
SELECT COUNT(*)
FROM mindsdb_youtube.comments AS c
JOIN yt_sentiment_classifier AS m
WHERE c.channel_id="UC5_wBOLCWath6q1iTgPPD5A"
AND m.sentiment = 'negative';
Now, let’s get the count of positive, neutral, and negative comments for each video in a channel.
CREATE VIEW yt_comments_sentiment (
SELECT c.channel_id AS channel_id,
c.video_id AS video_id,
c.comment_id AS comment_id,
c.user_id AS user_id,
c.display_name AS display_name,
c.comment AS comment,
m.sentiment AS sentiment
FROM mindsdb_youtube.comments AS c
JOIN yt_sentiment_classifier AS m
WHERE c.channel_id="UC5_wBOLCWath6q1iTgPPD5A"
);
SELECT video_id, COUNT(*)
FROM yt_comments_sentiment
WHERE sentiment = 'positive'
GROUP BY video_id;
SELECT video_id, COUNT(*)
FROM yt_comments_sentiment
WHERE sentiment = 'neutral'
GROUP BY video_id;
SELECT video_id, COUNT(*)
FROM yt_comments_sentiment
WHERE sentiment = 'negative'
GROUP BY video_id;
Connect a database (here, a PostgreSQL database) to MindsDB where further analysis will take place.
CREATE DATABASE psql_datasource
WITH
ENGINE = 'postgres',
PARAMETERS = {
"host": "2.tcp.eu.ngrok.io",
"port": 18448,
"database": "postgres",
"user": "postgres",
"password": "postgres"
};
Create a table to save comments with the predicted sentiment values into this database.
CREATE TABLE psql_datasource.yt_comments_sentiment (
SELECT c.channel_id AS channel_id,
c.video_id AS video_id,
c.comment_id AS comment_id,
c.user_id AS user_id,
c.display_name AS display_name,
c.comment AS comment,
m.sentiment AS sentiment
FROM mindsdb_youtube.comments AS c
JOIN yt_sentiment_classifier AS m
WHERE c.channel_id="UC5_wBOLCWath6q1iTgPPD5A"
);
Then create a table to store the count of positive/neutral/negative comments per channel.
CREATE TABLE psql_datasource.yt_comments_per_channel (
SELECT * FROM psql_datasource (
SELECT channel_id,
SUM(CASE WHEN sentiment='positive' THEN 1 ELSE 0 END) AS positive_count,
SUM(CASE WHEN sentiment='neutral' THEN 1 ELSE 0 END) AS neutral_count,
SUM(CASE WHEN sentiment='negative' THEN 1 ELSE 0 END) AS negative_count
FROM yt_comments_sentiment
GROUP BY channel_id
)
);
Create a table to store the count of positive/neutral/negative comments per channel per video.
CREATE TABLE psql_datasource.yt_comments_per_video (
SELECT * FROM psql_datasource (
SELECT channel_id,
video_id,
SUM(CASE WHEN sentiment='positive' THEN 1 ELSE 0 END) AS positive_count,
SUM(CASE WHEN sentiment='neutral' THEN 1 ELSE 0 END) AS neutral_count,
SUM(CASE WHEN sentiment='negative' THEN 1 ELSE 0 END) AS negative_count
FROM yt_comments_sentiment
GROUP BY channel_id, video_id
)
);
Now let’s connect this database to Tableau to visualize the results.
- Per channel:
2. Per channel’s videos:
Tableau offers a variety of charts and diagrams. Feel free to choose the one that fits your use case best.
There you have it. That’s how you can visualize how your audience perceives your content.
Further, you can use the predicted sentiment values and create a personalized chatbot that replies to YouTube comments. Stay tuned for the upcoming tutorial on that.
Sentiment analysis: a powerful tool
Analyzing sentiment in customer comments and reviews is crucial for businesses, as it provides insights into customer satisfaction and dissatisfaction.
It can also help identify areas for improvement. Positive sentiment highlights strengths and successful strategies, guiding companies in reinforcing positive aspects of their products or services. Conversely, negative sentiments give businesses a chance to address customer concerns promptly, enhancing customer relations and overall brand reputation.