opener-ner 2.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 +7 -0
- data/README.md +29 -0
- data/bin/ner +7 -0
- data/bin/ner-server +10 -0
- data/config.ru +4 -0
- data/lib/opener/ner.rb +95 -0
- data/lib/opener/ner/cli.rb +88 -0
- data/lib/opener/ner/public/markdown.css +283 -0
- data/lib/opener/ner/server.rb +16 -0
- data/lib/opener/ner/version.rb +5 -0
- data/lib/opener/ner/views/index.erb +71 -0
- data/opener-ner.gemspec +29 -0
- metadata +140 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8bb73b77467d92bf3cabce1ebaa94ba05ef0838e
|
4
|
+
data.tar.gz: 9756f377742951dc077446ddfb189b160c3a5874
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 568efc611a6a4a11184ed6c7172658b370b858c58632894280b0544b5e5514d76ccd6cc3f2f2a416ef43bc9a41b545e876fb6efdaa842547f64065287c0a2da3
|
7
|
+
data.tar.gz: 2263ffdcebf1b5f91240ea595901baf6ad368040adde94dc3e200bbf74859f30e1b172ffa3c02950be7ac46ee972a9acf4a4f33962a4a7c4cf4af403152e8c0c
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# NER
|
2
|
+
|
3
|
+
This repository contains the source code for the primary NER component of the
|
4
|
+
OpeNER project. This component provides a CLI interface for the various kernels
|
5
|
+
as well as providing a Sinatra based web service.
|
6
|
+
|
7
|
+
## Requirements
|
8
|
+
|
9
|
+
* Ruby 1.9.2 or newer
|
10
|
+
* Bundler
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
As a regular Ruby Gem:
|
15
|
+
|
16
|
+
gem install opener-ner
|
17
|
+
|
18
|
+
|
19
|
+
Using Bundler:
|
20
|
+
|
21
|
+
gem 'opener-ner',
|
22
|
+
:git => 'git@github.com:opener-project/ner.git',
|
23
|
+
:branch => 'master'
|
24
|
+
|
25
|
+
Using specific install:
|
26
|
+
|
27
|
+
gem install specific_install
|
28
|
+
gem specific_install opener-ner \
|
29
|
+
-l https://github.com/opener-project/ner.git
|
data/bin/ner
ADDED
data/bin/ner-server
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rack'
|
4
|
+
|
5
|
+
# Without calling `Rack::Server#options` manually the CLI arguments will never
|
6
|
+
# be passed, thus the application can't be specified as a constructor argument.
|
7
|
+
server = Rack::Server.new
|
8
|
+
server.options[:config] = File.expand_path('../../config.ru', __FILE__)
|
9
|
+
|
10
|
+
server.start
|
data/config.ru
ADDED
data/lib/opener/ner.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'opener/ners/base'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
require_relative 'ner/version'
|
6
|
+
require_relative 'ner/cli'
|
7
|
+
|
8
|
+
module Opener
|
9
|
+
##
|
10
|
+
# Primary NER class that takes care of delegating NER actions to the language
|
11
|
+
# specific kernels.
|
12
|
+
#
|
13
|
+
# @!attribute [r] options
|
14
|
+
# @return [Hash]
|
15
|
+
#
|
16
|
+
class Ner
|
17
|
+
attr_reader :options
|
18
|
+
|
19
|
+
##
|
20
|
+
# The default language to use when no custom one is specified.
|
21
|
+
#
|
22
|
+
# @return [String]
|
23
|
+
#
|
24
|
+
DEFAULT_LANGUAGE = 'en'.freeze
|
25
|
+
|
26
|
+
##
|
27
|
+
# Hash containing the default options to use.
|
28
|
+
#
|
29
|
+
# @return [Hash]
|
30
|
+
#
|
31
|
+
DEFAULT_OPTIONS = {
|
32
|
+
:args => [],
|
33
|
+
:language => DEFAULT_LANGUAGE
|
34
|
+
}.freeze
|
35
|
+
|
36
|
+
##
|
37
|
+
# @param [Hash] options
|
38
|
+
#
|
39
|
+
# @option options [Array] :args Collection of arbitrary arguments to pass
|
40
|
+
# to the underlying kernels.
|
41
|
+
# @option options [String] :language The language to use.
|
42
|
+
#
|
43
|
+
def initialize(options = {})
|
44
|
+
@options = DEFAULT_OPTIONS.merge(options)
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# Processes the input and returns an array containing the output of STDOUT,
|
49
|
+
# STDERR and an object containing process information.
|
50
|
+
#
|
51
|
+
# @param [String] input
|
52
|
+
# @return [Array]
|
53
|
+
#
|
54
|
+
def run(input)
|
55
|
+
language = language_from_kaf(input) || DEFAULT_LANGUAGE
|
56
|
+
args = options[:args].dup
|
57
|
+
|
58
|
+
if language_constant_defined?(language)
|
59
|
+
kernel = language_constant(language).new(:args => args)
|
60
|
+
else
|
61
|
+
kernel = Ners::Base.new(:args => args, :language => language)
|
62
|
+
end
|
63
|
+
|
64
|
+
return kernel.run(input)
|
65
|
+
end
|
66
|
+
|
67
|
+
protected
|
68
|
+
|
69
|
+
##
|
70
|
+
# Returns `true` if the current language has a dedicated kernel class.
|
71
|
+
#
|
72
|
+
# @return [TrueClass|FalseClass]
|
73
|
+
#
|
74
|
+
def language_constant_defined?(language)
|
75
|
+
return language && Ners.const_defined?(language.upcase)
|
76
|
+
end
|
77
|
+
|
78
|
+
##
|
79
|
+
# @return [Class]
|
80
|
+
#
|
81
|
+
def language_constant(language)
|
82
|
+
return Ners.const_get(language.upcase)
|
83
|
+
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# @param [String] input
|
87
|
+
# @return [String]
|
88
|
+
#
|
89
|
+
def language_from_kaf(input)
|
90
|
+
reader = Nokogiri::XML::Reader(input)
|
91
|
+
|
92
|
+
return reader.read.lang
|
93
|
+
end
|
94
|
+
end # Ner
|
95
|
+
end # Opener
|
@@ -0,0 +1,88 @@
|
|
1
|
+
module Opener
|
2
|
+
class Ner
|
3
|
+
##
|
4
|
+
# CLI wrapper around {Opener::Ner} using OptionParser.
|
5
|
+
#
|
6
|
+
# @!attribute [r] options
|
7
|
+
# @return [Hash]
|
8
|
+
# @!attribute [r] option_parser
|
9
|
+
# @return [OptionParser]
|
10
|
+
#
|
11
|
+
class CLI
|
12
|
+
attr_reader :options, :option_parser
|
13
|
+
|
14
|
+
##
|
15
|
+
# @param [Hash] options
|
16
|
+
#
|
17
|
+
def initialize(options = {})
|
18
|
+
@options = DEFAULT_OPTIONS.merge(options)
|
19
|
+
|
20
|
+
@option_parser = OptionParser.new do |opts|
|
21
|
+
opts.program_name = 'ner'
|
22
|
+
opts.summary_indent = ' '
|
23
|
+
|
24
|
+
opts.on('-h', '--help', 'Shows this help message') do
|
25
|
+
show_help
|
26
|
+
end
|
27
|
+
|
28
|
+
opts.on('-v', '--version', 'Shows the current version') do
|
29
|
+
show_version
|
30
|
+
end
|
31
|
+
|
32
|
+
opts.on(
|
33
|
+
'-l',
|
34
|
+
'--language [VALUE]',
|
35
|
+
'Uses this specific language'
|
36
|
+
) do |value|
|
37
|
+
@options[:language] = value
|
38
|
+
end
|
39
|
+
|
40
|
+
opts.separator <<-EOF
|
41
|
+
|
42
|
+
Examples:
|
43
|
+
|
44
|
+
cat example.kaf | #{opts.program_name} -l en
|
45
|
+
|
46
|
+
Languages:
|
47
|
+
|
48
|
+
Ner will try to detect the language of the KAF file if no language is given.
|
49
|
+
|
50
|
+
* Dutch (nl)
|
51
|
+
* English (en)
|
52
|
+
* French (fr)
|
53
|
+
* German (de)
|
54
|
+
* Italian (it)
|
55
|
+
* Spanish (es)
|
56
|
+
EOF
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# @param [String] input
|
62
|
+
#
|
63
|
+
def run(input)
|
64
|
+
option_parser.parse!(options[:args])
|
65
|
+
|
66
|
+
ner = Ner.new(options)
|
67
|
+
|
68
|
+
return ner.run(input)
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
##
|
74
|
+
# Shows the help message and exits the program.
|
75
|
+
#
|
76
|
+
def show_help
|
77
|
+
abort option_parser.to_s
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Shows the version and exits the program.
|
82
|
+
#
|
83
|
+
def show_version
|
84
|
+
abort "#{option_parser.program_name} v#{VERSION} on #{RUBY_DESCRIPTION}"
|
85
|
+
end
|
86
|
+
end # CLI
|
87
|
+
end # Ner
|
88
|
+
end # Opener
|
@@ -0,0 +1,283 @@
|
|
1
|
+
input[type="text"], textarea
|
2
|
+
{
|
3
|
+
width: 500px;
|
4
|
+
}
|
5
|
+
|
6
|
+
body {
|
7
|
+
font-family: Helvetica, arial, sans-serif;
|
8
|
+
font-size: 14px;
|
9
|
+
line-height: 1.6;
|
10
|
+
padding-top: 10px;
|
11
|
+
padding-bottom: 10px;
|
12
|
+
background-color: white;
|
13
|
+
padding: 30px; }
|
14
|
+
|
15
|
+
body > *:first-child {
|
16
|
+
margin-top: 0 !important; }
|
17
|
+
body > *:last-child {
|
18
|
+
margin-bottom: 0 !important; }
|
19
|
+
|
20
|
+
a {
|
21
|
+
color: #4183C4; }
|
22
|
+
a.absent {
|
23
|
+
color: #cc0000; }
|
24
|
+
a.anchor {
|
25
|
+
display: block;
|
26
|
+
padding-left: 30px;
|
27
|
+
margin-left: -30px;
|
28
|
+
cursor: pointer;
|
29
|
+
position: absolute;
|
30
|
+
top: 0;
|
31
|
+
left: 0;
|
32
|
+
bottom: 0; }
|
33
|
+
|
34
|
+
h1, h2, h3, h4, h5, h6 {
|
35
|
+
margin: 20px 0 10px;
|
36
|
+
padding: 0;
|
37
|
+
font-weight: bold;
|
38
|
+
-webkit-font-smoothing: antialiased;
|
39
|
+
cursor: text;
|
40
|
+
position: relative; }
|
41
|
+
|
42
|
+
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
|
43
|
+
background: url("../../images/modules/styleguide/para.png") no-repeat 10px center;
|
44
|
+
text-decoration: none; }
|
45
|
+
|
46
|
+
h1 tt, h1 code {
|
47
|
+
font-size: inherit; }
|
48
|
+
|
49
|
+
h2 tt, h2 code {
|
50
|
+
font-size: inherit; }
|
51
|
+
|
52
|
+
h3 tt, h3 code {
|
53
|
+
font-size: inherit; }
|
54
|
+
|
55
|
+
h4 tt, h4 code {
|
56
|
+
font-size: inherit; }
|
57
|
+
|
58
|
+
h5 tt, h5 code {
|
59
|
+
font-size: inherit; }
|
60
|
+
|
61
|
+
h6 tt, h6 code {
|
62
|
+
font-size: inherit; }
|
63
|
+
|
64
|
+
h1 {
|
65
|
+
font-size: 28px;
|
66
|
+
color: black; }
|
67
|
+
|
68
|
+
h2 {
|
69
|
+
font-size: 24px;
|
70
|
+
border-bottom: 1px solid #cccccc;
|
71
|
+
color: black; }
|
72
|
+
|
73
|
+
h3 {
|
74
|
+
font-size: 18px; }
|
75
|
+
|
76
|
+
h4 {
|
77
|
+
font-size: 16px; }
|
78
|
+
|
79
|
+
h5 {
|
80
|
+
font-size: 14px; }
|
81
|
+
|
82
|
+
h6 {
|
83
|
+
color: #777777;
|
84
|
+
font-size: 14px; }
|
85
|
+
|
86
|
+
p, blockquote, ul, ol, dl, li, table, pre {
|
87
|
+
margin: 15px 0; }
|
88
|
+
|
89
|
+
hr {
|
90
|
+
background: transparent url("../../images/modules/pulls/dirty-shade.png") repeat-x 0 0;
|
91
|
+
border: 0 none;
|
92
|
+
color: #cccccc;
|
93
|
+
height: 4px;
|
94
|
+
padding: 0; }
|
95
|
+
|
96
|
+
body > h2:first-child {
|
97
|
+
margin-top: 0;
|
98
|
+
padding-top: 0; }
|
99
|
+
body > h1:first-child {
|
100
|
+
margin-top: 0;
|
101
|
+
padding-top: 0; }
|
102
|
+
body > h1:first-child + h2 {
|
103
|
+
margin-top: 0;
|
104
|
+
padding-top: 0; }
|
105
|
+
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
|
106
|
+
margin-top: 0;
|
107
|
+
padding-top: 0; }
|
108
|
+
|
109
|
+
a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
|
110
|
+
margin-top: 0;
|
111
|
+
padding-top: 0; }
|
112
|
+
|
113
|
+
h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
|
114
|
+
margin-top: 0; }
|
115
|
+
|
116
|
+
li p.first {
|
117
|
+
display: inline-block; }
|
118
|
+
|
119
|
+
ul, ol {
|
120
|
+
padding-left: 30px; }
|
121
|
+
|
122
|
+
ul :first-child, ol :first-child {
|
123
|
+
margin-top: 0; }
|
124
|
+
|
125
|
+
ul :last-child, ol :last-child {
|
126
|
+
margin-bottom: 0; }
|
127
|
+
|
128
|
+
dl {
|
129
|
+
padding: 0; }
|
130
|
+
dl dt {
|
131
|
+
font-size: 14px;
|
132
|
+
font-weight: bold;
|
133
|
+
font-style: italic;
|
134
|
+
padding: 0;
|
135
|
+
margin: 15px 0 5px; }
|
136
|
+
dl dt:first-child {
|
137
|
+
padding: 0; }
|
138
|
+
dl dt > :first-child {
|
139
|
+
margin-top: 0; }
|
140
|
+
dl dt > :last-child {
|
141
|
+
margin-bottom: 0; }
|
142
|
+
dl dd {
|
143
|
+
margin: 0 0 15px;
|
144
|
+
padding: 0 15px; }
|
145
|
+
dl dd > :first-child {
|
146
|
+
margin-top: 0; }
|
147
|
+
dl dd > :last-child {
|
148
|
+
margin-bottom: 0; }
|
149
|
+
|
150
|
+
blockquote {
|
151
|
+
border-left: 4px solid #dddddd;
|
152
|
+
padding: 0 15px;
|
153
|
+
color: #777777; }
|
154
|
+
blockquote > :first-child {
|
155
|
+
margin-top: 0; }
|
156
|
+
blockquote > :last-child {
|
157
|
+
margin-bottom: 0; }
|
158
|
+
|
159
|
+
table {
|
160
|
+
padding: 0; }
|
161
|
+
table tr {
|
162
|
+
border-top: 1px solid #cccccc;
|
163
|
+
background-color: white;
|
164
|
+
margin: 0;
|
165
|
+
padding: 0; }
|
166
|
+
table tr:nth-child(2n) {
|
167
|
+
background-color: #f8f8f8; }
|
168
|
+
table tr th {
|
169
|
+
font-weight: bold;
|
170
|
+
border: 1px solid #cccccc;
|
171
|
+
text-align: left;
|
172
|
+
margin: 0;
|
173
|
+
padding: 6px 13px; }
|
174
|
+
table tr td {
|
175
|
+
border: 1px solid #cccccc;
|
176
|
+
text-align: left;
|
177
|
+
margin: 0;
|
178
|
+
padding: 6px 13px; }
|
179
|
+
table tr th :first-child, table tr td :first-child {
|
180
|
+
margin-top: 0; }
|
181
|
+
table tr th :last-child, table tr td :last-child {
|
182
|
+
margin-bottom: 0; }
|
183
|
+
|
184
|
+
img {
|
185
|
+
max-width: 100%; }
|
186
|
+
|
187
|
+
span.frame {
|
188
|
+
display: block;
|
189
|
+
overflow: hidden; }
|
190
|
+
span.frame > span {
|
191
|
+
border: 1px solid #dddddd;
|
192
|
+
display: block;
|
193
|
+
float: left;
|
194
|
+
overflow: hidden;
|
195
|
+
margin: 13px 0 0;
|
196
|
+
padding: 7px;
|
197
|
+
width: auto; }
|
198
|
+
span.frame span img {
|
199
|
+
display: block;
|
200
|
+
float: left; }
|
201
|
+
span.frame span span {
|
202
|
+
clear: both;
|
203
|
+
color: #333333;
|
204
|
+
display: block;
|
205
|
+
padding: 5px 0 0; }
|
206
|
+
span.align-center {
|
207
|
+
display: block;
|
208
|
+
overflow: hidden;
|
209
|
+
clear: both; }
|
210
|
+
span.align-center > span {
|
211
|
+
display: block;
|
212
|
+
overflow: hidden;
|
213
|
+
margin: 13px auto 0;
|
214
|
+
text-align: center; }
|
215
|
+
span.align-center span img {
|
216
|
+
margin: 0 auto;
|
217
|
+
text-align: center; }
|
218
|
+
span.align-right {
|
219
|
+
display: block;
|
220
|
+
overflow: hidden;
|
221
|
+
clear: both; }
|
222
|
+
span.align-right > span {
|
223
|
+
display: block;
|
224
|
+
overflow: hidden;
|
225
|
+
margin: 13px 0 0;
|
226
|
+
text-align: right; }
|
227
|
+
span.align-right span img {
|
228
|
+
margin: 0;
|
229
|
+
text-align: right; }
|
230
|
+
span.float-left {
|
231
|
+
display: block;
|
232
|
+
margin-right: 13px;
|
233
|
+
overflow: hidden;
|
234
|
+
float: left; }
|
235
|
+
span.float-left span {
|
236
|
+
margin: 13px 0 0; }
|
237
|
+
span.float-right {
|
238
|
+
display: block;
|
239
|
+
margin-left: 13px;
|
240
|
+
overflow: hidden;
|
241
|
+
float: right; }
|
242
|
+
span.float-right > span {
|
243
|
+
display: block;
|
244
|
+
overflow: hidden;
|
245
|
+
margin: 13px auto 0;
|
246
|
+
text-align: right; }
|
247
|
+
|
248
|
+
code, tt {
|
249
|
+
margin: 0 2px;
|
250
|
+
padding: 0 5px;
|
251
|
+
white-space: nowrap;
|
252
|
+
border: 1px solid #eaeaea;
|
253
|
+
background-color: #f8f8f8;
|
254
|
+
border-radius: 3px; }
|
255
|
+
|
256
|
+
pre code {
|
257
|
+
margin: 0;
|
258
|
+
padding: 0;
|
259
|
+
white-space: pre;
|
260
|
+
border: none;
|
261
|
+
background: transparent; }
|
262
|
+
|
263
|
+
.highlight pre {
|
264
|
+
background-color: #f8f8f8;
|
265
|
+
border: 1px solid #cccccc;
|
266
|
+
font-size: 13px;
|
267
|
+
line-height: 19px;
|
268
|
+
overflow: auto;
|
269
|
+
padding: 6px 10px;
|
270
|
+
border-radius: 3px; }
|
271
|
+
|
272
|
+
pre {
|
273
|
+
background-color: #f8f8f8;
|
274
|
+
border: 1px solid #cccccc;
|
275
|
+
font-size: 13px;
|
276
|
+
line-height: 19px;
|
277
|
+
overflow: auto;
|
278
|
+
padding: 6px 10px;
|
279
|
+
border-radius: 3px; }
|
280
|
+
pre code, pre tt {
|
281
|
+
background-color: transparent;
|
282
|
+
border: none; }
|
283
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
require 'opener/webservice'
|
3
|
+
require 'httpclient'
|
4
|
+
|
5
|
+
module Opener
|
6
|
+
class Ner
|
7
|
+
##
|
8
|
+
# NER server powered by Sinatra.
|
9
|
+
#
|
10
|
+
class Server < Webservice
|
11
|
+
set :views, File.expand_path('../views', __FILE__)
|
12
|
+
text_processor Ner
|
13
|
+
accepted_params :input
|
14
|
+
end # Server
|
15
|
+
end # Ner
|
16
|
+
end # Opener
|
@@ -0,0 +1,71 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<link type="text/css" rel="stylesheet" href="markdown.css" />
|
5
|
+
|
6
|
+
<title>NER Webservice</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<h1>NER Webservice</h1>
|
10
|
+
|
11
|
+
<p>
|
12
|
+
* required
|
13
|
+
|
14
|
+
<br />
|
15
|
+
|
16
|
+
** When entering a value no response will be displayed in the browser.
|
17
|
+
</p>
|
18
|
+
|
19
|
+
<form action="<%=url("/")%>" method="POST">
|
20
|
+
<div>
|
21
|
+
<label for="input">KAF input *</label>
|
22
|
+
<br />
|
23
|
+
|
24
|
+
<textarea id="input" name="input" cols="50" rows="10"></textarea>
|
25
|
+
</div>
|
26
|
+
<% 10.times do |t| %>
|
27
|
+
<div>
|
28
|
+
<label for="callbacks">Callback URL <%=t+1%>(**)</label>
|
29
|
+
<br />
|
30
|
+
|
31
|
+
<input id="callbacks" type="text" name="callbacks[]" />
|
32
|
+
</div>
|
33
|
+
<% end %>
|
34
|
+
|
35
|
+
<div>
|
36
|
+
<label for="error_callback">Error Callback</label>
|
37
|
+
<br />
|
38
|
+
|
39
|
+
<input id="error_callback" type="text" name="error_callback" />
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<input type="submit" value="Submit" />
|
43
|
+
</form>
|
44
|
+
|
45
|
+
<h2>Actions</h2>
|
46
|
+
|
47
|
+
<dl>
|
48
|
+
<dt>GET /</dt>
|
49
|
+
<dd>Shows this page</dd>
|
50
|
+
|
51
|
+
<dt>POST /</dt>
|
52
|
+
<dd>Submits a KAF document</dd>
|
53
|
+
</dl>
|
54
|
+
|
55
|
+
<h2>Parameters</h2>
|
56
|
+
|
57
|
+
<dl>
|
58
|
+
<dt>text *</dt>
|
59
|
+
<dd>The KAF document to tag.</dd>
|
60
|
+
|
61
|
+
<dt>language</dt>
|
62
|
+
<dd>The language (code) to use, e.g. "en" or "fr".</dd>
|
63
|
+
|
64
|
+
<dt>callbacks</dt>
|
65
|
+
<dd>A collection of callback URLs that are processed as a chain.</dd>
|
66
|
+
|
67
|
+
<dt>error_callback</dt>
|
68
|
+
<dd>Errors are submitted to this URL in the "error" field.</dd>
|
69
|
+
</dl>
|
70
|
+
</body>
|
71
|
+
</html>
|
data/opener-ner.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path('../lib/opener/ner/version', __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = 'opener-ner'
|
5
|
+
gem.version = Opener::Ner::VERSION
|
6
|
+
gem.authors = ['development@olery.com']
|
7
|
+
gem.summary = 'Primary NER component that wraps the various NER kernels.'
|
8
|
+
gem.description = gem.summary
|
9
|
+
gem.has_rdoc = 'yard'
|
10
|
+
|
11
|
+
gem.required_ruby_version = '>= 1.9.2'
|
12
|
+
|
13
|
+
gem.files = Dir.glob([
|
14
|
+
'lib/**/*',
|
15
|
+
'config.ru',
|
16
|
+
'*.gemspec',
|
17
|
+
'README.md'
|
18
|
+
]).select { |file| File.file?(file) }
|
19
|
+
|
20
|
+
gem.executables = Dir.glob('bin/*').map { |file| File.basename(file) }
|
21
|
+
|
22
|
+
gem.add_dependency 'sinatra', '~> 1.4'
|
23
|
+
gem.add_dependency 'httpclient'
|
24
|
+
gem.add_dependency 'nokogiri'
|
25
|
+
gem.add_dependency 'opener-ner-base'
|
26
|
+
gem.add_dependency 'opener-webservice'
|
27
|
+
|
28
|
+
gem.add_development_dependency 'rake'
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: opener-ner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- development@olery.com
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sinatra
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: httpclient
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: opener-ner-base
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: opener-webservice
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Primary NER component that wraps the various NER kernels.
|
98
|
+
email:
|
99
|
+
executables:
|
100
|
+
- ner
|
101
|
+
- ner-server
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- README.md
|
106
|
+
- bin/ner
|
107
|
+
- bin/ner-server
|
108
|
+
- config.ru
|
109
|
+
- lib/opener/ner.rb
|
110
|
+
- lib/opener/ner/cli.rb
|
111
|
+
- lib/opener/ner/public/markdown.css
|
112
|
+
- lib/opener/ner/server.rb
|
113
|
+
- lib/opener/ner/version.rb
|
114
|
+
- lib/opener/ner/views/index.erb
|
115
|
+
- opener-ner.gemspec
|
116
|
+
homepage:
|
117
|
+
licenses: []
|
118
|
+
metadata: {}
|
119
|
+
post_install_message:
|
120
|
+
rdoc_options: []
|
121
|
+
require_paths:
|
122
|
+
- lib
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 1.9.2
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
requirements: []
|
134
|
+
rubyforge_project:
|
135
|
+
rubygems_version: 2.2.2
|
136
|
+
signing_key:
|
137
|
+
specification_version: 4
|
138
|
+
summary: Primary NER component that wraps the various NER kernels.
|
139
|
+
test_files: []
|
140
|
+
has_rdoc: yard
|