Sentiment Analysis in NLP: Types, Techniques, Models, and Examples

By Rahul Singh

Updated on Nov 2, 2026

Share:

Quick Overview:

  • Sentiment‍‍‍ analysis is one of the NLP techniques which allows computers to detect emotional states, sentiments and attitudes present in texts.

  • Sentiment analysis in NLP can be broken down into following steps: gathering of data, cleaning (text preprocessing) and normalization, features extraction, sentiment identification through the classifiers, and finally the results analysis.

  • Types of sentiment analysis comprise fine-grained sentiment analysis, emotion detection, and aspect-based sentiment analysis. 

  • Approaches in sentiment analysis include lexicon-based approaches, machine learning, deep learning, and Transformer architectures like BERT, RoBERTa, and DistilBERT.

  • In this blog you will learn what is sentiment analysis in NLP along with its types, working, techniques and approaches and implementation using Python.

Sentiment analysis shows how AI can interpret customer opinions, identify emotions, and extract insights from text. The Executive Post Graduate Certificate in Generative AI & Agentic AI from IIT Kharagpur helps you build expertise in modern AI technologies and understand how to develop intelligent AI applications for real-world business problems.

What Is Sentiment Analysis in NLP? 

Sentiment analysis is a natural language processing technique which helps the computers to identify emotions, opinions and attitudes in a text, similar to humans. It helps to find out either a statement want to convey positive, negative or neutral sentiment.

For example- below is a customer review on a ecommerce platform:

"The camera takes sharp photos, but the battery life is poor."

A sentiment analysis in AI can identify that the customer has a positive sentiment towards the camera but there is a negative sentiment towards the battery also. This provide enough information to label the review, not just making it positive or negative based on the review.

History of Sentiment Analysis

Sentiment analysis became popular in the early 2000s when there was research done on how to classify opinions from texts. In 2002, Peter Turney, Bo Pang, Lillian Lee, and Shivakumar Vaithyanathan conducted significant research on how to classify reviews into positive and negative.

Early approaches involved using pre-defined lexicons and machine learning algorithms. In modern times, deep learning and transformers models in analyzing opinions and emotions.

Why Is Sentiment Analysis Important?

NLP Sentiment analysis is an effective way for companies to know opinions about certain topics without analyzing each and every piece of feedback individually.

Uses of sentiment analysis are:

  • Analysis of customer feedback: Know how satisfied are the customers and what complaints are being shared by them via reviews and help desk communications.

  • Monitoring brands: It is used to monitor public opinions about a brand, product or campaign.

  • Market research: Used to understand preferences of the customers and change in their opinions with regard to product/service offerings.

  • Social media analysis: Analyzes reaction to an event/campaign/announcement in social media.

  • Product improvement: Identifies features that customers appreciate or find frustrating.

After knowing about some basics of what is sentiment analysis in NLP, now let’s take a look at how it works in real life.

How Does Sentiment Analysis Work?

Sentiment analysis uses Natural Language Processing methods for analyzing text and understanding the sentiment through the text. It is a process which includes various steps, from the collection of raw text to classification of sentiment as either positive, negative, or neutral.

A sentiment analysis workflow involves the following five steps.

Sentiment analysis workflow showing seven stages, from text data collection and preprocessing to feature extraction, model analysis, sentiment prediction, results evaluation, and business or research insights.

Step 1: Collect Text Data

In this step, one has to collect the text that needs to be analyzed. The data can be collected through customer reviews, survey forms, social networking sites, surveys, emails, and customer support sessions.

For example, a e-commerce company can use customer reviews, and there may be 10,000 reviews to analyze the views on the quality of products, prices, shipping time, and customer service.

Step 2: Preprocess the Text

The data collected will mostly have errors in terms of spelling mistakes, unnecessary characters like URL, HTML tags, and many other things like irrelevant word forms. Preprocessing cleans and prepares the text for analysis.

Preprocessing operations usually include:

  • Deleting unnecessary words, HTML tags, and unnecessary characters.

  • Breaking down the text into words or subword.

  • Normalizing the text to ensure consistency in the word form.

  • Dealing with emojis, Hashtags, and abbreviation.

  • Preserving words like "not", "never", that change the context of the whole sentence.

For example, if we look at the sentence, "The product is quite good," and remove the word "NOT" in the phrase "the product is NOT good!" completely changing the meaning of whole sentence.

Step 3: Extract Features or Generate Text Representations

The sentiment analysis model will require a numerical input and the system will perform this translation from text to a numerical format that sentiment analysis model can interpret.

  • Conventional machine learning models usually utilize methods such as Bag of Words (BoW) for text preprocessing or the Term Frequency-Inverse Document Frequency (TF-IDF) as text vectorization method to represent the documents.

  • Deep Learning and Transformer models use word embeddings and context-based representations to model the semantics of words in the sentence.

Step 4: Implement a Sentiment Analysis Model

Finally, the implemented model will be a mechanism that can accept a text representation and output its corresponding sentiment.

A plain sentiment analyzer may just split a text into one of three sentiment types:

  • Positive: This category indicates texts with happy mood, thankfulness, etc.

  • Negative: This category indicates the texts are expressing discontent, criticism, or disapproval, in general.

  • Neutral: This category describes an objective report. It does not include a negative or a positive view.

Step 5: Generate and Interpret the Results

An output in the form of the sentiment classification is generated. Businesses can analyze the results to know about the customers’ sentiments and identify the common trends.

For example, let us assume that online retailer analyzes 1,000 customer reviews. The model classifies the following reviews:

  • 620 reviews as positive.

  • 250 reviews as negative.

  • 130 reviews as neutral.

Thus, out of the total analyzed reviews, 62 percent are positive and 25 percent are negative.

The retailer can perform further analysis of negative reviews and find the recurring issues related to delivery and product quality.

Now let’s explore the different types of NLP sentiment analysis which can be classified based on the level of detail and information a system need to identify.

Types of Sentiment Analysis

Three commonly used approaches are fine grained sentiment analysis, emotion detection, and aspect-based sentiment analysis. Let’s understand each of them below:

1. Fine Grained Sentiment Analysis

Fine grained sentiment analysis classifies text into more detailed sentiment categories than simply positive, negative, or neutral.

For example, a system may use a five-level scale:

Sentiment Category

Meaning

Example

Very Positive

Strong satisfaction or praise

"This is the best product I have ever used!"

Positive

General satisfaction

"The product works well."

Neutral

No clear positive or negative opinion

"The product arrived yesterday."

Negative

General dissatisfaction

"The product is difficult to use."

Very Negative

Strong dissatisfaction

"This is a terrible product. I regret buying it."

2. Emotion Detection

Emotion detection identifies specific emotions expressed in text rather than only classifying overall sentiment.

Depending on the model, it may detect emotions such as:

  • Happiness

  • Sadness

  • Anger

  • Fear

  • Surprise

  • Disgust

For example, the statement "I am extremely disappointed with the service" may be classified as sadness or anger, depending on the model's emotion categories.

3. Aspect-Based Sentiment Analysis

Aspect-based sentiment analysis (ABSA) identifies sentiment towards specific features, attributes, or aspects mentioned in a text.

Consider this review:

"The laptop has a great display, but its battery backup is disappointing."

An aspect-based system can produce the following results:

Aspect

Sentiment

Opinion

Display

Positive

Great

Battery backup

Negative

Disappointing

Other Ways to Classify Sentiment Analysis

Sentiment analysis can also be grouped by the amount of text being analysed.

Level

What It Analyses

Example

Document-level

Overall sentiment of an entire document or review

Classifying a complete product review as positive

Sentence-level

Sentiment expressed in an individual sentence

Identifying a negative opinion in one sentence

Aspect-level

Sentiment towards a particular feature or entity

Analysing opinions about a phone's camera


Now let’s understand some sentiment analysis techniques and methods which are used to identify the opinions in a text. 

Sentiment Analysis Techniques and Approaches

The main approaches include rule-based methods, traditional machine learning, deep learning, and Transformer-based models.

1. Lexicon-Based and Rule-Based Approach

The method mainly uses a dictionary of words that have been annotated with sentiment scores or labels.

In this approach, each word is assigned a specific polarity or a sentiment score. By using this information, the overall sentiment of a sentence or document is a rough ‍‍‍estimate.

For example:

Word

Possible Sentiment

Excellent

Positive

Happy

Positive

Disappointing

Negative

Terrible

Negative

Average

Neutral

Negation,‍‍‍ punctuation, and word stress are considered by some rule-based systems.

For example, "The service is not good" and "The service is good" should not have the same sentiment. A system that simply uses positive and negative word counts will be too simple-minded to detect such a contrast.

2. Traditional Machine Learning Approach

An ML model based on a traditional learning method acquires the ability to detect sentiments by being fed a dataset. This method enables sentiment class features to be learned.

A traditional process involves text preprocessing, feature extraction, model training, and prediction.

Some well-known methods are: ‍‍‍

3. Deep Learning Approach

To​‍​‌‍​‍‌ get more insights using deep learning methods it is important not only to train the computer on large amounts of texts but also how to represent them as numbers ​‍​‌‍​‍‌(features).

Besides these, other deep learning structures are worth mentioning :

Recurrent Neural Networks (RNNs) have memory and can process input in sequence so that each element of the input refers to the previous one. Such models are very helpful for sentence-level sentiment classification.

Long Short-Term Memory (LSTM) is the variation of the recurrent neural network that learns how to store useful information in the time series of input tokens and outputs tokens by manipulating memory cells and gates.

Convolutional Neural Networks (CNNs) are kinds of neural networks that apply convolution filters on text samples so that they can detect small segments (such as words) that are most important, e.g., frequent word ‍‍‍sequences.

4. Transformer-Based Approach

One of the major innovations in natural language processing is transformers and their attention mechanisms that provide the models with the capability to understand the relationship between the text tokens.

Models such as BERT, RoBERTa, and DistilBERT can be fine-tuned for sentiment classification.

For example, the word "cold" can express a temperature or describe someone's behaviour. A Transformer model can use surrounding words to interpret the intended meaning.

Popular Sentiment Analysis Tools & Models

A sentiment analysis model predicts sentiment categories or scores from text. A sentiment analysis tool provides a way to apply these models through a library, API, platform, or application.

Some commonly used options include:

Model or Tool

Approach

Common Use

VADER

Lexicon and rule-based

Sentiment analysis of social media and short text

TextBlob

Rule and lexicon-based features

Basic sentiment polarity and subjectivity analysis

Naive Bayes

Machine learning

Classifying reviews, comments, and messages

Support Vector Machine

Machine learning

Text classification using features such as TF-IDF

LSTM

Deep learning

Learning sentiment patterns across sequences

BERT

Transformer-based

Contextual sentiment classification

RoBERTa

Transformer-based

Fine-tuned text and sentiment classification

DistilBERT

Smaller Transformer model

Sentiment classification with a reduced model size

Now let’s take a look that how you can implement sentiment analysis practically using Python.

How to Perform Sentiment Analysis in Python

Python provides several libraries for sentiment analysis, including NLTK, TextBlob, scikit-learn, and Hugging Face Transformers.

For a basic Sentiment Analysis Python example, you can use VADER, a lexicon and rule-based sentiment analysis tool available through NLTK. 

Step 1: Install and Import NLTK

Install NLTK using pip:

pip install nltk

Import the sentiment analyser and download its lexicon:

import nltk


nltk.download('vader_lexicon')


from nltk.sentiment import SentimentIntensityAnalyzer


analyzer = SentimentIntensityAnalyzer()

Step 2: Prepare the Text

Create a sample customer review for analysis:

text = "The product works really well. The delivery was quick!"

You can use the same approach to process product reviews, social media comments, or customer feedback.

Step 3: Calculate Sentiment Scores

Use VADER's polarity_scores() method to calculate the sentiment scores:

scores = analyzer.polarity_scores(text)


print(scores)

Output:

{

    'neg': 0.0,

    'neu': 0.509,

    'pos': 0.491,

    'compound': 0.699

}

The output contains four values:

  • pos: Proportion of positive sentiment.

  • neg: Proportion of negative sentiment.

  • neu: Proportion of neutral sentiment.

  • compound: Normalised overall sentiment score ranging from -1 to +1.

The compound score provides a single measure of the overall sentiment intensity.

Step 4: Classify the Sentiment

You can use the compound score to assign a sentiment label. The following example uses commonly applied VADER thresholds:

compound = scores['compound']


if compound >= 0.05:

    sentiment = "Positive"

elif compound <= -0.05:

    sentiment = "Negative"

else:

    sentiment = "Neutral"


print("Sentiment:", sentiment)

Output:

Sentiment: Positive

The positive compound score indicates that the review expresses positive sentiment.

These thresholds provide a starting point. For a specific dataset, test and adjust the decision boundaries based on labelled examples and the cost of different classification errors.

Step 5: Analyse Multiple Reviews

You can extend the example to analyse several customer reviews:

reviews = [

    "The product quality is excellent.",

    "The delivery was very late.",

    "The product arrived yesterday.",

    "The camera is good, but the battery is poor."

]


for review in reviews:

    scores = analyzer.polarity_scores(review)


    if scores['compound'] >= 0.05:

        sentiment = "Positive"

    elif scores['compound'] <= -0.05:

        sentiment = "Negative"

    else:

        sentiment = "Neutral"


    print(review)

    print("Sentiment:", sentiment)

    print("Scores:", scores)

    print()

Sample Output:

The product quality is excellent.

Sentiment: Positive


The delivery was very late.

Sentiment: Negative


The product arrived yesterday.

Sentiment: Neutral


The camera is good, but the battery is poor.

Sentiment: Negative

This approach provides a basic way to classify multiple reviews. For more complex applications, you can use a Transformer model or train a machine learning classifier on labelled data.

Using BERT for Sentiment Analysis in Python

You can also perform NLP sentiment analysis using a pretrained Transformer model through the Hugging Face Transformers library.

For example, the DistilBERT model fine-tuned on the Stanford Sentiment Treebank 2 (SST-2) dataset can classify text into positive and negative sentiment categories. Hugging Face provides a pipeline interface for running this type of model.

Install the library:

pip install transformers torch

Load the model and create a sentiment analysis pipeline:

from transformers import pipeline


classifier = pipeline(

    "sentiment-analysis",

    model="distilbert/distilbert-base-uncased-finetuned-sst-2-english"

)


text = "The product quality is excellent, and I am happy with the purchase."


result = classifier(text)


print(result)

Sample Output:

[

    {

        'label': 'POSITIVE',

        'score': 0.9998

    }

]

The output contains a sentiment label and a model score. This example uses a binary sentiment model, so it returns positive or negative rather than a separate neutral category.

Conclusion

Sentiment analysis helps convert unstructured text into useful information about opinions, attitudes, and emotions. It supports applications such as customer feedback analysis, brand monitoring, product research, and social media analysis.

The choice of sentiment analysis technique depends on the task and the complexity of the text. Rule-based methods such as VADER work well for basic analysis, while machine learning, deep learning, and Transformer models can handle more complex language patterns.

Rahul Singh

Rahul Singh

26+ of articles published


Current role in the industry :

Associate - Content Marketing

Education Qualification :

B.Tech in Computer Science & Engineering

Expertise :

Artificial intelligenceMachine Learning (ML)Data ScienceFull-Stack DevelopmentData Structures & Algorithms

Tools & Technologies :

PythonReact.js & Next.jsJavaScript (ES6+)SQLTailwind CSSNode.js & MongoDBGit & GitHubSEO Tools (SEMRush)Google Search ConsoleTableau / Power BIFigma

About

Rahul Singh is an Associate Content Writer, with a strong interest in Generative AI, Agentic AI and AI-Native Software Engineering. He combines technical development skills with data-driven strategies to build scalable applications and optimize digital content. Rahul specializes in simplifying complex concepts across AI, ML and software development into practical, easy-to-understand insights, helping learners understand how AI products, systems and services are built and applied. He focuses on real world applications and explains advanced topics in a clear, step by step manner so you can follow along without confusion. His work connects theory with hands-on examples, covering AI-assisted development, intelligent automation and AI integration in software applications. He aims to help you learn faster, create better projects, and apply your knowledge confidently in real scenarios.

Follow me on :

No blogs published yet.

Frequently Asked Questions

FAQ

Ready to Take the Next Step? Enroll Today!