Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/7compass/sentimental

Simple sentiment analysis with Ruby
https://github.com/7compass/sentimental

Last synced: about 2 months ago
JSON representation

Simple sentiment analysis with Ruby

Awesome Lists containing this project

README

        

# sentimental

Simple sentiment analysis with Ruby

## How it works

Sentences are tokenized and tokens are assigned a numerical score
for their average sentiment. The total score is then used to
determine the overall sentiment in relation to the threshold.

For example, the default threshold is 0.0. If a sentence has
a score of 0, it is deemed "neutral". Higher than the thresold
is "positive", lower is "negative".

If you set the threshold to a non-zero amount, e.g. 0.25:

- Positive scores are > 0.25
- Neutral scores are -0.25 - 0.25
- Negative scores are < -0.25

## Usage

```ruby

# Create an instance for usage
analyzer = Sentimental.new

# Load the default sentiment dictionaries
analyzer.load_defaults

# And/or load your own dictionaries
analyzer.load_senti_file('path/to/your/file.txt')

# Set a global threshold
analyzer.threshold = 0.1

# Use your analyzer
analyzer.sentiment 'I love ruby'
#=> :positive

analyzer.sentiment 'I like ruby'
#=> :neutral

analyzer.sentiment 'I really like ruby'
#=> :positive

# You can make new analyzers with individual thresholds:
analyzer = Sentimental.new(threshold: 0.9)
analyzer.sentiment 'I love ruby'
#=> :positive

analyzer.sentiment 'I like ruby'
#=> :neutral

analyzer.sentiment 'I really like ruby'
#=> :neutral

# Get the numerical score of a string:
analyzer.score 'I love ruby'
#=> 0.925

```

## Sentiment dictionaries

These are currently plain-text files containing whitespace-separated
scores and tokens, e.g.:

1.0 Awesome
0.0 Meh
-1.0 Horrible

## N-grams

You can parse n-grams of words by specifying their max size in the initializer:
```
Sentimental.new(ngrams: 4)
```

The dictionary must have this format:

1.0 very happy
-2.0 no
0.0 meh

## Installation

gem install sentimental

## License

MIT License

## Credits

Based largely on Christopher MacLellan's script:
https://github.com/cmaclell/Basic-Tweet-Sentiment-Analyzer

## Changes
- 2013-10-13 Adding :-) to slang