A flexible emotion classifier with support for multiple models
Project description
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7187206145dece8ae8332a06e54931bf2d056c976731d2f1e97abfe588139e21 |
|
MD5 | 169dbece9dd739209dd58fa5dc0a967f |
|
BLAKE2b-256 | 44138b10095ff03a7cd9e21efcf8ca01187f8b1662f8a22693d8885579225965 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e42ac14ff650d4ec7e409b0de3e006493178ea60c0981c66a66897d151e1ee2 |
|
MD5 | fbf65997e7cdbd974e68a758d34f7aab |
|
BLAKE2b-256 | dfb036d7837e4f2ef0b5ad3e5db317c8eb369471f8e35677d06aa2d7b0cd8e36 |