opener-opinion-detector-basic 3.1.1 → 3.2.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
- SHA1:
3
- metadata.gz: f7754e1b84f37755bfeadff1c70fe7aeb8386a37
4
- data.tar.gz: fae3879266340ea656422fb16b9e3f4c17d1bb7d
2
+ SHA256:
3
+ metadata.gz: 37bab9088bfcdff7ddd21a5452bd9226edb14a0d11fb35b2f7bd8a183cd5b1af
4
+ data.tar.gz: 3605f40a5b4c1f22d343a308d6b7e4e28184bd8f0e7de000ca334842ccc3b4f7
5
5
  SHA512:
6
- metadata.gz: bea2552b5e25787f09050c9d1e299f63f29c1f885103dca65a3925d8f6169d40f658da46a5d69c4e1d3d8cb95dd88b7e41f5c2958c86a54fde3b55d5f1106c74
7
- data.tar.gz: e40877a4669a4b76db70548cc7c023b67ea61426ea593aa3a4311e5cb96186229a96fe444851cd008d8954644302f56b4ddd5046ea338bccfdcd7f7f6660b06a
6
+ metadata.gz: ccc07cced6aee88b530fa52bfa7185855a840cced15f7008574e9493e85e9249c2af14c6b0645b0e991edfe876e51d69ef26a10ff9ab56ded4ffe59a47873cf4
7
+ data.tar.gz: 025e2637189339a502fefa73f4e6c44d1317e3199ea474a790d1a4421a0b50293adac691da913800f70a023c1ae190ba2473397021b0d45f7952d6470f33da09
@@ -41,6 +41,22 @@ Opener::OpinionDetectorBasic::Processor.class_eval do
41
41
  add_method_tracer(:apply_conjunctions)
42
42
  end
43
43
 
44
+ Opener::OpinionDetectorBasic::Term.class_eval do
45
+ include NewRelic::Agent::Instrumentation::ControllerInstrumentation
46
+ include NewRelic::Agent::MethodTracer
47
+
48
+ add_method_tracer(:initialize)
49
+ add_method_tracer(:sentiment_modifier)
50
+ add_method_tracer(:polarity)
51
+ add_method_tracer(:target_ids)
52
+ add_method_tracer(:strength)
53
+ add_method_tracer(:get_sentence)
54
+ add_method_tracer(:is_intensifier?)
55
+ add_method_tracer(:is_shifter?)
56
+ add_method_tracer(:is_expression?)
57
+ add_method_tracer(:is_conjunction?)
58
+ end
59
+
44
60
  daemon = Opener::Daemons::Daemon.new(Opener::OpinionDetectorBasic)
45
61
 
46
62
  daemon.start
@@ -1,7 +1,7 @@
1
1
  gem 'slop', '~> 3.0'
2
2
 
3
3
  require 'slop'
4
- require 'oga'
4
+ require 'nokogiri'
5
5
 
6
6
  require 'rexml/document'
7
7
  require 'rexml/formatters/pretty'
@@ -40,10 +40,11 @@ module Opener
40
40
  # @param [String] input
41
41
  # @return [String]
42
42
  #
43
- def run(input)
43
+ def run input, params = {}
44
44
  return Processor.new(input, options).process
45
45
  end
46
- end # OpinionDetectorBasic
47
- end # Opener
46
+
47
+ end
48
+ end
48
49
 
49
50
 
@@ -76,7 +76,7 @@ module Opener
76
76
  def obtain_holders(sentences, language)
77
77
  sentence_terms = sentences[sentence]
78
78
  sentence_terms.each do |term|
79
- if OPINION_HOLDERS[language].include?(term.lemma)
79
+ if OPINION_HOLDERS[language]&.include?(term.lemma)
80
80
  @holders << term.id
81
81
  break
82
82
  end
@@ -17,7 +17,7 @@ module Opener
17
17
  # by default due to the performance overhead.
18
18
  #
19
19
  def initialize(file, options = {})
20
- @document = Oga.parse_xml(file)
20
+ @document = Nokogiri.XML file
21
21
 
22
22
  @timestamp = options[:timestamp]
23
23
  @opinion_strength = options[:opinion_strength]
@@ -44,30 +44,16 @@ module Opener
44
44
  pretty ? pretty_print(document) : document.to_xml
45
45
  end
46
46
 
47
- ##
48
- # Get the language of the input file.
49
- #
50
- # @return [String]
51
- #
52
47
  def language
53
- @language ||= document.at_xpath('KAF').get('xml:lang')
48
+ @language ||= document.at_xpath('KAF').attr('xml:lang')
54
49
  end
55
50
 
56
- ##
57
- # Get the terms from the input file
58
- # @return [Hash]
59
- #
60
51
  def terms
61
52
  @terms ||= document.xpath('KAF/terms/term').map do |term|
62
53
  Term.new(term, document, language)
63
54
  end
64
55
  end
65
56
 
66
- ##
67
- # Get the opinions.
68
- #
69
- # @return [Hash]
70
- #
71
57
  def opinions
72
58
  unless @opinions
73
59
  set_accumulated_strength
@@ -79,7 +65,7 @@ module Opener
79
65
  #
80
66
  @opinions = terms.map do |term|
81
67
  if term.is_expression? && term.accumulated_strength != 0
82
- o = Opinion.new(term)
68
+ Opinion.new(term)
83
69
  end
84
70
  end.compact
85
71
 
@@ -117,7 +103,7 @@ module Opener
117
103
  #
118
104
  def add_opinion(opinion, index)
119
105
  opinion_node = new_node("opinion", "KAF/opinions")
120
- opinion_node.set('oid', "o#{index.to_s}")
106
+ opinion_node['oid'] = "o#{index.to_s}"
121
107
 
122
108
  unless opinion.holders.empty?
123
109
  opinion_holder_node = new_node("opinion_holder", opinion_node)
@@ -131,8 +117,8 @@ module Opener
131
117
  end
132
118
 
133
119
  expression_node = new_node("opinion_expression", opinion_node)
134
- expression_node.set('polarity', opinion.polarity)
135
- expression_node.set('strength', opinion.strength.to_s)
120
+ expression_node['polarity'] = opinion.polarity
121
+ expression_node['strength'] = opinion.strength.to_s
136
122
 
137
123
  add_opinion_element(expression_node, opinion.ids)
138
124
  end
@@ -141,14 +127,15 @@ module Opener
141
127
  # Method for adding opinion holders, targets and expressions.
142
128
  #
143
129
  def add_opinion_element(node, ids)
144
- lemmas = terms.select{|t| ids.include?(t.id)}.map(&:lemma).join(" ")
145
- comment = Oga::XML::Comment.new(:text => "#{lemmas}")
146
- node.children << comment
130
+ lemmas = terms.select{|t| ids.include?(t.id)}.map(&:lemma).join(" ")
131
+ comment = Nokogiri::XML::Comment.new(document, "#{lemmas}")
132
+ node.add_child comment
133
+
147
134
  span_node = new_node("span", node)
148
135
 
149
136
  ids.each do |id|
150
- target_node = new_node("target", span_node)
151
- target_node.set('id', id.to_s)
137
+ target_node = new_node("target", span_node)
138
+ target_node['id'] = id.to_s
152
139
  end
153
140
  end
154
141
 
@@ -162,19 +149,19 @@ module Opener
162
149
  version = '2.0'
163
150
 
164
151
  node = new_node('linguisticProcessors', 'KAF/kafHeader')
165
- node.set('layer', 'opinions')
152
+ node['layer'] = 'opinions'
166
153
 
167
154
  lp_node = new_node('lp', node)
168
155
 
169
- lp_node.set('version', "#{last_edited}-#{version}")
170
- lp_node.set('name', description)
156
+ lp_node['version'] = "#{last_edited}-#{version}"
157
+ lp_node['name'] = description
171
158
 
172
159
  if timestamp
173
160
  format = '%Y-%m-%dT%H:%M:%S%Z'
174
161
 
175
- lp_node.set('timestamp', Time.now.strftime(format))
162
+ lp_node['timestamp'] = Time.now.strftime(format)
176
163
  else
177
- lp_node.set('timestamp', '*')
164
+ lp_node['timestamp'] = '*'
178
165
  end
179
166
  end
180
167
 
@@ -307,9 +294,9 @@ module Opener
307
294
  parent_node = parent
308
295
  end
309
296
 
310
- node = Oga::XML::Element.new(:name => tag)
297
+ node = Nokogiri::XML::Element.new(tag, document)
311
298
 
312
- parent_node.children << node
299
+ parent_node.add_child node
313
300
 
314
301
  node
315
302
  end
@@ -321,6 +308,6 @@ module Opener
321
308
  def is_kaf?
322
309
  !!document.at_xpath('KAF')
323
310
  end
324
- end # Processor
325
- end # OpinionDetectorBasic
326
- end # Opener
311
+ end
312
+ end
313
+ end
@@ -29,7 +29,7 @@ module Opener
29
29
  # @return [String]
30
30
  #
31
31
  def id
32
- @id ||= node.get('tid')
32
+ @id ||= node.attr('tid')
33
33
  end
34
34
 
35
35
  ##
@@ -38,7 +38,7 @@ module Opener
38
38
  # @return [String]
39
39
  #
40
40
  def lemma
41
- @lemma ||= node.get('lemma')
41
+ @lemma ||= node.attr('lemma')
42
42
  end
43
43
 
44
44
  ##
@@ -47,7 +47,7 @@ module Opener
47
47
  # @return [String]
48
48
  #
49
49
  def pos
50
- @pos ||= node.get('pos')
50
+ @pos ||= node.attr('pos')
51
51
  end
52
52
 
53
53
  ##
@@ -57,7 +57,7 @@ module Opener
57
57
  #
58
58
  def sentiment_modifier
59
59
  @sentiment_modifier ||=
60
- first_sentiment ? first_sentiment.get('sentiment_modifier') : nil
60
+ first_sentiment ? first_sentiment.attr('sentiment_modifier') : nil
61
61
  end
62
62
 
63
63
  ##
@@ -66,7 +66,7 @@ module Opener
66
66
  # @return [String|NilClass]
67
67
  #
68
68
  def polarity
69
- @polarity ||= first_sentiment ? first_sentiment.get('polarity') : nil
69
+ @polarity ||= first_sentiment ? first_sentiment.attr('polarity') : nil
70
70
  end
71
71
 
72
72
  ##
@@ -76,7 +76,7 @@ module Opener
76
76
  #
77
77
  def target_ids
78
78
  @target_ids ||= node.xpath('span/target')
79
- .map { |target| target.get('id') }
79
+ .map { |target| target.attr('id') }
80
80
  end
81
81
 
82
82
  ##
@@ -109,7 +109,7 @@ module Opener
109
109
  document
110
110
  .xpath("KAF/text/wf[@wid='#{target_ids.first}']")
111
111
  .first
112
- .get('sent')
112
+ .attr('sent')
113
113
  end
114
114
 
115
115
  ##
@@ -145,7 +145,7 @@ module Opener
145
145
  # @return [TrueClass|FalseClass]
146
146
  #
147
147
  def is_conjunction?(language)
148
- CONJUNCTIONS[language].include?(lemma)
148
+ pos == 'J' || CONJUNCTIONS[language]&.include?(lemma)
149
149
  end
150
150
 
151
151
  private
@@ -1,5 +1,7 @@
1
1
  module Opener
2
2
  class OpinionDetectorBasic
3
- VERSION = '3.1.1'
3
+
4
+ VERSION = '3.2.3'
5
+
4
6
  end
5
7
  end
@@ -27,7 +27,7 @@ Gem::Specification.new do |gem|
27
27
  gem.add_dependency 'opener-webservice', '~> 2.1'
28
28
  gem.add_dependency 'opener-core', '~> 2.2'
29
29
 
30
- gem.add_dependency 'oga', ['~> 1.0', '>= 1.3.1']
30
+ gem.add_dependency 'nokogiri'
31
31
 
32
32
  gem.add_development_dependency 'rspec', '~> 3.0'
33
33
  gem.add_development_dependency 'cucumber'
metadata CHANGED
@@ -1,160 +1,154 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opener-opinion-detector-basic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.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: 2015-09-07 00:00:00.000000000 Z
11
+ date: 2020-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: opener-daemons
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
- - - ~>
17
+ - - "~>"
17
18
  - !ruby/object:Gem::Version
18
19
  version: '2.2'
19
- name: opener-daemons
20
- prerelease: false
21
20
  type: :runtime
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
+ name: opener-webservice
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ~>
31
+ - - "~>"
31
32
  - !ruby/object:Gem::Version
32
33
  version: '2.1'
33
- name: opener-webservice
34
- prerelease: false
35
34
  type: :runtime
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.1'
41
41
  - !ruby/object:Gem::Dependency
42
+ name: opener-core
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
- - - ~>
45
+ - - "~>"
45
46
  - !ruby/object:Gem::Version
46
47
  version: '2.2'
47
- name: opener-core
48
- prerelease: false
49
48
  type: :runtime
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.2'
55
55
  - !ruby/object:Gem::Dependency
56
+ name: nokogiri
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
- - - ~>
59
+ - - ">="
59
60
  - !ruby/object:Gem::Version
60
- version: '1.0'
61
- - - '>='
62
- - !ruby/object:Gem::Version
63
- version: 1.3.1
64
- name: oga
65
- prerelease: false
61
+ version: '0'
66
62
  type: :runtime
63
+ prerelease: false
67
64
  version_requirements: !ruby/object:Gem::Requirement
68
65
  requirements:
69
- - - ~>
70
- - !ruby/object:Gem::Version
71
- version: '1.0'
72
- - - '>='
66
+ - - ">="
73
67
  - !ruby/object:Gem::Version
74
- version: 1.3.1
68
+ version: '0'
75
69
  - !ruby/object:Gem::Dependency
70
+ name: rspec
76
71
  requirement: !ruby/object:Gem::Requirement
77
72
  requirements:
78
- - - ~>
73
+ - - "~>"
79
74
  - !ruby/object:Gem::Version
80
75
  version: '3.0'
81
- name: rspec
82
- prerelease: false
83
76
  type: :development
77
+ prerelease: false
84
78
  version_requirements: !ruby/object:Gem::Requirement
85
79
  requirements:
86
- - - ~>
80
+ - - "~>"
87
81
  - !ruby/object:Gem::Version
88
82
  version: '3.0'
89
83
  - !ruby/object:Gem::Dependency
84
+ name: cucumber
90
85
  requirement: !ruby/object:Gem::Requirement
91
86
  requirements:
92
- - - '>='
87
+ - - ">="
93
88
  - !ruby/object:Gem::Version
94
89
  version: '0'
95
- name: cucumber
96
- prerelease: false
97
90
  type: :development
91
+ prerelease: false
98
92
  version_requirements: !ruby/object:Gem::Requirement
99
93
  requirements:
100
- - - '>='
94
+ - - ">="
101
95
  - !ruby/object:Gem::Version
102
96
  version: '0'
103
97
  - !ruby/object:Gem::Dependency
98
+ name: rake
104
99
  requirement: !ruby/object:Gem::Requirement
105
100
  requirements:
106
- - - '>='
101
+ - - ">="
107
102
  - !ruby/object:Gem::Version
108
103
  version: '0'
109
- name: rake
110
- prerelease: false
111
104
  type: :development
105
+ prerelease: false
112
106
  version_requirements: !ruby/object:Gem::Requirement
113
107
  requirements:
114
- - - '>='
108
+ - - ">="
115
109
  - !ruby/object:Gem::Version
116
110
  version: '0'
117
111
  - !ruby/object:Gem::Dependency
112
+ name: benchmark-ips
118
113
  requirement: !ruby/object:Gem::Requirement
119
114
  requirements:
120
- - - ~>
115
+ - - "~>"
121
116
  - !ruby/object:Gem::Version
122
117
  version: '2.0'
123
- name: benchmark-ips
124
- prerelease: false
125
118
  type: :development
119
+ prerelease: false
126
120
  version_requirements: !ruby/object:Gem::Requirement
127
121
  requirements:
128
- - - ~>
122
+ - - "~>"
129
123
  - !ruby/object:Gem::Version
130
124
  version: '2.0'
131
125
  description: Basic Opinion Detector.
132
126
  email:
133
127
  executables:
134
- - opinion-detector-basic-server
135
128
  - opinion-detector-basic
136
129
  - opinion-detector-basic-daemon
130
+ - opinion-detector-basic-server
137
131
  extensions: []
138
132
  extra_rdoc_files: []
139
133
  files:
134
+ - LICENSE.txt
135
+ - README.md
136
+ - bin/opinion-detector-basic
137
+ - bin/opinion-detector-basic-daemon
138
+ - bin/opinion-detector-basic-server
139
+ - config.ru
140
+ - exec/opinion-detector-basic.rb
140
141
  - lib/opener/opinion_detector_basic.rb
141
- - lib/opener/opinion_detector_basic/version.rb
142
- - lib/opener/opinion_detector_basic/term.rb
143
- - lib/opener/opinion_detector_basic/processor.rb
144
- - lib/opener/opinion_detector_basic/server.rb
145
142
  - lib/opener/opinion_detector_basic/cli.rb
146
143
  - lib/opener/opinion_detector_basic/opinion.rb
144
+ - lib/opener/opinion_detector_basic/processor.rb
147
145
  - lib/opener/opinion_detector_basic/public/markdown.css
146
+ - lib/opener/opinion_detector_basic/server.rb
147
+ - lib/opener/opinion_detector_basic/term.rb
148
+ - lib/opener/opinion_detector_basic/version.rb
148
149
  - lib/opener/opinion_detector_basic/views/index.erb
149
- - config.ru
150
150
  - opener-opinion-detector-basic.gemspec
151
- - README.md
152
- - LICENSE.txt
153
- - exec/opinion-detector-basic.rb
154
151
  - task/test.rake
155
- - bin/opinion-detector-basic-server
156
- - bin/opinion-detector-basic
157
- - bin/opinion-detector-basic-daemon
158
152
  homepage: http://opener-project.github.com/
159
153
  licenses:
160
154
  - Apache 2.0
@@ -165,19 +159,18 @@ require_paths:
165
159
  - lib
166
160
  required_ruby_version: !ruby/object:Gem::Requirement
167
161
  requirements:
168
- - - '>='
162
+ - - ">="
169
163
  - !ruby/object:Gem::Version
170
164
  version: 1.9.2
171
165
  required_rubygems_version: !ruby/object:Gem::Requirement
172
166
  requirements:
173
- - - '>='
167
+ - - ">="
174
168
  - !ruby/object:Gem::Version
175
169
  version: '0'
176
170
  requirements: []
177
171
  rubyforge_project:
178
- rubygems_version: 2.1.9
172
+ rubygems_version: 2.7.6
179
173
  signing_key:
180
174
  specification_version: 4
181
175
  summary: Basic Opinion Detector.
182
176
  test_files: []
183
- has_rdoc: