Dart Sentiment

Flutter Community: dart_sentiment

pub package

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

ParamDescription
String textInput phrase to analyze
bool emoji = falseInput emoji is present in the phrase to analyze
LanguageCode languageCode = LanguageCode.englishLanguage 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

pub package twitter website

GitHub

Download the full project for this post from the following button

This source is fully free for all time

Download as zip

Comments are closed.

You're Offline!

Top