sad_panda 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -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