Skip to main content

A flexible emotion classifier with support for multiple models

Project description

python PyPI - Version Code style: black Ruff security: bandit Downloads

Emotion Classifier Logo

Text Emotion Classifier

A flexible emotion classifier package with support for multiple models, customizable preprocessing, visualization tools, fine-tuning capabilities, and more.

Overview

emotionclassifier is a Python package designed to classify emotions in text using various pre-trained models from Hugging Face's Transformers library. This package provides a user-friendly interface for emotion classification, along with tools for data preprocessing, visualization, fine-tuning, and integration with popular data platforms.

Features

  • Multiple Model Support: Easily switch between different pre-trained models.
  • Customizable Preprocessing: Clean and preprocess text data with customizable functions.
  • Visualization Tools: Visualize emotion distributions and trends over time.
  • Fine-tuning Capability: Fine-tune models on your own datasets.
  • User-friendly CLI: Command-line interface for quick emotion classification.
  • Integration with Data Platforms: Seamless integration with pandas DataFrames.
  • Extended Post-processing: Additional utilities for detailed emotion analysis.

Emotion Labels

  • 😠 Anger
  • 🤢 Disgust
  • 😨 Fear
  • 😊 Joy
  • 😢 Sadness
  • 😲 Surprise

Installation

You can install the package using pip:

pip install emotionclassifier

Usage

Basic Usage

Here's an example of how to use the EmotionClassifier to classify a single text:

from emotionclassifier import EmotionClassifier

# Initialize the classifier with the default model
classifier = EmotionClassifier()

# Classify a single text
text = "I am very happy today!"
result = classifier.predict(text)
print("Emotion:", result['label'])
print("Confidence:", result['confidence'])

Batch Processing

You can classify multiple texts at once using the predict_batch method:

texts = ["I am very happy today!", "I am so sad."]
results = classifier.predict_batch(texts)
print("Batch processing results:", results)

Visualization

To visualize the emotion distribution of a text:

from emotionclassifier import plot_emotion_distribution

result = classifier.predict("I am very happy today!")
plot_emotion_distribution(result['probabilities'], classifier.labels.values())

CLI Usage

You can also use the package from the command line:

emotionclassifier --model deberta-v3-small --text "I am very happy today!"

DataFrame Integration

Integrate with pandas DataFrames to classify text columns:

import pandas as pd
from emotionclassifier import DataFrameEmotionClassifier

df = pd.DataFrame({
    'text': ["I am very happy today!", "I am so sad."]
})

classifier = DataFrameEmotionClassifier()
df = classifier.classify_dataframe(df, 'text')
print(df)

Emotion Trends Over Time

Analyze and plot emotion trends over time:

from emotionclassifier import EmotionTrends

texts = ["I am very happy today!", "I am feeling okay.", "I am very sad."]
trends = EmotionTrends()
emotions = trends.analyze_trends(texts)
trends.plot_trends(emotions)

Fine-tuning

Fine-tune a pre-trained model on your own dataset:

from emotionclassifier.fine_tune import fine_tune_model

# Define your train and validation datasets
train_dataset = ...
val_dataset = ...

# Fine-tune the model
fine_tune_model(classifier.model, classifier.tokenizer, train_dataset, val_dataset, output_dir='fine_tuned_model')

Logging Configuration

By default, the sentimentpredictor package logs messages at the WARNING level and above. If you need more detailed logging (e.g., for debugging), you can set the logging level to INFO or DEBUG:

from sentimentpredictor.logger import set_logging_level

# Set logging level to INFO
set_logging_level('INFO')

# Set logging level to DEBUG
set_logging_level('DEBUG')

You can set the logging level to one of the following: DEBUG, INFO, WARNING, ERROR, CRITICAL.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

This package uses pre-trained models from the Hugging Face Transformers library.

Contributing

Contributions are welcome! Please see the CONTRIBUTING file for guidelines on how to contribute to this project.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emotionclassifier-0.1.3.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

emotionclassifier-0.1.3-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file emotionclassifier-0.1.3.tar.gz.

File metadata

  • Download URL: emotionclassifier-0.1.3.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-41-generic

File hashes

Hashes for emotionclassifier-0.1.3.tar.gz
Algorithm Hash digest
SHA256 7187206145dece8ae8332a06e54931bf2d056c976731d2f1e97abfe588139e21
MD5 169dbece9dd739209dd58fa5dc0a967f
BLAKE2b-256 44138b10095ff03a7cd9e21efcf8ca01187f8b1662f8a22693d8885579225965

See more details on using hashes here.

File details

Details for the file emotionclassifier-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: emotionclassifier-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-41-generic

File hashes

Hashes for emotionclassifier-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7e42ac14ff650d4ec7e409b0de3e006493178ea60c0981c66a66897d151e1ee2
MD5 fbf65997e7cdbd974e68a758d34f7aab
BLAKE2b-256 dfb036d7837e4f2ef0b5ad3e5db317c8eb369471f8e35677d06aa2d7b0cd8e36

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page