opener-opinion-detector-basic 3.1.1 → 3.2.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
- 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: