opener-scorer 3.0.2 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c4de6d63c9229258f32afd1ee2b74f664c2209c
4
- data.tar.gz: ded5b0be3d2715f56b3a3e5ee41e24058549109a
3
+ metadata.gz: 1dcd08283a4bd6b1d6e99e8925bb738820f529cf
4
+ data.tar.gz: 4212ffb0e1a53ff57452745d858f304b8d218f85
5
5
  SHA512:
6
- metadata.gz: ff27e75c29affc0264ea1507f2a9223c3682c4f53064bd275edb460ae68c6760fc41a7c46f886283b05e64a12845f82091933e6e09c49c8c4c49114ab9496638
7
- data.tar.gz: f7e36e7640d00c525583c0805fbaa0c5ac97b5a343175466a081d8160b3b0f1cab5b0650369452a488c87d26ccbf0e80333b07f4b04a99eaebe4d9fb1b5f8ba8
6
+ metadata.gz: 466ce5a7591c03b4d3a15e2c06992ff8df5b07925485aab7797864fd1b0a3e116cdd0c2438bb5ce44bdeb051239adee5a831f504050b0eb8ba88537d129abc53
7
+ data.tar.gz: 9c5cf6c073ccebe565c0b379bcc53a8cfb62b60a8b61a379861abd580fbb95646d36232c477067012b17f8685c6044f2ea5ef70b3c94d310f0a6dd9d68f1fa07
@@ -85,32 +85,33 @@ module Opener
85
85
  return lemmas_hash
86
86
  end
87
87
 
88
- ##
89
- # Create a hash with all lemma ids that have a polarity.
90
- #
91
88
  # @param [Nokogiri::XML::Document] document
92
89
  # @return [Hash]
93
90
  #
94
91
  def build_polarities_hash(document)
95
- polarities_hash = Hash.new { |hash, key| hash[key] = [] }
92
+ polarities_hash = {}
96
93
  opinions = document.at('opinions')
97
94
 
98
95
  return polarities_hash unless opinions
99
96
 
100
97
  opinions.css('opinion').each do |opinion|
101
98
  polarity = opinion.at('opinion_expression').attr('polarity').to_sym
99
+ strength = opinion.at('opinion_expression').attr('strength').to_i.abs
102
100
  op_target = opinion.at('opinion_target')
103
101
  op_expr = opinion.at('opinion_expression')
104
102
 
105
103
  if op_target
106
104
  op_target.css('span target').each do |target|
107
- polarities_hash[target.attr('id')] << polarity
105
+ require 'pry'
106
+ polarities_hash[target.attr('id')] ||= {} rescue binding.pry
107
+ polarities_hash[target.attr('id')][polarity] = strength
108
108
  end
109
109
  end
110
110
 
111
111
  if op_expr
112
- op_expr.css('span target').each do |target|
113
- polarities_hash[target.attr('id')] << polarity
112
+ op_expr.css('span target').each do |expression|
113
+ polarities_hash[expression.attr('id')] ||= {}
114
+ polarities_hash[expression.attr('id')][polarity] = strength
114
115
  end
115
116
  end
116
117
  end
@@ -125,17 +126,20 @@ module Opener
125
126
  # @return [Float]
126
127
  #
127
128
  def get_overall_score(document)
128
- polarities = []
129
+ polarities = {}
130
+ polarities[:positive] = []
131
+ polarities[:negative] = []
129
132
  opinions = document.at('opinions')
130
133
 
131
134
  return 0.0 unless opinions
132
135
 
133
136
  opinions.css('opinion').each do |opinion|
134
- polarities << opinion.at('opinion_expression').attr('polarity').to_sym
137
+ sentiment = opinion.at('opinion_expression').attr('polarity').to_sym
138
+ polarities[sentiment] << opinion.at('opinion_expression').attr('strength').to_i.abs
135
139
  end
136
140
 
137
- positive = polarities.count(:positive)
138
- negative = polarities.count(:negative)
141
+ positive = polarities[:positive].inject(0, :+)
142
+ negative = polarities[:negative].inject(0, :+)
139
143
 
140
144
  return if (positive + negative) == 0
141
145
 
@@ -166,15 +170,17 @@ module Opener
166
170
  # @return [Float]
167
171
  #
168
172
  def calculate_score(lemma_ids, polarities_hash)
169
- polarities = []
173
+ positive_polarities = []
174
+ negative_polarities = []
170
175
 
171
176
  lemma_ids.each do |id|
172
- polarities << polarities_hash[id]
177
+ positive_polarities << polarities_hash[id].fetch(:positive, 0)
178
+ negative_polarities << polarities_hash[id].fetch(:negative, 0)
173
179
  end
174
180
 
175
- positive = polarities.flatten.count(:positive)
176
- negative = polarities.flatten.count(:negative)
177
-
181
+ positive = positive_polarities.compact.inject(0, :+)
182
+ negative = negative_polarities.compact.inject(0, :+)
183
+
178
184
  return if (positive + negative) == 0
179
185
 
180
186
  score = ((positive - negative).to_f) / (positive + negative)
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  class Scorer
3
- VERSION = '3.0.2'
3
+ VERSION = '3.0.3'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-scorer
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - development@olery.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-03 00:00:00.000000000 Z
11
+ date: 2014-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -181,28 +181,28 @@ dependencies:
181
181
  description: Component for calculating scores of KAF documents
182
182
  email:
183
183
  executables:
184
- - scorer-server
185
- - scorer-daemon
186
184
  - scorer
185
+ - scorer-daemon
186
+ - scorer-server
187
187
  extensions: []
188
188
  extra_rdoc_files: []
189
189
  files:
190
190
  - config/database.rb
191
191
  - lib/opener/scorer.rb
192
- - lib/opener/scorer/version.rb
193
- - lib/opener/scorer/output.rb
194
- - lib/opener/scorer/server.rb
195
192
  - lib/opener/scorer/cli.rb
193
+ - lib/opener/scorer/output.rb
196
194
  - lib/opener/scorer/output_processor.rb
195
+ - lib/opener/scorer/server.rb
196
+ - lib/opener/scorer/version.rb
197
197
  - lib/opener/scorer/views/index.erb
198
198
  - config.ru
199
199
  - opener-scorer.gemspec
200
200
  - README.md
201
201
  - LICENSE.txt
202
202
  - exec/scorer.rb
203
- - bin/scorer-server
204
- - bin/scorer-daemon
205
203
  - bin/scorer
204
+ - bin/scorer-daemon
205
+ - bin/scorer-server
206
206
  homepage: http://opener-project.github.com/
207
207
  licenses:
208
208
  - Apache 2.0
@@ -228,4 +228,3 @@ signing_key:
228
228
  specification_version: 4
229
229
  summary: Component for calculating scores of KAF documents
230
230
  test_files: []
231
- has_rdoc: yard