Accurate & fast sentiment scoring of phrases with #hashtags, emoticons:) & emojis๐
Analyze sentiment of tweets, product reviews, social media content or any text using wink-sentiment
. It is based on AFINN and Emoji Sentiment Ranking; it's features include:
- Intelligent negation handling; for example, phrase "good product" will get a positive score whereas "not a good product" gets a negative score.
- Automatic detection and scoring of two-word phrases in a text; for example, "cool stuff", "well done", and "short sighted".
- Processes each emoji, emoticon and/or hashtag separately while scoring.
- Embeds a powerful tokenizer that returns the tokenized phrase.
- Returns the sentiment score and tokens. Each token contains a set of properties defining its sentiment, if any.
- Achieves accuracy of 77%, when validated using Amazon Product Review Sentiment Labelled Sentences Data Set at UCI Machine Learning Repository.
Use npm to install:
npm install wink-sentiment --save
// Load wink-sentiment package.
var sentiment = require( 'wink-sentiment' );
// Just give any phrase and checkout the sentiment score. A positive score
// means a positive sentiment, whereas a negative score indicates a negative
// sentiment. Neutral sentiment is signalled by a near zero score.
// Positive sentiment text.
sentiment( 'Excited to be part of the @imascientist team:-)!' );
// -> { score: 5,
// normalizedScore: 2.5,
// tokenizedPhrase: [
// { value: 'Excited', tag: 'word', score: 3 },
// { value: 'to', tag: 'word' },
// { value: 'be', tag: 'word' },
// { value: 'part', tag: 'word' },
// { value: 'of', tag: 'word' },
// { value: 'the', tag: 'word' },
// { value: '@imascientist', tag: 'mention' },
// { value: 'team', tag: 'word' },
// { value: ':-)', tag: 'emoticon', score: 2 },
// { value: '!', tag: 'punctuation' }
// ]
// }
// Negative sentiment text.
console.log( sentiment( 'Not a good product :(' ) );
// -> { score: -5,
// normalizedScore: -2.5,
// tokenizedPhrase: [
// { value: 'Not', tag: 'word' },
// { value: 'a', tag: 'word', negation: true },
// { value: 'good', tag: 'word', negation: true, score: -3 },
// { value: 'product', tag: 'word' },
// { value: ':(', tag: 'emoticon', score: -2 }
// ]
// }
// Neutral sentiment text.
console.log( sentiment( 'I will meet you tomorrow.' ) );
// -> { score: 0,
// normalizedScore: 0,
// tokenizedPhrase: [
// { value: 'I', tag: 'word' },
// { value: 'will', tag: 'word' },
// { value: 'meet', tag: 'word' },
// { value: 'you', tag: 'word' },
// { value: 'tomorrow', tag: 'word' },
// { value: '.', tag: 'punctuation' }
// ]
// }
Try experimenting with this example and more on Runkit in the browser.
Check out the wink sentiment API documentation to learn more.
If you spot a bug and the same has not yet been reported, raise a new issue or consider fixing it and sending a pull request.
Wink is a family of open source packages for Statistical Analysis, Natural Language Processing and Machine Learning in NodeJS. The code is thoroughly documented for easy human comprehension and has a test coverage of ~100% for reliability to build production grade solutions.
wink-sentiment is copyright 2017-18 GRAYPE Systems Private Limited.
It is licensed under the terms of the MIT License.