Sentiment Analysis Integration using Filestack in 2024

Transform images and text into sentiments

Have you ever wondered how businesses understand customer opinions from tons of online reviews and comments? Sentiment analysis is the answer. In this blog, we’ll explain what sentiment analysis is and why it’s important. We’ll look at how it works and the different types available. 

We’ll also explore sentiment analysis’s many uses, such as improving customer service and guiding marketing plans. Then, we’ll introduce Filestack. It makes sentiment analysis easy by handling file uploads efficiently. 

We’ll cover the benefits of sentiment analysis and the tools involved, such as Python libraries and machine learning frameworks. We’ll also discuss the challenges faced in sentiment analysis and offer some practical solutions.

Finally, we’ll look at future trends in sentiment analysis. Let’s begin our journey now!

What is sentiment analysis?

Sentiment analysis is a way to determine how people feel about something by analyzing their words. It examines text, such as social media posts, reviews, and comments. This activity helps to determine whether it is positive, negative, or neutral.

Sentiment analysis uses natural language processing (NLP) and machine learning tools. It’s important for businesses because it shows what customers think about their products, services, or brands.

With sentiment analysis, companies can:

  • Track customer opinions
  • Spot trends
  • Improve their services. 

Understanding their feelings and needs helps them make better decisions and keep customers happy.

sentiment analysis apps

What are the different types of sentiment analysis?

There are several types of sentiment analysis, each serving a specific purpose. 

1. Fine-grained Sentiment Analysis 

This type goes beyond basic positive, negative, or neutral classifications. It rates sentiments on a scale, such as very positive, positive, neutral, negative, and very negative. This helps in understanding the intensity of emotions.

2. Aspect-based Sentiment Analysis 

This type focuses on specific aspects or features of a product or service. For example, in a restaurant review, it can separately analyze sentiments about food, service, and ambiance.

3. Emotion Detection 

This type identifies specific emotions in text, such as happiness, sadness, anger, or surprise. It uses dictionaries of words that express different emotions or machine learning models trained on emotion-labeled data.

4. Intent Analysis 

This type goes beyond sentiment to understand the writer’s intent, like whether a customer asks for help, makes a complaint, or gives praise.

types of sentiment analysis

Why is sentiment analysis important?

Sentiment analysis is important for several reasons:

  • Analyzing reviews and social media posts helps businesses understand how customers feel about their products and services.
  • By finding negative comments, companies can fix problems quickly, making customers happier.
  • It gives insights into market trends and customers’ liking, helping with planning and product development.
  • It helps track what people are saying about a brand, catching potential PR issues early.
  • Companies can see what people think about their competitors to find their strengths and weaknesses.
  • It provides useful information for making better marketing, customer service, and product management decisions.
  • It saves time by automatically analyzing large amounts of text data and giving real-time insights.

How does sentiment analysis work?

Sentiment analysis uses natural language processing (NLP) technologies to train computer software to understand text like humans. The process involves several stages before delivering the final result.


In the preprocessing stage, the analysis identifies key words to capture the main message of the text.

  • Tokenization breaks a sentence into smaller parts or tokens.
  • Lemmatization converts words to their root form, like changing “am” to “be.”
  • Stop-word Removal filters out words that don’t add much meaning, such as “with,” “for,” “at,” and “of.”

Keyword Analysis

NLP technologies then analyze these keywords and assign them a sentiment score. A sentiment score measures the emotional tone of the text, providing a relative sense of the expressed emotion. 

For example, researchers might use a score of 10 to represent satisfaction and 0 for disappointment when examining customer reviews. This helps in understanding the emotional context for analytical purposes.

What are the applications of sentiment analysis?

Sentiment analysis has many uses in different fields. Here are some key applications:

Customer Feedback

Businesses use it to understand customer reviews and feedback. This helps them see what customers like and what needs improvement.

Social Media Monitoring

Companies analyze social media posts to see how people feel about their brand. This helps manage their reputation and address problems quickly.

Market Research

It helps understand market trends and what customers prefer. This information is useful for making decisions about products and marketing strategies.

Competitive Analysis

Businesses can see how people feel about their competitors. This helps them find their own strengths and weaknesses and improve their strategies.

Customer Service

Sentiment analysis helps evaluate customer service interactions. It identifies common issues and helps improve service quality.

Content Personalization

Online platforms use it to recommend content based on user preferences and emotions. This makes the user experience more personalized.

Financial Markets 

Investors use sentiment analysis to predict market trends based on public opinion about companies and the economy.

What are the tools used for sentiment analysis?

Several tools and technologies are used for sentiment analysis, each serving different functions and needs:


Filestack is a file-handling service that simplifies uploading, storing, and processing files. In sentiment analysis, Filestack can handle and preprocess large amounts of text data from various sources, making it easier to manage and analyze. Based on the targeted data for analysis, Filestack offers two main sentiment analyses:

Text Sentiment Analysis

Text sentiment analysis involves examining written content to determine the sentiment expressed. It classifies the text as positive, negative, or neutral. It can also detect emotions like happiness, anger, or sadness.

Text Sentiment is an intelligence service offered by the Filestack platform. It allows you to detect the general emotions of the text.

Text Sentiment can be accessed as a synchronous operation in the Processing API with the task `text_sentiment.`

To use this task in the Processing API, you need to use a security policy and signature. You will learn how to get the policy and signature in the coming sections of this blog post.

Parameter Value Options Description
text string Text for analysis.
language string auto, en, es, fr, de, it, pt, ar, hi, ja, ko, zh, zh-TW Defaults to auto. When auto is selected, the language of the text is detected automatically.


Example API call:<POLICY>,s:<SIGNATURE>/text_sentiment=text:"this product is outstanding"



    "emotions": {

        "Positive": 0.9997168183326721,

        "Negative": 0.0000452575332019,

        "Neutral": 0.0001435235462849,

        "Mixed": 0.0000943295744946



Response Parameters

emotions: Contains detected emotions.

Text sentiment analysis is also available as a webhook task. You may learn more about it here. 

Image Sentiment Analysis

Image sentiment analysis, on the other hand, examines visual content to gauge sentiment. It uses computer vision and deep learning techniques to interpret emotions conveyed through images. This can involve analyzing facial expressions, scenes, and even text within images. 

For instance, it can detect whether a person in a photo looks happy, sad, or angry.

Image Sentiment is a service provided by the Filestack platform that enables the detection of general emotions from uploaded images.

Image Sentiment operates synchronously within the Processing API through the task `image_sentiment`.

To utilize this task in the Processing API, a security policy and signature are required. 

Example Response for Emotional Content Detected


    "emotions": {

        "HAPPY": 99.74745178222656,

        "FEAR": 0.09662599116563797,

        "SAD": 0.04409734904766083,

        "ANGRY": 0.039630014449357986,

        "SURPRISED": 0.03320338949561119,

        "DISGUSTED": 0.013468324206769466,

        "CONFUSED": 0.01307707466185093,

        "CALM": 0.012453563511371613



Example Response for No Emotional Content Detected:


    "emotions": {}


Examples of API requests

  1. Get the sentiment of your uploaded file:<POLICY>,s:<SIGNATURE>/image_sentiment/<HANDLE>  2. Use `image_sentiment` in a chain with other tasks such as tagging:<POLICY>,s:<SIGNATURE>/tags/image_sentiment/<HANDLE> 

3. Use `image_sentiment` with an external URL:<FILESTACK_API_KEY>/security=p:<POLICY>,s:<SIGNATURE>/image_sentiment/<EXTERNAL_URL>  4. Use `image_sentiment` with Storage Aliases:<FILESTACK_API_KEY>/security=p:<POLICY>,s:<SIGNATURE>/image_sentiment/<STORAGE_ALIAS>


Python Libraries

Python offers several powerful libraries for sentiment analysis:

NLTK (Natural Language Toolkit)

Provides tools for text processing and sentiment analysis.


Simplifies text processing tasks and provides basic sentiment analysis features.

VADER (Valence Aware Dictionary and sEntiment Reasoner)

Specifically designed for social media text, it is useful for analyzing short and informal content.


A fast and efficient library for NLP tasks, including sentiment analysis.

Transformers (by Hugging Face)

Provides state-of-the-art models like BERT for more advanced sentiment analysis.

Machine Learning Frameworks

Machine learning frameworks help build and train sentiment analysis models:


An open-source platform for building and deploying machine learning models.


A flexible and efficient deep learning library used for developing advanced NLP models.


Provides simple and efficient tools for data mining and data analysis, including sentiment classification.

How do you integrate the Filestack sentiment analysis?

The first step towards integrating the Filestack sentiment analysis is to have a Filestack account. 

Go to the Filestack website: 

Click on the Sign Up Free button given at the top right corner. 

Fill out the form given below and click on the Get Started Free button at the end of this form. 

sentiment analysis sign up

Next, click on the login button at the top right corner. Enter your login credentials to open the Filestack dashboard. 

api key

Copy the API key and keep it somewhere safe. Next, you should get the policy and signature. 

To do so, click on the security tab in the left column of the dashboard. Then, click on the policy and signature button. 

Next, you must check all these boxes, set an expiry date, and scroll down to get the policy and signature. 

policy and sign for sentiment analysis

After you get the API key, policy, and signature, the next step is to test the API requests via Postman. It is important to test the API requests since it can save you from getting into trouble when integrating the API. You should be able to fetch the API response in the Postman before integrating it into your application. 

You can see that we pasted the below URL into the Postman API request bar with the GET method:<POLICY>,s:<SIGNATURE>/text_sentiment=text:”this product is outstanding” 


Click the Send button after adding the API key, policy, and signature. 

Here is the response we get:

sentiment analysis response

It means that our API requests are working fine. You should also try the API request for image sentiment task and ensure it works fine. Let’s start integrating our Filestack API. 

Building a Sample Application

Create a directory inside the Visual Studio Code. Next, create an HTML file.


Next, you should add the below code to your HTML file:

Step 1: HTML Structure

The HTML structure forms the skeleton of the webpage.

<!DOCTYPE html>

<html lang="en">


    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Sentiment Analysis by Filestack</title>


        /* CSS goes here */


    <script src=""></script>



    <h1>Sentiment Analysis by Filestack</h1>


        <a href="#" class="btn" onclick="toggleTextAnalysis()">Text Sentiment Analysis</a>

        <a href="#" class="btn" onclick="imageSentimentAnalysis()">Image Sentiment Analysis</a>


    <div id="textAnalysisForm" style="display: none;">

        <div class="form-group">

            <input type="text" id="textInput" placeholder="Enter your text...">

            <button class="btn" onclick="submitText()">Submit</button>


        <div id="textOutput" class="output" style="display: none;">

            <strong>Analysis Result:</strong>

            <p id="textAnalysisResult"></p>



    <div id="imageOutput" class="output" style="display: none;">

        <strong>Image Sentiment Analysis Result:</strong>

        <p id="imageAnalysisResult"></p>



        /* JavaScript goes here */



  • <!DOCTYPE html> Defines the document type and version of HTML.
  • <html lang=”en”> Sets the language of the document to English.
  • <head> Contains meta-information about the HTML document, including character set, viewport settings, and title.
  • <style> Placeholder for CSS styles.
  • <script src=””></script> Imports the Filestack JavaScript library.
  • <body> Contains the content of the HTML document.
  • <h1> Header for the main title.
  • <div> Container for the buttons and forms.
  • id=”textAnalysisForm” The text analysis form, initially hidden.
  • id=”imageOutput” The output for image analysis results, initially hidden.

Step 2: CSS Styling

CSS styles enhance the visual appearance of the webpage.

Get the complete CSS styles of this web app through the GitHub link. 

  • General styles for `body`, `h1`, and `.btn` to define the font, colors, and layout.
  • .btn:hover Changes the button background color on hover.
  • .form-group Styles for the form input and button.
  • .output Styles for the result display section.

Step 3: JavaScript Functionality

JavaScript adds interactivity and handles the logic for sentiment analysis.

function toggleTextAnalysis() {

    var textAnalysisForm = document.getElementById('textAnalysisForm'); = 'block';

    document.getElementById('textOutput').style.display = 'none'; // Hide previous output


function submitText() {

    var textInput = document.getElementById('textInput').value;

    if (textInput.trim() === '') {

        alert('Please enter some text to analyze.');



    // Constructing the Filestack API URL

    var filestackURL = ",s:0f55a80868f9f871cc7565c7f55c30a10a66050d738ff700c04556a592b5cbd1/text_sentiment=text:\"" + encodeURIComponent(textInput) + "\"";

    // Send AJAX request to Filestack API

    var xhr = new XMLHttpRequest();"GET", filestackURL, true);

    xhr.onreadystatechange = function() {

        if (xhr.readyState === 4 && xhr.status === 200) {

            var response = JSON.parse(xhr.responseText);


        } else if (xhr.readyState === 4 && xhr.status !== 200) {

            displayTextAnalysisResult({ error: 'Error occurred while fetching data.' });





function displayTextAnalysisResult(result) {

    var textOutput = document.getElementById('textOutput');

    var textAnalysisResult = document.getElementById('textAnalysisResult');

    // Check if emotions data is available

    if (result.emotions) {

        var emotions = result.emotions;

        // Determine sentiment based on the highest percentage emotion

        var maxEmotion = '';

        var maxPercentage = 0;

        for (var emotion in emotions) {

            if (emotions[emotion] > maxPercentage) {

                maxPercentage = emotions[emotion];

                maxEmotion = emotion;



        // Convert maxEmotion to a human-readable sentiment

        var sentiment = '';

        if (maxEmotion === 'Positive') {

            sentiment = 'Positive';

        } else if (maxEmotion === 'Negative') {

            sentiment = 'Negative';

        } else if (maxEmotion === 'Neutral') {

            sentiment = 'Neutral';

        } else {

            sentiment = 'Mixed'; // Handle additional emotions if necessary


        // Calculate the percentage of the sentiment detected

        var percentage = (maxPercentage * 100).toFixed(2) + "%";

        // Display only the detected sentiment and percentage

        textAnalysisResult.textContent = "Detected Sentiment: " + sentiment + " (" + percentage + ")"; = 'block';

    } else {

        textAnalysisResult.textContent = "No emotion analysis data available."; = 'block';



function imageSentimentAnalysis() {

    const client = filestack.init('A18L3T2eWRemxYIGwGlZsz');


        accept: 'image/*',

        onUploadDone: (result) => {

            const fileUrl = result.filesUploaded[0].url;





function analyzeImageSentiment(fileUrl) {

    // Constructing the Filestack API URL for image sentiment analysis

    var filestackURL = "

WFkIiwic3RhdCIsIndyaXRlIiwid3JpdGVVcmwiLCJzdG9yZSIsImNvbnZlcnQiLCJyZW1vdmUiLCJleGlmIiwicnVuV29ya2Zsb3ciXSwiZXhwaXJ5IjoxNzIxMTYwMDAwfQ==,s:0f55a80868f9f871cc7565c7f55c30a10a66050d738ff700c04556a592b5cbd1/image_sentiment/" + fileUrl;

    // Send AJAX request to Filestack API

    var xhr = new XMLHttpRequest();"GET", filestackURL, true);

    xhr.onreadystatechange = function() {

        if (xhr.readyState === 4 && xhr.status === 200) {

            var response = JSON.parse(xhr.responseText);


        } else if (xhr.readyState === 4 && xhr.status !== 200) {

            displayImageAnalysisResult({ error: 'Error occurred while fetching data.' });





function displayImageAnalysisResult(result) {

    var imageOutput = document.getElementById('imageOutput');

    var imageAnalysisResult = document.getElementById('imageAnalysisResult');

    if (result.emotions) {

        var emotions = result.emotions;

        var maxEmotion = '';

        var maxPercentage = 0;

        for (var emotion in emotions) {

            if (emotions[emotion] > maxPercentage) {

                maxPercentage = emotions[emotion];

                maxEmotion = emotion;



        var sentiment = '';

        if (maxEmotion === 'HAPPY') {

            sentiment = 'Happy';

        } else if (maxEmotion === 'ANGRY') {

            sentiment = 'Angry';

        } else if (maxEmotion === 'CALM') {

            sentiment = 'Calm';

        } else if (maxEmotion === 'CONFUSED') {

            sentiment = 'Confused';

        } else if (maxEmotion === 'DISGUSTED') {

            sentiment = 'Disgusted';

        } else if (maxEmotion === 'FEAR') {

            sentiment = 'Fearful';

        } else if (maxEmotion === 'SAD') {

            sentiment = 'Sad';

        } else if (maxEmotion === 'SURPRISED') {

            sentiment = 'Surprised';

        } else {

            sentiment = 'Mixed';


        var percentage = (maxPercentage).toFixed(2) + "%";

        imageAnalysisResult.textContent = "Detected Sentiment: " + sentiment + " (" + percentage + ")"; = 'block';

    } else {

        imageAnalysisResult.textContent = "No emotion analysis data available."; = 'block';


  • toggleTextAnalysis() Displays the text analysis form and hides any previous output.
  • submitText() Retrieves the input text, constructs the Filestack API URL, and sends an AJAX request to get the sentiment analysis.
  • displayTextAnalysisResult(result) Displays the result of the text sentiment analysis.
  • imageSentimentAnalysis() Initializes the Filestack client for image uploads and opens the file picker.
  • analyzeImageSentiment(fileUrl) Sends an AJAX request to get the sentiment analysis for the uploaded image.
  • displayImageAnalysisResult(result) Displays the result of the image sentiment analysis.

Replace ADD_YOUR_APIKEY_HERE with your actual API key.


When you run the application, you get the below home page:

Output 1

Click on the Text Sentiment analysis. Next, enter your text and click on Submit to get the detected sentiment as under:

Sentiment analysis by Filestack

text analysis

Next, click on the Image Sentiment Analysis button. Upload the image and get the detected sentiment as under: 

image analysis

image analysis

Get the complete code to this web app here: 

What are the challenges and their solutions in sentiment analysis?

Here are the challenges and solutions associated with the sentiment analysis. 


Challenge Description Solution
Sarcasm and Irony Sarcasm and irony can invert the intended sentiment of a statement. Use advanced models and context-aware datasets.
Multiple Meanings Words with different meanings can confuse the analysis. Use context-aware models like BERT or ELMo.
Different Topics Sentiment expressions vary across different topics. Train domain-specific models or use transfer learning.
Negations Words like “not” can change the sentiment of a sentence. Implement negation detection algorithms.
Multiple Languages Analyzing sentiments in various languages is challenging. Develop multilingual models or use translation tools.
Subtle Emotions Detecting slight differences in emotions is complex. Use fine-grained sentiment analysis techniques.

What are the future trends of sentiment analysis?

Sentiment analysis is set to improve greatly in the future. Deep learning will improve models’ understanding of feelings and context. Combining data types like text, audio, and images will give a fuller picture of emotions.

Real-time analysis will let businesses see customer feelings instantly and react quickly. Personalization will get better as models learn how each person talks and what they like.

More companies will use sentiment analysis in social media, customer service, and market research. This will help them understand what people think and feel. There will also be a focus on fairness and reducing bias to ensure the analysis is accurate for everyone. 


Sentiment analysis helps businesses understand customer opinions from online reviews and comments. It uses technology to see if the text is positive, negative, or neutral. 

We explored different types of sentiment analysis, like fine-grained and emotion detection. Filestack makes this process easy by managing file uploads

We also discussed the benefits, challenges, and future trends. Sentiment analysis will become more accurate with better tools and techniques. This will help businesses make better decisions and keep customers happy.


What do you mean by sentiment analysis?

Sentiment analysis determines if the text is positive, negative, or neutral.

How is NLP used in sentiment analysis?

NLP processes text to identify and classify emotions and sentiments.

What are the four main steps of sentiment analysis?

The four main steps of sentiment analysis are preprocessing, keyword analysis, scoring, and interpretation.

How do you Analyze sentiment?

To analyze sentiment, natural language processing and tools like Filestack are used to evaluate text emotions.

Integrate sentiment analysis into your apps today – Sign up for free at Filestack. 


Read More →