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.
@@ -0,0 +1,3 @@
1
+ module SadPanda
2
+ VERSION = "0.0.9"
3
+ end
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
@@ -0,0 +1,3 @@
1
+ require 'sad_panda/version'
2
+ require 'sad_panda/status_message'
3
+ require 'lingua/stemmer'
@@ -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