sad_panda 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.Rhistory +0 -0
- data/.gitignore +18 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +41 -0
- data/Rakefile +1 -0
- data/lib/sad_panda.rb +6 -0
- data/lib/sad_panda/emotions/datalist +2 -0
- data/lib/sad_panda/emotions/emotions.csv +1542 -0
- data/lib/sad_panda/emotions/subjectivity.csv +1 -0
- data/lib/sad_panda/status_message.rb +1910 -0
- data/lib/sad_panda/version.rb +3 -0
- data/sad_panda.gemspec +25 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/status_message_spec.rb +209 -0
- data/spec/version_spec.rb +0 -0
- metadata +131 -0
data/sad_panda.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'sad_panda/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "sad_panda"
|
8
|
+
spec.version = SadPanda::VERSION
|
9
|
+
spec.authors = ["Matt Buckley"]
|
10
|
+
spec.email = ["matt.d.buckley1212@gmail.com"]
|
11
|
+
spec.description = %q{sad_panda is a gem featuring tools for sentiment analysis of natural language: positivity/negativity and emotion classification.}
|
12
|
+
spec.summary = %q{sad_panda is a gem featuring tools for sentiment analysis of natural language: positivity/negativity and emotion classification.}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_runtime_dependency "ruby-stemmer"
|
24
|
+
spec.add_development_dependency "rspec"
|
25
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,209 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module SadPanda
|
4
|
+
describe StatusMessage do
|
5
|
+
|
6
|
+
let(:status_message) {SadPanda::StatusMessage.new "a message"}
|
7
|
+
let(:emotions) {status_message.get_term_emotions}
|
8
|
+
let(:polarities) {status_message.get_term_polarities}
|
9
|
+
let(:term_frequencies) {status_message.build_term_frequencies}
|
10
|
+
|
11
|
+
describe "when initialized" do
|
12
|
+
it "verbose defaults to false" do
|
13
|
+
expect(status_message.verbose).to be_false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "when 'build_term_frequencies' method is called" do
|
18
|
+
context "when status_message is an empty string" do
|
19
|
+
it "returns an empty hash" do
|
20
|
+
empty_message = SadPanda::StatusMessage.new " "
|
21
|
+
expect(empty_message.build_term_frequencies).to be_empty
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "when status_message is a non-recogizable word" do
|
26
|
+
it "returns a empty hash with key == zorg and and value == 1" do
|
27
|
+
word = "zorg"
|
28
|
+
strange_message = SadPanda::StatusMessage.new word
|
29
|
+
expect(strange_message.build_term_frequencies).to eql({"zorg" => 1})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when status_message includes recognizable words" do
|
34
|
+
it "returns a non-empty hash" do
|
35
|
+
hash = status_message.build_term_frequencies
|
36
|
+
expect(hash).to_not be_empty
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "when 'get_term_emotions method' is called" do
|
42
|
+
it 'returns a hash' do
|
43
|
+
output = status_message.get_term_emotions
|
44
|
+
expect(output.class).to eql(Hash)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "is non-empty" do
|
48
|
+
output = status_message.get_term_emotions
|
49
|
+
expect(output).to_not be_empty
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "when 'get_term_polarities' method is called" do
|
54
|
+
it "returns a hash" do
|
55
|
+
output = status_message.get_term_polarities
|
56
|
+
expect(output.class).to eql(Hash)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "is non empty" do
|
60
|
+
output = status_message.get_term_polarities
|
61
|
+
expect(output).to_not be_empty
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "when 'get_emotion_score' method is called" do
|
66
|
+
it 'returns a string' do
|
67
|
+
output = status_message.get_emotion_score emotions,term_frequencies
|
68
|
+
expect(output.class).to eql(String)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "when 'get_polarity_score' method is called" do
|
73
|
+
it 'returns a string' do
|
74
|
+
output = status_message.get_polarity_score polarities,term_frequencies
|
75
|
+
expect(output.class).to eql(Fixnum)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
describe "when polarity method is called" do
|
81
|
+
|
82
|
+
it "returns a fixnum" do
|
83
|
+
expect(status_message.polarity.class).to eql(Fixnum)
|
84
|
+
end
|
85
|
+
|
86
|
+
context "when status_message == 'my lobster collection makes me happy' " do
|
87
|
+
it "emotion == 'joy' " do
|
88
|
+
status_message = SadPanda::StatusMessage.new "my lobster collection makes me happy"
|
89
|
+
expect(status_message.emotion).to eql("joy")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context "when status_message == 'sad' " do
|
94
|
+
it "emotion == 'sadness' " do
|
95
|
+
status_message = SadPanda::StatusMessage.new "sad"
|
96
|
+
expect(status_message.emotion).to eql("sadness")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "when status_message == 'angry' " do
|
101
|
+
it "emotion == 'anger' " do
|
102
|
+
status_message = SadPanda::StatusMessage.new "angry"
|
103
|
+
expect(status_message.emotion).to eql('anger')
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "when status_message == 'I am ril afraid of cats, homie' " do
|
108
|
+
it "emotion == 'fear' " do
|
109
|
+
status_message = SadPanda::StatusMessage.new "I am ril afraid of cats, homie"
|
110
|
+
expect(status_message.emotion).to eql("fear")
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
context "when status == 'I am disgusted' " do
|
115
|
+
it "emotion == 'disgust'" do
|
116
|
+
status_message = SadPanda::StatusMessage.new "I am disgusted"
|
117
|
+
expect(status_message.emotion).to eql('disgust')
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "when status == 'I am so surprised'" do
|
122
|
+
it "emotion == 'surprise'" do
|
123
|
+
status_message = SadPanda::StatusMessage.new "I am so surprised"
|
124
|
+
expect(status_message.emotion).to eql('surprise')
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context "when status_message == 'blarg' " do
|
129
|
+
it "emotion == 'Uncertain' " do
|
130
|
+
status_message = SadPanda::StatusMessage.new "blarg"
|
131
|
+
expect(status_message.emotion).to eql('Uncertain')
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
context "when status_message == ' ' " do
|
136
|
+
it "emotion is 'Uncertain'" do
|
137
|
+
status_message = SadPanda::StatusMessage.new " "
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "when emotion method is called" do
|
144
|
+
|
145
|
+
it "returns a string" do
|
146
|
+
expect(status_message.emotion.class).to eql(String)
|
147
|
+
end
|
148
|
+
|
149
|
+
context "when status_message == 'I am happy' " do
|
150
|
+
it "polarity is greater than zero" do
|
151
|
+
status_message = SadPanda::StatusMessage.new "I am happy"
|
152
|
+
expect(status_message.polarity).to be > 0
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
|
157
|
+
context "when status_message == 'sad' " do
|
158
|
+
it "polarity is less than zero" do
|
159
|
+
status_message = SadPanda::StatusMessage.new "sad"
|
160
|
+
expect(status_message.polarity).to be < 0
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
context "when status_message == 'angry' " do
|
165
|
+
it "polarity is less than zero" do
|
166
|
+
status_message = SadPanda::StatusMessage.new "angry"
|
167
|
+
expect(status_message.polarity).to be < 0
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context "when status_message == 'I am terrified' " do
|
172
|
+
it "polarity is less than zero" do
|
173
|
+
status_message = SadPanda::StatusMessage.new "I am fearful"
|
174
|
+
expect(status_message.polarity).to be < 0
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
context "when status == 'I am disgusted' " do
|
179
|
+
it "has a non-zero polarity value" do
|
180
|
+
status_message = SadPanda::StatusMessage.new "I am disgusted"
|
181
|
+
expect(status_message.polarity).to be < 0
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
context "when status == 'This is surprising'" do
|
186
|
+
it "has a non-zero polarity value" do
|
187
|
+
status_message = SadPanda::StatusMessage.new "This is surprising"
|
188
|
+
expect(status_message.polarity).to_not eql(0)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context "when status_message == 'blarg' " do
|
193
|
+
it "polarity is zero" do
|
194
|
+
status_message = SadPanda::StatusMessage.new "blarg"
|
195
|
+
expect(status_message.polarity).to eql(0)
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
context "when status_message == ' ' " do
|
200
|
+
it "polarity is zero" do
|
201
|
+
status_message = SadPanda::StatusMessage.new " "
|
202
|
+
expect(status_message.polarity).to eql(0)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
end
|
207
|
+
|
208
|
+
end
|
209
|
+
end
|
File without changes
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sad_panda
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.9
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Matt Buckley
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-05-21 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: ruby-stemmer
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description: ! 'sad_panda is a gem featuring tools for sentiment analysis of natural
|
79
|
+
language: positivity/negativity and emotion classification.'
|
80
|
+
email:
|
81
|
+
- matt.d.buckley1212@gmail.com
|
82
|
+
executables: []
|
83
|
+
extensions: []
|
84
|
+
extra_rdoc_files: []
|
85
|
+
files:
|
86
|
+
- .Rhistory
|
87
|
+
- .gitignore
|
88
|
+
- Gemfile
|
89
|
+
- LICENSE.txt
|
90
|
+
- README.md
|
91
|
+
- Rakefile
|
92
|
+
- lib/sad_panda.rb
|
93
|
+
- lib/sad_panda/emotions/datalist
|
94
|
+
- lib/sad_panda/emotions/emotions.csv
|
95
|
+
- lib/sad_panda/emotions/subjectivity.csv
|
96
|
+
- lib/sad_panda/status_message.rb
|
97
|
+
- lib/sad_panda/version.rb
|
98
|
+
- sad_panda.gemspec
|
99
|
+
- spec/spec_helper.rb
|
100
|
+
- spec/status_message_spec.rb
|
101
|
+
- spec/version_spec.rb
|
102
|
+
homepage: ''
|
103
|
+
licenses:
|
104
|
+
- MIT
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubyforge_project:
|
123
|
+
rubygems_version: 1.8.25
|
124
|
+
signing_key:
|
125
|
+
specification_version: 3
|
126
|
+
summary: ! 'sad_panda is a gem featuring tools for sentiment analysis of natural language:
|
127
|
+
positivity/negativity and emotion classification.'
|
128
|
+
test_files:
|
129
|
+
- spec/spec_helper.rb
|
130
|
+
- spec/status_message_spec.rb
|
131
|
+
- spec/version_spec.rb
|