DEV Community

Cover image for Building a Sentiment Analysis App with Python and Hugging Face Transformers
Code_Jedi
Code_Jedi

Posted on • Updated on

Building a Sentiment Analysis App with Python and Hugging Face Transformers

Sentiment analysis, also known as opinion mining, is a natural language processing (NLP) task that involves determining the sentiment or emotional tone expressed in a piece of text. With the help of Hugging Face Transformers, a popular library for NLP, we can easily create a sentiment analysis app that can classify text as positive, negative, or neutral. In this tutorial, we'll walk through the steps to build a sentiment analysis app using Python and Hugging Face Transformers.

Before we get into this article, if you want to learn more on NLP and Hugging face, I would recommend the tutorials over at Educative, who I chose to partner with for this tutorial.

Prerequisites

Before we begin, make sure you have the following prerequisites:

  1. Python 3 installed on your system.
  2. Basic knowledge of Python programming.
  3. An understanding of natural language processing (NLP) concepts.

Step 1: Installing the Required Libraries

First, we need to install the necessary Python libraries, including Hugging Face Transformers and Flask, a web framework for building web applications.

pip install transformers
pip install flask
Enter fullscreen mode Exit fullscreen mode

Step 2: Creating a Sentiment Analysis Flask App

Now, let's create a Flask app that performs sentiment analysis using a pre-trained model from Hugging Face Transformers.

# app.py

import torch
from transformers import pipeline
from flask import Flask, request, jsonify

app = Flask(__name__)

# Load the sentiment analysis model
sentiment_analysis = pipeline("sentiment-analysis")

@app.route("/analyze", methods=["POST"])
def analyze_sentiment():
    try:
        data = request.json
        text = data["text"]

        # Perform sentiment analysis
        result = sentiment_analysis(text)

        return jsonify({"sentiment": result[0]["label"], "score": result[0]["score"]})

    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == "__main__":
    app.run(debug=True)
Enter fullscreen mode Exit fullscreen mode

In this code, we create a Flask app with a single route /analyze that accepts a JSON payload with a "text" field and returns the sentiment analysis result as JSON.

Step 3: Running the Flask App

Now, let's run our Flask app:

python app.py
Enter fullscreen mode Exit fullscreen mode

Your Flask app should start running on http://127.0.0.1:5000/.

Step 4: Testing the Sentiment Analysis API

You can test the sentiment analysis API using a tool like curl or by creating a simple client application. Here's an example using Python's requests library:

# client.py

import requests

url = "http://127.0.0.1:5000/analyze"

data = {"text": "I love this product! It's amazing!"}
response = requests.post(url, json=data)

if response.status_code == 200:
    result = response.json()
    print(f"Sentiment: {result['sentiment']}")
    print(f"Sentiment Score: {result['score']}")
else:
    print(f"Error: {response.text}")
Enter fullscreen mode Exit fullscreen mode

Run the client script:

python client.py
Enter fullscreen mode Exit fullscreen mode

You should see the sentiment analysis result for the provided text.

Conclusion

Congratulations! You've built a simple sentiment analysis app using Hugging Face Transformers and Flask. This app can classify text as positive, negative, or neutral. You can extend this project by improving the user interface, integrating it with a front-end framework, or deploying it to a web server to make it accessible from anywhere. Sentiment analysis has numerous applications, including social media monitoring, customer feedback analysis, and more.

Top comments (0)