opener-scorer 1.1.5 → 3.0.0

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: 7cec03c3a1025f5374d10a1daabe2610ca4eed47
4
- data.tar.gz: f5cb48ea5970933b2964df50d0a0401910a58cd7
3
+ metadata.gz: 1a70520b811f55477a7c7c4a080a81802c4745cd
4
+ data.tar.gz: d35154b0aaeb1bc37799fbef5a431320b7f69c17
5
5
  SHA512:
6
- metadata.gz: e3de752d872e14163811a8bf317204aa49ae58601acb1ff416495191a0fcf14cf8cdcba35b77744317303d14147d9000465a4fc8c651fce331c411e97c366a2c
7
- data.tar.gz: 8287e058626a79f020723ef294ff8c35ff1430865d4dae021b69587e796aa4c55e10372e813677ff27cdf22899b9bf878745d4767f536be867947e6ff2ddcbe6
6
+ metadata.gz: 26cc6e64fbbaa18be63c025222f7d834fa495aeef44e0e9c5b10e5756cfa2a7393b83c43ed29deaae94f85ee3410c063bf2864109ad64a5856f39d44a1c89250
7
+ data.tar.gz: 305139f6f15af3be653c2f91bbfd06f354b29c436c3601879b70388a6cf24e4527ca6c7a932b69ead78930f80979fb6fb053313c645c8b2b5b573d76a95b43e0
data/README.md CHANGED
@@ -1,38 +1,42 @@
1
- Scorer
2
- ------------
1
+ # Scorer
3
2
 
4
- Component that stores results from the Opener Web Services chain into a MySQL Database and shows them into your browser.
3
+ Component that stores results from the Opener Web Services chain into a MySQL
4
+ Database and shows them into your browser.
5
5
 
6
- It can be used instead of Opener Outlet, to calculate overall sentiment score and sentiment score per topic.
6
+ It can be used instead of Opener Outlet, to calculate overall sentiment score
7
+ and sentiment score per topic.
7
8
 
8
- ### Confused by some terminology?
9
+ ## Confused by some terminology?
9
10
 
10
- This software is part of a larger collection of natural language processing tools known as "the OpeNER project". You can find more information about the project at [the OpeNER portal](http://opener-project.github.io). There you can also find references to terms like KAF (an XML standard to represent linguistic annotations in texts), component, cores, scenario's and pipelines.
11
+ This software is part of a larger collection of natural language processing
12
+ tools known as "the OpeNER project". You can find more information about the
13
+ project at [the OpeNER portal](http://opener-project.github.io). There you can
14
+ also find references to terms like KAF (an XML standard to represent linguistic
15
+ annotations in texts), component, cores, scenario's and pipelines.
11
16
 
12
-
13
- Quick Use Example
14
- -----------------
17
+ ## Quick Use Example
15
18
 
16
19
  Installing the scorer can be done by executing:
17
20
 
18
21
  gem install opener-scorer
19
22
 
20
- Please bare in mind that all components in OpeNER take KAF as an input and output KAF by default.
23
+ Please keep in mind that all components in OpeNER take KAF as an input and
24
+ output KAF by default.
21
25
 
22
26
  ### Command line interface
23
27
 
24
- You should now be able to call the scorer as a regular shell command: by its name. Once installed the gem normally sits in your path so you can call it directly from anywhere.
28
+ You should now be able to call the scorer as a regular shell command: by its
29
+ name. Once installed the gem normally sits in your path so you can call it
30
+ directly from anywhere.
25
31
 
26
- This aplication reads a text from standard input in order to rate the given text.
32
+ This aplication reads a text from standard input in order to rate the given
33
+ text:
27
34
 
28
35
  cat some_kind_of_kaf_file.kaf | scorer
29
36
 
30
-
31
37
  This will output (JSON Format):
32
38
 
33
- ```
34
- {"overall":-0.06666666666666667,"Restaurant":0.3333333333333333,"Staff":-1.0,"Rooms":1.0,"Facilities":-1.0}
35
- ```
39
+ {"overall":-0.06666666666666667,"Restaurant":0.3333333333333333,"Staff":-1.0,"Rooms":1.0,"Facilities":-1.0}
36
40
 
37
41
  ### Webservices
38
42
 
@@ -40,28 +44,33 @@ You can launch a webservice by executing:
40
44
 
41
45
  scorer-server
42
46
 
43
- This will launch a mini webserver with the webservice. It defaults to port 9292, so you can access it at <http://localhost:9292>
47
+ This will launch a mini webserver with the webservice. It defaults to port 9292,
48
+ so you can access it at <http://localhost:9292>.
44
49
 
45
- To launch it on a different port provide the `-p [port-number]` option like this:
50
+ To launch it on a different port provide the `-p [port-number]` option like
51
+ this:
46
52
 
47
53
  scorer-server -p 1234
48
54
 
49
55
  It then launches at <http://localhost:1234>
50
56
 
51
- Documentation on the Webservice is provided by surfing to the urls provided above. For more information on how to launch a webservice run the command with the ```-h``` option.
52
-
57
+ Documentation on the Webservice is provided by surfing to the urls provided
58
+ above. For more information on how to launch a webservice run the command with
59
+ the `--help` option.
53
60
 
54
61
  ### Daemon
55
62
 
56
- Last but not least the scorer comes shipped with a daemon that can read jobs (and write) jobs to and from Amazon SQS queues. For more information type:
63
+ Last but not least the scorer comes shipped with a daemon that can read jobs
64
+ (and write) jobs to and from Amazon SQS queues. For more information type:
57
65
 
58
66
  scorer-daemon -h
59
67
 
68
+ ## Description of dependencies
60
69
 
61
- Description of dependencies
62
- ---------------------------
63
-
64
- This component runs best if you run it in an environment suited for OpeNER components. You can find an installation guide and helper tools in the [OpeNER installer](https://github.com/opener-project/opener-installer) and an [installation guide on the Opener Website](http://opener-project.github.io/getting-started/how-to/local-installation.html)
70
+ This component runs best if you run it in an environment suited for OpeNER
71
+ components. You can find an installation guide and helper tools in the
72
+ [OpeNER installer](https://github.com/opener-project/opener-installer) and an
73
+ [installation guide on the Opener Website](http://opener-project.github.io/getting-started/how-to/local-installation.html)
65
74
 
66
75
  At least you need the following system setup:
67
76
 
@@ -69,29 +78,17 @@ At least you need the following system setup:
69
78
 
70
79
  * JRuby 1.7.9 or newer
71
80
 
72
- The Core
73
- --------
74
-
75
- The component is a fat wrapper around the actual language technology core. You can find the core technolies in the following repositories:
76
-
77
- * (link to) Related Core readmes
78
-
79
- Where to go from here
80
- ---------------------
81
+ ## Where to go from here
81
82
 
82
83
  * [Check the project website](http://opener-project.github.io)
83
84
  * [Checkout the webservice](http://opener.olery.com/scorer)
84
85
 
85
- Report problem/Get help
86
- -----------------------
86
+ ## Report problem/Get help
87
87
 
88
- If you encounter problems, please email support@opener-project.eu or leave an issue in the
88
+ If you encounter problems, please email support@opener-project.eu or leave an issue in the
89
89
  [issue tracker](https://github.com/opener-project/scorer/issues).
90
90
 
91
-
92
-
93
- Contributing
94
- ------------
91
+ ## Contributing
95
92
 
96
93
  1. Fork it <http://github.com/opener-project/scorer/fork>
97
94
  2. Create your feature branch (`git checkout -b my-new-feature`)
data/bin/scorer CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
- require 'json'
3
- require_relative '../lib/opener/scorer/output_processor'
4
2
 
5
- processor = Opener::Scorer::OutputProcessor.new((STDIN.tty? ? nil : STDIN.read))
3
+ require_relative '../lib/opener/scorer'
6
4
 
7
- puts processor.process.to_json
5
+ cli = Opener::Scorer::CLI.new
6
+
7
+ cli.run
data/bin/scorer-daemon CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  require 'opener/daemons'
4
4
 
5
- exec_path = File.expand_path('../../exec/scorer.rb', __FILE__)
5
+ controller = Opener::Daemons::Controller.new(
6
+ :name => 'opener-scorer',
7
+ :exec_path => File.expand_path('../../exec/scorer.rb', __FILE__)
8
+ )
6
9
 
7
- Opener::Daemons::Controller.new(
8
- :name => 'scorer',
9
- :exec_path => exec_path
10
- )
10
+ controller.run
data/bin/scorer-server CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'puma/cli'
3
+ require 'opener/webservice'
4
4
 
5
- rack_config = File.expand_path('../../config.ru', __FILE__)
5
+ parser = Opener::Webservice::OptionParser.new(
6
+ 'opener-scorer',
7
+ File.expand_path('../../config.ru', __FILE__)
8
+ )
6
9
 
7
- cli = Puma::CLI.new([rack_config] + ARGV)
8
- cli.run
10
+ parser.run
data/exec/scorer.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'opener/daemons'
4
+
4
5
  require_relative '../lib/opener/scorer'
5
6
 
6
- options = Opener::Daemons::OptParser.parse!(ARGV)
7
- daemon = Opener::Daemons::Daemon.new(Opener::Scorer, options)
7
+ daemon = Opener::Daemons::Daemon.new(Opener::Scorer::OutputProcessor)
8
8
 
9
- daemon.start
9
+ daemon.start
data/lib/opener/scorer.rb CHANGED
@@ -1,10 +1,14 @@
1
+ require 'json'
2
+ require 'securerandom'
3
+
4
+ require 'active_record'
5
+ require 'nokogiri'
6
+ require 'sinatra/base'
7
+ require 'slop'
8
+
9
+ require_relative 'scorer/cli'
1
10
  require_relative 'scorer/output'
2
11
  require_relative 'scorer/output_processor'
3
12
  require_relative 'scorer/version'
4
13
  require_relative 'scorer/server'
5
14
  require_relative '../../config/database'
6
-
7
- module Opener
8
- class Scorer
9
- end
10
- end
@@ -0,0 +1,59 @@
1
+ module Opener
2
+ class Scorer
3
+ ##
4
+ # CLI wrapper around {Opener::Scorer} using Slop.
5
+ #
6
+ # @!attribute [r] parser
7
+ # @return [Slop]
8
+ #
9
+ class CLI
10
+ attr_reader :parser
11
+
12
+ def initialize
13
+ @parser = configure_slop
14
+ end
15
+
16
+ ##
17
+ # @param [Array] argv
18
+ #
19
+ def run(argv = ARGV)
20
+ parser.parse(argv)
21
+ end
22
+
23
+ ##
24
+ # @return [Slop]
25
+ #
26
+ def configure_slop
27
+ return Slop.new(:strict => false, :indent => 2, :help => true) do
28
+ banner 'Usage: scorer [OPTIONS]'
29
+
30
+ separator <<-EOF.chomp
31
+
32
+ About:
33
+
34
+ Calculates and stores a score in MySQL based on an input KAF document.
35
+ This command reads input from STDIN.
36
+
37
+ Example:
38
+
39
+ cat some_file.kaf | scorer
40
+ EOF
41
+
42
+ separator "\nOptions:\n"
43
+
44
+ on :v, :version, 'Shows the current version' do
45
+ abort "scorer v#{VERSION} on #{RUBY_DESCRIPTION}"
46
+ end
47
+
48
+ run do |opts, args|
49
+ scorer = OutputProcessor.new
50
+ input = STDIN.tty? ? nil : STDIN.read
51
+ output = scorer.process(input)
52
+
53
+ puts JSON.dump(output)
54
+ end
55
+ end
56
+ end
57
+ end # CLI
58
+ end # Scorer
59
+ end # Opener
@@ -1,5 +1,3 @@
1
- require 'active_record'
2
-
3
1
  module Opener
4
2
  class Scorer
5
3
  class Output < ActiveRecord::Base
@@ -7,4 +5,3 @@ module Opener
7
5
  end
8
6
  end
9
7
  end
10
-
@@ -1,34 +1,38 @@
1
- require 'nokogiri'
2
-
3
1
  module Opener
4
2
  class Scorer
5
3
  ##
6
4
  # Class that given a raw xml input, it will calculate the overall sentiment
7
5
  # score and the scores per topic, given that it is a valid KAF document.
8
6
  #
9
- # @!attribute [r] input
7
+ # @!attribute [r] request_id
10
8
  # @return [String]
11
9
  #
12
- # @!attribute [r] lemmas_array
13
- # @return [Array]
14
- #
15
- # @!attribute [r] lemmas_hash
16
- # @return [Hash]
17
- #
18
- # @!attribute [r] polarities_hash
19
- # @return [Hash]
20
- #
21
10
  class OutputProcessor
22
- attr_accessor :input, :lemmas_array, :lemmas_hash, :polarities_hash
11
+ attr_reader :request_id
12
+
13
+ ##
14
+ # @param [Hash] options
15
+ #
16
+ # @option options [Symbol] :request_id
17
+ #
18
+ def initialize(options = {})
19
+ @request_id = options[:request_id]
20
+ end
23
21
 
24
22
  ##
23
+ # Runs the processor and returns the results as a String.
24
+ #
25
25
  # @param [String] input
26
+ # @return [String]
26
27
  #
27
- def initialize(input)
28
- @input = Nokogiri::XML::Document.parse(input)
29
- @lemmas_array = []
30
- @lemmas_hash = {}
31
- @polarities_hash = {}
28
+ def run(input)
29
+ output = Output.new
30
+ output.uuid = request_id
31
+ output.text = JSON.dump(process(input))
32
+
33
+ output.save!
34
+
35
+ return output.text
32
36
  end
33
37
 
34
38
  ##
@@ -36,18 +40,21 @@ module Opener
36
40
  #
37
41
  # @return [Hash]
38
42
  #
39
- def process
40
- scores = {}
43
+ def process(input)
44
+ document = Nokogiri::XML(input)
45
+ scores = {}
41
46
 
42
- build_lemmas_hash
43
- build_polarities_hash
47
+ lemmas_hash = build_lemmas_hash(document)
48
+ polarities_hash = build_polarities_hash(document)
49
+ overall_score = get_overall_score(document)
44
50
 
45
- if overall_score = get_overall_score
51
+ if overall_score
46
52
  scores[:overall] = overall_score
47
53
  end
48
54
 
49
55
  lemmas_hash.keys.each do |topic|
50
- score = get_topic_score(topic)
56
+ score = get_topic_score(topic, lemmas_hash, polarities_hash)
57
+
51
58
  if score
52
59
  scores[topic] = score
53
60
  end
@@ -59,91 +66,115 @@ module Opener
59
66
  protected
60
67
 
61
68
  ##
62
- # Create a hash with all lemma ids per property and also an array with
63
- # all lemma ids.
69
+ # @param [Nokogiri::XML::Document] document
70
+ # @return [Hash]
64
71
  #
65
- def build_lemmas_hash
66
- input.css('features properties property').each do |property|
72
+ def build_lemmas_hash(document)
73
+ lemmas_hash = Hash.new { |hash, key| hash[key] = [] }
74
+
75
+ document.css('features properties property').each do |property|
67
76
  lemma = property.attr('lemma').to_sym
68
- lemmas_hash[lemma] ||= []
77
+
69
78
  property.css('references target').each do |target|
70
79
  lemma_id = target.attr('id')
71
- lemmas_array << lemma_id
80
+
72
81
  lemmas_hash[lemma] << lemma_id
73
82
  end
74
83
  end
84
+
85
+ return lemmas_hash
75
86
  end
76
87
 
77
88
  ##
78
89
  # Create a hash with all lemma ids that have a polarity.
79
90
  #
80
- def build_polarities_hash
81
- if opinions = input.at('opinions')
82
- opinions.css('opinion').each do |opinion|
83
- polarity = opinion.at('opinion_expression').attr('polarity').to_sym
84
- if opinion.at('opinion_target')
85
- opinion.at('opinion_target').css('span target').each do |target|
86
- polarities_hash[target.attr('id')] ||= []
87
- polarities_hash[target.attr('id')] << polarity
88
- end
91
+ # @param [Nokogiri::XML::Document] document
92
+ # @return [Hash]
93
+ #
94
+ def build_polarities_hash(document)
95
+ polarities_hash = Hash.new { |hash, key| hash[key] = [] }
96
+ opinions = document.at('opinions')
97
+
98
+ return polarities_hash unless opinions
99
+
100
+ opinions.css('opinion').each do |opinion|
101
+ polarity = opinion.at('opinion_expression').attr('polarity').to_sym
102
+ op_target = opinion.at('opinion_target')
103
+ op_expr = opinion.at('opinion_expression')
104
+
105
+ if op_target
106
+ op_target.css('span target').each do |target|
107
+ polarities_hash[target.attr('id')] << polarity
89
108
  end
90
- if targets = opinion.at('opinion_expression')
91
- opinion.at('opinion_expression').css('span target').each do |target|
92
- polarities_hash[target.attr('id')] ||= []
93
- polarities_hash[target.attr('id')] << polarity
94
- end
109
+ end
110
+
111
+ if op_expr
112
+ op_expr.css('span target').each do |target|
113
+ polarities_hash[target.attr('id')] << polarity
95
114
  end
96
115
  end
97
116
  end
117
+
118
+ return polarities_hash
98
119
  end
99
120
 
100
121
  ##
101
122
  # Get the score for all lemmas that have a polarity.
102
123
  #
124
+ # @param [Nokogiri::XML::Docuemnt] document
103
125
  # @return [Float]
104
126
  #
105
- def get_overall_score
106
- score = 0
127
+ def get_overall_score(document)
107
128
  polarities = []
108
- if opinions = input.at('opinions')
109
- input.at('opinions').css('opinion').each do |opinion|
110
- polarities << opinion.at('opinion_expression').attr('polarity').to_sym
111
- end
112
-
113
- positive = polarities.count(:positive)
114
- negative = polarities.count(:negative)
115
-
116
- return if (positive + negative) == 0
117
-
118
- score = ((positive - negative).to_f) / (positive + negative)
129
+ opinions = document.at('opinions')
130
+
131
+ return 0.0 unless opinions
132
+
133
+ opinions.css('opinion').each do |opinion|
134
+ polarities << opinion.at('opinion_expression').attr('polarity').to_sym
119
135
  end
120
- return score
136
+
137
+ positive = polarities.count(:positive)
138
+ negative = polarities.count(:negative)
139
+
140
+ return if (positive + negative) == 0
141
+
142
+ return ((positive - negative).to_f) / (positive + negative)
121
143
  end
122
144
 
123
145
  ##
124
146
  # Given a topic, return the sentiment score of the lemmas of this topic.
125
147
  #
126
- # @return [Float] || [NilClass]
148
+ # @param [String] topic
149
+ # @param [Hash] lemmas_hash
150
+ # @param [Hash] polarities_hash
151
+ # @return [Float]
127
152
  #
128
- def get_topic_score(topic)
129
- return calculate_score(lemmas_hash[topic]) if lemmas_hash[topic]
153
+ def get_topic_score(topic, lemmas_hash, polarities_hash)
154
+ if lemmas_hash[topic].empty?
155
+ return 0.0
156
+ else
157
+ return calculate_score(lemmas_hash[topic], polarities_hash)
158
+ end
130
159
  end
131
160
 
132
161
  ##
133
162
  # Given an array of lemma ids, calculate the sentiment score.
134
163
  #
164
+ # @param [Array] lemma_ids
165
+ # @param [Hash] polarities_hash
135
166
  # @return [Float]
136
167
  #
137
- def calculate_score(lemma_ids)
168
+ def calculate_score(lemma_ids, polarities_hash)
138
169
  polarities = []
139
170
 
140
171
  lemma_ids.each do |id|
141
172
  polarities << polarities_hash[id]
142
- end
143
-
173
+ end
174
+
144
175
  positive = polarities.flatten.count(:positive)
145
176
  negative = polarities.flatten.count(:negative)
146
-
177
+
147
178
  return if (positive + negative) == 0
148
179
 
149
180
  score = ((positive - negative).to_f) / (positive + negative)
@@ -1,16 +1,15 @@
1
- require 'sinatra'
2
- require 'nokogiri'
1
+ require 'opener/webservice'
3
2
 
4
3
  module Opener
5
4
  class Scorer
6
- class Server < Sinatra::Base
5
+ ##
6
+ # Server for storing scorer data in MySQL.
7
+ #
8
+ class Server < Webservice::Server
9
+ set :views, File.expand_path('../views', __FILE__)
7
10
 
8
- post '/' do
9
- output = Output.new
10
- output.uuid = params[:request_id]
11
- output.text = OutputProcessor.new(params[:input]).process.to_json
12
- output.save
13
- end
11
+ self.text_processor = OutputProcessor
12
+ self.accepted_params = [:input, :request_id]
14
13
 
15
14
  get '/' do
16
15
  if params[:request_id]
@@ -22,31 +21,19 @@ module Opener
22
21
 
23
22
  get '/:request_id' do
24
23
  unless params[:request_id] == 'favicon.ico'
25
- begin
26
- output = Output.find_by_uuid(params[:request_id])
24
+ output = Output.find_by_uuid(params[:request_id])
27
25
 
28
- if output
29
- content_type(:json)
30
- scores = JSON.parse(output.text)
31
- body( {:uuid=>output.uuid, :scores=>scores}.to_json)
32
- else
33
- halt(404, "No record found for ID #{params[:request_id]}")
34
- end
35
- rescue => error
36
- error_callback = params[:error_callback]
26
+ if output
27
+ content_type(:json)
37
28
 
38
- submit_error(error_callback, error.message) if error_callback
29
+ scores = JSON.parse(output.text)
39
30
 
40
- raise(error)
31
+ body({:uuid=>output.uuid, :scores=>scores}.to_json)
32
+ else
33
+ halt(404, "No record found for ID #{params[:request_id]}")
41
34
  end
42
35
  end
43
36
  end
44
-
45
- private
46
-
47
- def submit_error(url, message)
48
- HTTPClient.post(url, :body => {:error => message})
49
- end
50
37
  end # Server
51
38
  end # Scorer
52
39
  end # Opener
@@ -1,5 +1,5 @@
1
1
  module Opener
2
2
  class Scorer
3
- VERSION = "1.1.5"
3
+ VERSION = '3.0.0'
4
4
  end
5
5
  end
@@ -1,15 +1,16 @@
1
1
  require File.expand_path('../lib/opener/scorer/version', __FILE__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
- gem.name = 'opener-scorer'
5
- gem.version = Opener::Scorer::VERSION
6
- gem.authors = ['development@olery.com']
7
- gem.summary = 'MySQL data storing for the web services output when using callbacks.'
8
- gem.description = gem.summary
9
- gem.homepage = "http://opener-project.github.com/"
10
- gem.has_rdoc = 'yard'
4
+ gem.name = 'opener-scorer'
5
+ gem.version = Opener::Scorer::VERSION
6
+ gem.authors = ['development@olery.com']
7
+ gem.summary = 'Component for calculating scores of KAF documents'
8
+ gem.description = gem.summary
9
+ gem.homepage = "http://opener-project.github.com/"
10
+ gem.has_rdoc = 'yard'
11
+ gem.license = 'Apache 2.0'
12
+
11
13
  gem.required_ruby_version = '>= 1.9.2'
12
- gem.license = 'Apache 2.0'
13
14
 
14
15
  gem.files = Dir.glob([
15
16
  'config/**/*',
@@ -24,17 +25,15 @@ Gem::Specification.new do |gem|
24
25
  gem.executables = Dir.glob('bin/*').map { |file| File.basename(file) }
25
26
 
26
27
  gem.add_dependency 'builder'
27
- gem.add_dependency 'sinatra', '~>1.4.2'
28
- gem.add_dependency 'sinatra-contrib'
29
28
  gem.add_dependency 'nokogiri'
30
- gem.add_dependency 'httpclient'
31
- gem.add_dependency 'uuidtools'
32
- gem.add_dependency 'puma'
33
- gem.add_dependency 'opener-daemons'
29
+ gem.add_dependency 'slop', '~> 3.5'
34
30
  gem.add_dependency 'jdbc-mysql'
35
31
  gem.add_dependency 'activerecord-jdbcmysql-adapter'
36
- gem.add_dependency 'activerecord', '~>3.2'
37
- gem.add_dependency 'opener-webservice'
32
+ gem.add_dependency 'activerecord', '~> 3.2'
33
+
34
+ gem.add_dependency 'opener-daemons', '~> 2.2'
35
+ gem.add_dependency 'opener-webservice', '~> 2.1'
36
+ gem.add_dependency 'opener-core', '~> 2.2'
38
37
 
39
38
  gem.add_development_dependency 'rspec'
40
39
  gem.add_development_dependency 'cucumber'
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: 1.1.5
4
+ version: 3.0.0
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-09-16 00:00:00.000000000 Z
11
+ date: 2014-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -24,34 +24,6 @@ dependencies:
24
24
  version: '0'
25
25
  prerelease: false
26
26
  type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: sinatra
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 1.4.2
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - ~>
37
- - !ruby/object:Gem::Version
38
- version: 1.4.2
39
- prerelease: false
40
- type: :runtime
41
- - !ruby/object:Gem::Dependency
42
- name: sinatra-contrib
43
- version_requirements: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - '>='
51
- - !ruby/object:Gem::Version
52
- version: '0'
53
- prerelease: false
54
- type: :runtime
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: nokogiri
57
29
  version_requirements: !ruby/object:Gem::Requirement
@@ -67,35 +39,21 @@ dependencies:
67
39
  prerelease: false
68
40
  type: :runtime
69
41
  - !ruby/object:Gem::Dependency
70
- name: httpclient
71
- version_requirements: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - '>='
79
- - !ruby/object:Gem::Version
80
- version: '0'
81
- prerelease: false
82
- type: :runtime
83
- - !ruby/object:Gem::Dependency
84
- name: uuidtools
42
+ name: slop
85
43
  version_requirements: !ruby/object:Gem::Requirement
86
44
  requirements:
87
- - - '>='
45
+ - - ~>
88
46
  - !ruby/object:Gem::Version
89
- version: '0'
47
+ version: '3.5'
90
48
  requirement: !ruby/object:Gem::Requirement
91
49
  requirements:
92
- - - '>='
50
+ - - ~>
93
51
  - !ruby/object:Gem::Version
94
- version: '0'
52
+ version: '3.5'
95
53
  prerelease: false
96
54
  type: :runtime
97
55
  - !ruby/object:Gem::Dependency
98
- name: puma
56
+ name: jdbc-mysql
99
57
  version_requirements: !ruby/object:Gem::Requirement
100
58
  requirements:
101
59
  - - '>='
@@ -109,7 +67,7 @@ dependencies:
109
67
  prerelease: false
110
68
  type: :runtime
111
69
  - !ruby/object:Gem::Dependency
112
- name: opener-daemons
70
+ name: activerecord-jdbcmysql-adapter
113
71
  version_requirements: !ruby/object:Gem::Requirement
114
72
  requirements:
115
73
  - - '>='
@@ -123,59 +81,59 @@ dependencies:
123
81
  prerelease: false
124
82
  type: :runtime
125
83
  - !ruby/object:Gem::Dependency
126
- name: jdbc-mysql
84
+ name: activerecord
127
85
  version_requirements: !ruby/object:Gem::Requirement
128
86
  requirements:
129
- - - '>='
87
+ - - ~>
130
88
  - !ruby/object:Gem::Version
131
- version: '0'
89
+ version: '3.2'
132
90
  requirement: !ruby/object:Gem::Requirement
133
91
  requirements:
134
- - - '>='
92
+ - - ~>
135
93
  - !ruby/object:Gem::Version
136
- version: '0'
94
+ version: '3.2'
137
95
  prerelease: false
138
96
  type: :runtime
139
97
  - !ruby/object:Gem::Dependency
140
- name: activerecord-jdbcmysql-adapter
98
+ name: opener-daemons
141
99
  version_requirements: !ruby/object:Gem::Requirement
142
100
  requirements:
143
- - - '>='
101
+ - - ~>
144
102
  - !ruby/object:Gem::Version
145
- version: '0'
103
+ version: '2.2'
146
104
  requirement: !ruby/object:Gem::Requirement
147
105
  requirements:
148
- - - '>='
106
+ - - ~>
149
107
  - !ruby/object:Gem::Version
150
- version: '0'
108
+ version: '2.2'
151
109
  prerelease: false
152
110
  type: :runtime
153
111
  - !ruby/object:Gem::Dependency
154
- name: activerecord
112
+ name: opener-webservice
155
113
  version_requirements: !ruby/object:Gem::Requirement
156
114
  requirements:
157
115
  - - ~>
158
116
  - !ruby/object:Gem::Version
159
- version: '3.2'
117
+ version: '2.1'
160
118
  requirement: !ruby/object:Gem::Requirement
161
119
  requirements:
162
120
  - - ~>
163
121
  - !ruby/object:Gem::Version
164
- version: '3.2'
122
+ version: '2.1'
165
123
  prerelease: false
166
124
  type: :runtime
167
125
  - !ruby/object:Gem::Dependency
168
- name: opener-webservice
126
+ name: opener-core
169
127
  version_requirements: !ruby/object:Gem::Requirement
170
128
  requirements:
171
- - - '>='
129
+ - - ~>
172
130
  - !ruby/object:Gem::Version
173
- version: '0'
131
+ version: '2.2'
174
132
  requirement: !ruby/object:Gem::Requirement
175
133
  requirements:
176
- - - '>='
134
+ - - ~>
177
135
  - !ruby/object:Gem::Version
178
- version: '0'
136
+ version: '2.2'
179
137
  prerelease: false
180
138
  type: :runtime
181
139
  - !ruby/object:Gem::Dependency
@@ -234,30 +192,31 @@ dependencies:
234
192
  version: '0'
235
193
  prerelease: false
236
194
  type: :development
237
- description: MySQL data storing for the web services output when using callbacks.
195
+ description: Component for calculating scores of KAF documents
238
196
  email:
239
197
  executables:
240
- - scorer
241
- - scorer-daemon
242
198
  - scorer-server
199
+ - scorer-daemon
200
+ - scorer
243
201
  extensions: []
244
202
  extra_rdoc_files: []
245
203
  files:
246
204
  - config/database.rb
247
205
  - lib/opener/scorer.rb
206
+ - lib/opener/scorer/version.rb
248
207
  - lib/opener/scorer/output.rb
249
- - lib/opener/scorer/output_processor.rb
250
208
  - lib/opener/scorer/server.rb
251
- - lib/opener/scorer/version.rb
209
+ - lib/opener/scorer/cli.rb
210
+ - lib/opener/scorer/output_processor.rb
252
211
  - lib/opener/scorer/views/index.erb
253
212
  - config.ru
254
213
  - opener-scorer.gemspec
255
214
  - README.md
256
215
  - LICENSE.txt
257
216
  - exec/scorer.rb
258
- - bin/scorer
259
- - bin/scorer-daemon
260
217
  - bin/scorer-server
218
+ - bin/scorer-daemon
219
+ - bin/scorer
261
220
  homepage: http://opener-project.github.com/
262
221
  licenses:
263
222
  - Apache 2.0
@@ -281,5 +240,6 @@ rubyforge_project:
281
240
  rubygems_version: 2.1.9
282
241
  signing_key:
283
242
  specification_version: 4
284
- summary: MySQL data storing for the web services output when using callbacks.
243
+ summary: Component for calculating scores of KAF documents
285
244
  test_files: []
245
+ has_rdoc: yard