Dart Sentiment is a dart module that uses the AFINN-165 wordlist and Emoji Sentiment Ranking to perform sentiment analysis on arbitrary blocks of input text.
Package selection guidance compiled from public package information, community data, and project usage.
Dart Sentiment is a lightweight Dart package that performs sentiment analysis on text using the AFINN-165 wordlist and Emoji Sentiment Ranking. It assigns sentiment scores to input text, enabling developers to gauge emotional tone in user-generated content. The package supports multiple platforms including Android, iOS, Web, macOS, Windows, and Linux, making it ideal for cross-platform applications requiring real-time sentiment evaluation. It is designed for simplicity and efficiency, with no external dependencies beyond core Dart libraries.
Use cases
Analyzing user reviews
Monitoring social media sentiment
Evaluating customer feedback
Enhancing chatbot responses
Tracking brand perception
Key features
Uses AFINN-165 and emoji sentiment data
Cross-platform compatibility
Simple API integration
Real-time sentiment scoring
No external dependencies
Suitable for
Mobile and web apps
Customer experience tools
Sentiment-driven analytics
Social media monitoring
Feedback systems
Considerations
Limited to predefined lexicons
Does not support custom sentiment dictionaries
May not capture context or sarcasm
Accuracy depends on input text style
Not suitable for multilingual sentiment analysis
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Provide Language support for English, Italian, French and German.
Provide support for various emojis.
Based on analysis of text, provide an integer value in the range -n to +n (see details below)
Installation
add following dependency to your pubspec.yaml
dependencies:dart_sentiment:<latest-version>
Example
import'package:dart_sentiment/dart_sentiment.dart';
voidmain() {
final sentiment = Sentiment();
print(sentiment.analysis("The cake she made was terrible 😐"));
print(sentiment.analysis("The cake she made was terrible 😐", emoji: true));
print(sentiment.analysis("I love cats, but I am allergic to them.",));
print(sentiment.analysis("J'adore les chats, mais j'y suis allergique.",
languageCode: LanguageCode.french));
print(sentiment.analysis("Le gâteau qu'elle a fait était horrible 😐",
emoji: true, languageCode: LanguageCode.french));
}
Function defination
Param
Description
String text
Input phrase to analyze
bool emoji = false
Input emoji is present in the phrase to analyze
LanguageCode languageCode = LanguageCode.english
Language to use for sentiment analysis. LanguageCode { english, italian, french, german }
How it works
AFINN
AFINN is a list of words rated for valence with an integer between minus five (negative) and plus
five (positive). Sentiment analysis is performed by cross-checking the string tokens (words, emojis)
with the AFINN list and getting their respective scores. The comparative score is
simply: sum of each token / number of tokens. So for example let's take the following:
Score: Score calculated by adding the sentiment values of recognized words.
Comparative: Comparative score of the input string.
Token: All the tokens like words or emojis found in the input string.
Words: List of words from input string that were found in AFINN list.
Positive: List of positive words in input string that were found in AFINN list.
Negative: List of negative words in input string that were found in AFINN list.
In this case, love has a value of 3, allergic has a value of -2, and the remaining tokens are
neutral with a value of 0. Because the string has 9 tokens the resulting comparative score looks
like: (3 + -2) / 9 = 0.111111111
This approach leaves you with a mid-point of 0 and the upper and lower bounds are constrained to
positive and negative 5 respectively. For example, let's imagine an incredibly "positive" string
with 200 tokens and where each token has an AFINN score of 5. Our resulting comparative score would
look like this:
(max positive score * number of tokens) / number of tokens (5 * 200) / 200 = 5
Contribute
If you have any suggestions, improvements or issues, feel free to contribute to this project. You
can either submit a new issue or propose a pull request. Direct your pull requests into the dev
branch.