sad_panda 0.2.1 → 0.2.2
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/lib/sad_panda.rb +44 -43
- data/lib/sad_panda/version.rb +1 -1
- metadata +4 -4
data/lib/sad_panda.rb
CHANGED
@@ -29,8 +29,9 @@ module SadPanda
|
|
29
29
|
end
|
30
30
|
|
31
31
|
message_text = @message.gsub(/[^a-z ]/i, '').downcase
|
32
|
-
|
33
|
-
|
32
|
+
message_text.gsub!(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/, '')
|
33
|
+
message_text.gsub!(/(?=\w*h)(?=\w*t)(?=\w*t)(?=\w*p)\w*/, '')
|
34
|
+
message_text.gsub!(/\s\s+/,' ')
|
34
35
|
words = message_text.split(" ")
|
35
36
|
|
36
37
|
#filter for english stopwords
|
@@ -79,33 +80,33 @@ module SadPanda
|
|
79
80
|
puts "SCORE: "+emotion_score[key].to_s
|
80
81
|
end
|
81
82
|
end
|
82
|
-
|
83
|
-
|
84
|
-
|
83
|
+
# return an emotion_score_hash to be processed by emotion
|
84
|
+
# get clue from any emoticons present
|
85
|
+
if (@happy_que && @sad_que)
|
86
|
+
return "ambiguous"
|
87
|
+
elsif @happy_que
|
88
|
+
return "joy"
|
89
|
+
elsif @sad_que
|
90
|
+
return "sadness"
|
91
|
+
else
|
92
|
+
## 0 if unable to detect emotion
|
93
|
+
if emotion_score == {}
|
85
94
|
return "ambiguous"
|
86
|
-
elsif @happy_que
|
87
|
-
return "joy"
|
88
|
-
elsif @sad_que
|
89
|
-
return "sadness"
|
90
95
|
else
|
91
|
-
|
92
|
-
if emotion_score == {}
|
93
|
-
return "ambiguous"
|
94
|
-
else
|
95
|
-
score = emotion_score.max_by{|k, v| v}[0]
|
96
|
-
end
|
97
|
-
score
|
96
|
+
score = emotion_score.max_by{|k, v| v}[0]
|
98
97
|
end
|
98
|
+
score
|
99
|
+
end
|
99
100
|
end
|
100
101
|
|
101
102
|
# this method returns the best-fit emotion for the status message
|
102
103
|
def self.emotion message
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
104
|
+
# get the emotion for which the emotion score value is highest
|
105
|
+
if @emotions
|
106
|
+
SadPanda.get_emotion_score(@emotions, SadPanda.build_term_frequencies(message))
|
107
|
+
else
|
108
|
+
SadPanda.get_emotion_score(EmotionBank.get_term_emotions, build_term_frequencies(message))
|
109
|
+
end
|
109
110
|
end
|
110
111
|
|
111
112
|
# this method gives the status method a normalized polarity
|
@@ -120,28 +121,28 @@ module SadPanda
|
|
120
121
|
end
|
121
122
|
end
|
122
123
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
end
|
140
|
-
if @verbose
|
141
|
-
puts "POLARITY: " + score.to_s
|
142
|
-
end
|
143
|
-
score
|
124
|
+
# return an polarity_score_hash to be processed by polarity method
|
125
|
+
# return an emotion_score_hash to be processed by emotion
|
126
|
+
# get clue from any emoticons present
|
127
|
+
if (@happy_que && @sad_que)
|
128
|
+
score = 5
|
129
|
+
elsif @happy_que
|
130
|
+
score = 8
|
131
|
+
elsif @sad_que
|
132
|
+
score = 2
|
133
|
+
else
|
134
|
+
if polarity_scores == []
|
135
|
+
# polarity unreadable; return a neutral score of zero
|
136
|
+
score = 5
|
137
|
+
else
|
138
|
+
score = polarity_scores.inject(0.0){ |sum, el| sum + el}/polarity_scores.length
|
139
|
+
polarity_scores = []
|
144
140
|
end
|
141
|
+
if @verbose
|
142
|
+
puts "POLARITY: " + score.to_s
|
143
|
+
end
|
144
|
+
score
|
145
|
+
end
|
145
146
|
end
|
146
147
|
|
147
148
|
# this method returns the polarity value for the status message
|
data/lib/sad_panda/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sad_panda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
hash:
|
119
|
+
hash: -1400782450660875033
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
none: false
|
122
122
|
requirements:
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
version: '0'
|
126
126
|
segments:
|
127
127
|
- 0
|
128
|
-
hash:
|
128
|
+
hash: -1400782450660875033
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
131
|
rubygems_version: 1.8.25
|