AFINN-based sentiment analysis for dart
Dart Sentiment
AFINN-based sentiment analysis for dart
Dart Sentiment is a dart package that uses
the AFINN-165
wordlist
and Emoji Sentiment Ranking
to perform sentiment analysis on arbitrary
blocks of input text. Dart Sentiment provides several things:
- 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';
void main() {
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:
I love cats, but I am allergic to them.
That string results in the following:
{
score: 1,
comparative: 0.1111111111111111,
tokens: [
"i",
"love",
"cats",
"but",
"i",
"am",
"allergic",
"to",
"them"
],
positive: [[love, 3]],
negative: [[allergic, 2]]
}
- Returned Objects
- 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.
License
Dart Sentiment is released under
the MIT License
Credit
Dart Sentiment inspired by the Javascript
package sentiment
About me
I am India based flutter developer