Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/7compass/sentimental
Simple sentiment analysis with Ruby
https://github.com/7compass/sentimental
Last synced: about 1 month ago
JSON representation
Simple sentiment analysis with Ruby
- Host: GitHub
- URL: https://github.com/7compass/sentimental
- Owner: 7compass
- License: mit
- Created: 2013-03-29T19:45:19.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2019-05-10T17:37:24.000Z (over 5 years ago)
- Last Synced: 2024-10-03T13:48:08.953Z (2 months ago)
- Language: Ruby
- Size: 373 KB
- Stars: 458
- Watchers: 25
- Forks: 72
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-ruby - Sentimental - Simple sentiment analysis with Ruby. (Natural Language Processing)
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'
#=> :positiveanalyzer.sentiment 'I like ruby'
#=> :neutralanalyzer.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'
#=> :positiveanalyzer.sentiment 'I like ruby'
#=> :neutralanalyzer.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