opener-scorer 3.0.2 → 3.0.3

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.
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