open-nlp 0.0.1 → 0.1.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.
data/README.md CHANGED
@@ -1,9 +1,4 @@
1
- **Warning**
2
-
3
- This is an alpha release. Expect things to break and/or change in the near future! Also, keep the following in mind:
4
-
5
- - Currently, this gem is only tested on JRuby, but support for MRI through Rjb is coming very soon.
6
- - Currently, the parser and chunker classes are not working.
1
+ [![Build Status](https://secure.travis-ci.org/louismullie/open-nlp.png)](http://travis-ci.org/louismullie/open-nlp)
7
2
 
8
3
  **About**
9
4
 
@@ -13,9 +8,11 @@ This gem only provides a thin wrapper over the OpenNLP API. If you are looking f
13
8
 
14
9
  **Installing**
15
10
 
11
+ _Note: If you are running on MRI, this gem will use the Ruby-Java Bridge (Rjb), which currently does not support Java 7. Therefore, if you have installed Java 7, you should set your JAVA_HOME to point to your old Java 6 install before installing Rjb; for example, `export "JAVA_HOME=/usr/lib/jvm/java-6-openjdk/"`.
12
+
16
13
  First, install the gem: `gem install open-nlp`. Then, individually download the appropriate models from the [open-nlp website](http://opennlp.sourceforge.net/models-1.5/) or just get [all english language models](louismullie.com/treat/open-nlp-english.zip) in one package (80 MB).
17
14
 
18
- Place the contents of the extracted archive inside the /bin/ folder of the stanford-core-nlp gem (e.g. [...]/gems/open-nlp-0.x.x/bin/).
15
+ Place the contents of the extracted archive inside the /bin/ folder of the open-nlp gem (e.g. [...]/gems/open-nlp-0.x.x/bin/).
19
16
 
20
17
  **Configuration**
21
18
 
@@ -43,7 +40,7 @@ OpenNLP.log_file = 'log.txt'
43
40
  # OpenNLP.use(:french) # or :german
44
41
  #
45
42
  # Change a specific model file.
46
- # StanfordCoreNLP.set_model('pos.model', 'english-left3words-distsim.tagger')
43
+ # OpenNLP.set_model('pos.model', 'english-left3words-distsim.tagger')
47
44
  ```
48
45
 
49
46
  **Using the gem**
@@ -0,0 +1 @@
1
+ import java.util.Arrays;
2
 
1
3
  public static String[] tagWithArrayList(POSTagger posTagger, ArrayList[] objectArray) {
2
4
  return posTagger.tag(getStringArray(objectArray));
3
5
  }
4
6
  public static Object[] findWithArrayList(NameFinderME nameFinder, ArrayList[] tokens) {
5
7
  return nameFinder.find(getStringArray(tokens));
6
8
  }
7
9
  public static Object[] chunkWithArrays(ChunkerME chunker, ArrayList[] tokens, ArrayList[] tags) {
8
10
  return chunker.chunk(getStringArray(tokens), getStringArray(tags));
9
11
  }
10
12
  public static String[] getStringArray(ArrayList[] objectArray) {
11
13
  String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);
12
14
  }
Binary file
@@ -1,162 +1,31 @@
1
1
  module OpenNLP
2
-
3
- # Library version.
4
- VERSION = '0.0.1'
5
2
 
6
- # Require configuration.
7
- require 'open-nlp/config'
8
-
9
- # ############################ #
10
- # BindIt Configuration Options #
11
- # ############################ #
12
-
13
- require 'bind-it'
14
- extend BindIt::Binding
15
-
16
- # The path in which to look for JAR files, with
17
- # a trailing slash (default is gem's bin folder).
18
- self.jar_path = File.dirname(__FILE__) + '/../bin/'
19
-
20
- # Load the JVM with a minimum heap size of 512MB,
21
- # and a maximum heap size of 1024MB.
22
- self.jvm_args = ['-Xms512M', '-Xmx1024M']
23
-
24
- # Turn logging off by default.
25
- self.log_file = nil
26
-
27
- # Default JARs to load.
28
- self.default_jars = [
29
- 'jwnl-1.3.3.jar',
30
- 'opennlp-tools-1.5.2-incubating.jar',
31
- 'opennlp-maxent-3.0.2-incubating.jar',
32
- 'opennlp-uima-1.5.2-incubating.jar'
33
- ]
34
-
35
- # Default namespace.
36
- self.default_namespace = 'opennlp.tools'
37
-
38
- # Default classes.
39
- self.default_classes = [
40
- ['DocumentCategorizerME', 'opennlp.tools.doccat'],
41
- ['ChunkerME', 'opennlp.tools.chunker'],
42
- ['DictionaryDetokenizer', 'opennlp.tools.tokenize'],
43
- ['NameFinderME', 'opennlp.tools.namefind'],
44
- ['Parse', 'opennlp.tools.parser'],
45
- ['ParserFactory', 'opennlp.tools.parser'],
46
- ['POSTaggerME', 'opennlp.tools.postag'],
47
- ['SentenceDetectorME', 'opennlp.tools.sentdetect'],
48
- ['SimpleTokenizer', 'opennlp.tools.tokenize'],
49
- ['TokenizerME', 'opennlp.tools.tokenize']
50
- ]
51
-
52
- # Redefine the Bind-It class loader to redefine
53
- # a new constructor for classes that require a model.
54
- def self.load_klass(klass, base, name = nil)
55
- super(klass,base,name)
56
- requires_model = OpenNLP::Config::RequiresModel
57
- return unless requires_model.include?(klass)
58
- new_class = Class.new(const_get(klass)) do
59
- def initialize(file = nil, *args)
60
- klass = OpenNLP.last_name(self.class)
61
- if !file && !OpenNLP.has_default_model?(klass)
62
- raise 'This class intentionally has no default ' +
63
- 'model. Please supply a file name as an argument ' +
64
- 'to the class constructor.'
65
- else
66
- model = OpenNLP.get_model(klass, file)
67
- super(*([model] + args))
68
- end
69
- end
70
- end
71
- remove_const(klass)
72
- const_set(klass, new_class)
73
- end
74
-
75
- # Make the bindings.
76
- self.bind
77
-
78
- # Load utility classes.
79
- self.load_class('FileInputStream', 'java.io')
80
-
81
- # ############################ #
82
- # OpenNLP bindings proper #
83
- # ############################ #
3
+ # Library version.
4
+ VERSION = '0.1.0'
84
5
 
85
- class <<self
86
- # A hash containing loaded models.
87
- attr_accessor :models
88
- # A hash containing the names of loaded models.
89
- attr_accessor :model_files
90
- # The folder in which to look for models.
91
- attr_accessor :model_path
92
- # Store the language currently being used.
93
- attr_accessor :language
94
- end
95
-
96
- # The loaded models.
97
- self.models = {}
98
-
99
- # The names of loaded models.
100
- self.model_files = {}
101
-
102
- # The path to the main folder containing the folders
103
- # with the individual models inside. By default, this
104
- # is the same as the JAR path.
105
- self.model_path = self.jar_path
6
+ # Require Java bindings.
7
+ require 'open-nlp/bindings'
8
+ OpenNLP::Bindings.bind
106
9
 
107
- # Default the language to English.
108
- self.language = :english
10
+ # Require Ruby wrappers.
11
+ require 'open-nlp/classes'
109
12
 
110
- # Use a given language for default models.
111
- def self.use(language)
112
- self.language = language
13
+ # Load a Java class into the OpenNLP
14
+ # namespace (e.g. OpenNLP::Loaded).
15
+ def load_class(*args)
16
+ OpenNLP::Bindings.load_class(*args)
113
17
  end
114
18
 
115
- def self.set_model
116
- # Implement
117
- end
118
-
119
- def self.has_default_model?(klass)
120
- name = OpenNLP::Config::ClassToName[klass]
121
- if !OpenNLP::Config::DefaultModels[name]
122
- raise 'No default model files are available ' +
123
- "for the class #{klass}. Please supply a model " +
124
- 'as an argument to the constructor.'
125
- end
126
- !OpenNLP::Config::DefaultModels[name].empty?
19
+ # Forwards the handling of missing
20
+ # constants to the Bindings class.
21
+ def const_missing(const)
22
+ OpenNLP::Bindings.const_get(const)
127
23
  end
128
24
 
129
- def self.get_model(klass, file=nil)
130
- name = OpenNLP::Config::ClassToName[klass]
131
- if !self.language and !file
132
- raise 'No model file was supplied to the ' +
133
- 'constructor. Please supply a model file ' +
134
- 'or call OpenNLP.use(:some_language), to ' +
135
- 'load the default models for a language.'
136
- end
137
- OpenNLP.load_model(name, file)
138
- model = OpenNLP.models[name]
139
- end
140
-
141
- def self.load_model(name, file = nil)
142
- if self.models[name] && file ==
143
- self.model_files[name]
144
- return self.models[name]
145
- end
146
- models = Config::DefaultModels[name]
147
- file ||= models[self.language]
148
- path = self.model_path + file
149
- stream = FileInputStream.new(path)
150
- klass = Config::NameToClass[name]
151
- load_class(*klass)
152
- klass = const_get(klass[0])
153
- model = klass.new(stream)
154
- self.model_files[name] = file
155
- self.models[name] = model
25
+ # Forward the handling of missing
26
+ # methods to the Bindings class.
27
+ def method_missing(sym, *args, &block)
28
+ OpenNLP::Bindings.send(sym, *args, &block)
156
29
  end
157
30
 
158
- def self.last_name(klass)
159
- klass.to_s.split('::')[-1]
160
- end
161
-
162
- end
31
+ end
@@ -0,0 +1,49 @@
1
+ class OpenNLP::Base
2
+
3
+ def initialize(file_or_arg=nil, *args)
4
+
5
+ @proxy_class = OpenNLP::Bindings.const_get(last_name)
6
+
7
+ if requires_model?
8
+ if !file_or_arg && !has_default_model?
9
+ raise "No default model files are available for " +
10
+ "class #{last_name}. Please supply a model as" +
11
+ "an argument to the constructor."
12
+ end
13
+ @model = OpenNLP::Bindings.get_model(last_name, file_or_arg)
14
+ @proxy_inst = @proxy_class.new(*([@model] + args))
15
+ else
16
+ @proxy_inst = @proxy_class.new(*([*file_or_arg] + args))
17
+ end
18
+
19
+ end
20
+
21
+ def has_default_model?
22
+ name = OpenNLP::Config::ClassToName[last_name]
23
+ !OpenNLP::Config::DefaultModels[name].empty?
24
+ end
25
+
26
+ def requires_model?
27
+ OpenNLP::Config::RequiresModel.include?(last_name)
28
+ end
29
+
30
+ def last_name
31
+ self.class.to_s.split('::')[-1]
32
+ end
33
+
34
+
35
+ def method_missing(sym, *args, &block)
36
+ @proxy_inst.send(sym, *args, &block)
37
+ end
38
+
39
+ protected
40
+
41
+ def get_list(tokens)
42
+ list = OpenNLP::Bindings::ArrayList.new
43
+ tokens.each do |t|
44
+ list.add(OpenNLP::Bindings::String.new(t.to_s))
45
+ end
46
+ list
47
+ end
48
+
49
+ end
@@ -0,0 +1,133 @@
1
+ module OpenNLP::Bindings
2
+
3
+ # Require configuration.
4
+ require 'open-nlp/config'
5
+
6
+ # ############################ #
7
+ # BindIt Configuration Options #
8
+ # ############################ #
9
+
10
+ require 'bind-it'
11
+ extend BindIt::Binding
12
+
13
+ # The path in which to look for JAR files, with
14
+ # a trailing slash (default is gem's bin folder).
15
+ self.jar_path = File.dirname(__FILE__) + '/../../bin/'
16
+
17
+ # Load the JVM with a minimum heap size of 512MB,
18
+ # and a maximum heap size of 1024MB.
19
+ self.jvm_args = ['-Xms512M', '-Xmx1024M']
20
+
21
+ # Turn logging off by default.
22
+ self.log_file = nil
23
+
24
+ # Default JARs to load.
25
+ self.default_jars = [
26
+ 'jwnl-1.3.3.jar',
27
+ 'opennlp-tools-1.5.2-incubating.jar',
28
+ 'opennlp-maxent-3.0.2-incubating.jar',
29
+ 'opennlp-uima-1.5.2-incubating.jar'
30
+ ]
31
+
32
+ # Default namespace.
33
+ self.default_namespace = 'opennlp.tools'
34
+
35
+ # Default classes.
36
+ self.default_classes = [
37
+ ['AbstractBottomUpParser', 'opennlp.tools.parser'],
38
+ ['DocumentCategorizerME', 'opennlp.tools.doccat'],
39
+ ['ChunkerME', 'opennlp.tools.chunker'],
40
+ ['DictionaryDetokenizer', 'opennlp.tools.tokenize'],
41
+ ['NameFinderME', 'opennlp.tools.namefind'],
42
+ ['Parser', 'opennlp.tools.parser.chunking'],
43
+ ['Parse', 'opennlp.tools.parser'],
44
+ ['ParserFactory', 'opennlp.tools.parser'],
45
+ ['POSTaggerME', 'opennlp.tools.postag'],
46
+ ['SentenceDetectorME', 'opennlp.tools.sentdetect'],
47
+ ['SimpleTokenizer', 'opennlp.tools.tokenize'],
48
+ ['Span', 'opennlp.tools.util'],
49
+ ['TokenizerME', 'opennlp.tools.tokenize']
50
+ ]
51
+
52
+ # Add in Rjb workarounds.
53
+ unless RUBY_PLATFORM =~ /java/
54
+ self.default_jars << 'utils.jar'
55
+ self.default_classes << ['Utils', '']
56
+ end
57
+
58
+ # Make the bindings.
59
+ self.bind
60
+
61
+ # Load utility classes.
62
+ self.load_class('FileInputStream', 'java.io')
63
+ self.load_class('String', 'java.lang')
64
+ self.load_class('ArrayList', 'java.util')
65
+
66
+ # ############################ #
67
+ # OpenNLP bindings proper #
68
+ # ############################ #
69
+
70
+ class <<self
71
+ # A hash containing loaded models.
72
+ attr_accessor :models
73
+ # A hash containing the names of loaded models.
74
+ attr_accessor :model_files
75
+ # The folder in which to look for models.
76
+ attr_accessor :model_path
77
+ # Store the language currently being used.
78
+ attr_accessor :language
79
+ end
80
+
81
+ # The loaded models.
82
+ self.models = {}
83
+
84
+ # The names of loaded models.
85
+ self.model_files = {}
86
+
87
+ # The path to the main folder containing the folders
88
+ # with the individual models inside. By default, this
89
+ # is the same as the JAR path.
90
+ self.model_path = self.jar_path
91
+
92
+ # Default the language to English.
93
+ self.language = :english
94
+
95
+ # Use a given language for default models.
96
+ def self.use(language)
97
+ self.language = language
98
+ end
99
+
100
+ def self.get_model(klass, file=nil)
101
+ name = OpenNLP::Config::ClassToName[klass]
102
+ if !self.language and !file
103
+ raise 'No model file was supplied to the ' +
104
+ 'constructor. Please supply a model file ' +
105
+ 'or call OpenNLP.use(:some_language), to ' +
106
+ 'load the default models for a language.'
107
+ end
108
+ self.load_model(name, file)
109
+ model = self.models[name]
110
+ end
111
+
112
+ def self.set_model
113
+ raise 'Not implemented.'
114
+ end
115
+
116
+ def self.load_model(name, file = nil)
117
+ if self.models[name] && file ==
118
+ self.model_files[name]
119
+ return self.models[name]
120
+ end
121
+ models = OpenNLP::Config::DefaultModels[name]
122
+ file ||= models[self.language]
123
+ path = self.model_path + file
124
+ stream = FileInputStream.new(path)
125
+ klass = OpenNLP::Config::NameToClass[name]
126
+ load_class(*klass) unless const_defined?(klass[0])
127
+ klass = const_get(klass[0])
128
+ model = klass.new(stream)
129
+ self.model_files[name] = file
130
+ self.models[name] = model
131
+ end
132
+
133
+ end
@@ -0,0 +1,77 @@
1
+ require 'open-nlp/base'
2
+
3
+ class OpenNLP::SentenceDetectorME < OpenNLP::Base; end
4
+
5
+ class OpenNLP::SimpleTokenizer < OpenNLP::Base; end
6
+
7
+ class OpenNLP::TokenizerME < OpenNLP::Base; end
8
+
9
+ class OpenNLP::POSTaggerME < OpenNLP::Base
10
+
11
+ unless RUBY_PLATFORM =~ /java/
12
+ def tag(*args)
13
+ OpenNLP::Bindings::Utils.tagWithArrayList(@proxy_inst, args[0])
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ class OpenNLP::ChunkerME < OpenNLP::Base
20
+
21
+ if RUBY_PLATFORM =~ /java/
22
+
23
+ def chunk(tokens, tags)
24
+ if !tokens.is_a?(Array)
25
+ tokens = tokens.to_a
26
+ tags = tags.to_a
27
+ end
28
+ tokens = tokens.to_java(:String)
29
+ tags = tags.to_java(:String)
30
+ @proxy_inst.chunk(tokens,tags).to_a
31
+ end
32
+
33
+ else
34
+
35
+ def chunk(tokens, tags)
36
+ chunks = OpenNLP::Bindings::Utils.chunkWithArrays(@proxy_inst, tokens,tags)
37
+ chunks.map { |c| c.to_s }
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+ class OpenNLP::Parser < OpenNLP::Base
45
+
46
+ def parse(text)
47
+
48
+ tokenizer = OpenNLP::TokenizerME.new
49
+ full_span = OpenNLP::Bindings::Span.new(0, text.size)
50
+
51
+ parse_obj = OpenNLP::Bindings::Parse.new(
52
+ text, full_span, "INC", 1, 0)
53
+
54
+ tokens = tokenizer.tokenize_pos(text)
55
+
56
+ tokens.each_with_index do |tok,i|
57
+ start, stop = tok.get_start, tok.get_end
58
+ token = text[start..stop-1]
59
+ span = OpenNLP::Bindings::Span.new(start, stop)
60
+ parse = OpenNLP::Bindings::Parse.new(text, span, "TK", 0, i)
61
+ parse_obj.insert(parse)
62
+ end
63
+
64
+ @proxy_inst.parse(parse_obj)
65
+
66
+ end
67
+
68
+ end
69
+
70
+ class OpenNLP::NameFinderME < OpenNLP::Base
71
+ unless RUBY_PLATFORM =~ /java/
72
+ def find(*args)
73
+ OpenNLP::Bindings::Utils
74
+ .findWithArrayList(@proxy_inst, args[0])
75
+ end
76
+ end
77
+ end
@@ -17,7 +17,7 @@ module OpenNLP::Config
17
17
  'DocumentCategorizerME' => :categorizer,
18
18
  'NameFinderME' => :name_finder,
19
19
  'POSTaggerME' => :pos_tagger,
20
- 'ParserME' => :parser,
20
+ 'Parser' => :parser,
21
21
  'SentenceDetectorME' => :sentence_detector,
22
22
  'TokenizerME' => :tokenizer,
23
23
  }
@@ -48,7 +48,7 @@ module OpenNLP::Config
48
48
  # Classes that require a model as first argument to constructor.
49
49
  RequiresModel = [
50
50
  'SentenceDetectorME', 'NameFinderME', 'DictionaryDetokenizer',
51
- 'TokenizerME', 'ChunkerME', 'POSTaggerME'
51
+ 'TokenizerME', 'ChunkerME', 'POSTaggerME', 'Parser'
52
52
  ]
53
53
 
54
54
 
@@ -3,7 +3,6 @@ require_relative 'spec_helper'
3
3
 
4
4
  describe OpenNLP do
5
5
 
6
- # Failing spec #1
7
6
  context "the maximum entropy chunker is run after tokenization and POS tagging" do
8
7
  it "should find the accurate chunks" do
9
8
 
@@ -15,28 +14,38 @@ describe OpenNLP do
15
14
  tokens = tokenizer.tokenize(sent)
16
15
  tags = tagger.tag(tokens)
17
16
 
18
- chunks = chunker.chunk(tokens.to_java(:String), pos_tags.to_java(:String))
19
- # cannot convert instance of class org.jruby.java.proxies.ArrayJavaProxy to class java.lang.String
20
-
17
+ chunks = chunker.chunk(tokens, tags)
18
+
19
+ chunks.to_a.should eql %w[B-NP I-NP B-PP B-NP I-NP B-VP I-VP B-PP B-NP I-NP O]
21
20
  tokens.to_a.should eql %w[The death of the poet was kept from his poems .]
22
- tags.should eql ['put tags here']
21
+ tags.to_a.should eql %w[DT NN IN DT NN VBD VBN IN PRP$ NNS .]
23
22
 
24
23
  end
25
24
  end
26
25
 
27
- # Failing spec #2
28
26
  context "the maximum entropy parser is run after tokenization" do
29
27
  it "parses the text accurately" do
28
+
30
29
  sent = "The death of the poet was kept from his poems."
31
- tokenizer = OpenNLP::TokenizerME.new
32
- p_model = OpenNLP.load_model(:parser)
33
- parser = OpenNLP::ParserFactory.create(p_model)
34
- tokens = tokenizer.tokenize(sent)
35
- result = parser.parse(tokens.to_java(:String))
36
- # cannot convert instance of class org.jruby.java.proxies.ArrayJavaProxy to class java.lang.String
37
- # org/jruby/java/addons/KernelJavaAddons.java:70:in `to_java'
38
- # /ruby/gems/open-nlp/spec/english_spec.rb in `(root)'
39
- puts result.to_a.inspect
30
+ parser = OpenNLP::Parser.new
31
+ parse = parser.parse(sent)
32
+
33
+ parse.get_text.should eql sent
34
+
35
+ parse.get_span.get_start.should eql 0
36
+ parse.get_span.get_end.should eql 46
37
+ parse.get_span.get_type.should eql nil # ?
38
+ parse.get_child_count.should eql 1
39
+
40
+ child = parse.get_children[0]
41
+
42
+ child.text.should eql "The death of the poet was kept from his poems."
43
+ child.get_child_count.should eql 3
44
+ child.get_head_index.should eql 5
45
+
46
+ child.get_head.get_child_count.should eql 1
47
+ child.get_type.should eql "S"
48
+
40
49
  end
41
50
  end
42
51
 
metadata CHANGED
@@ -1,32 +1,48 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open-nlp
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.1
4
+ version: 0.1.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Louis Mullie
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-19 00:00:00.000000000 Z
12
+ date: 2012-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bind-it
16
- version_requirements: !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
17
18
  requirements:
18
19
  - - ! '>='
19
20
  - !ruby/object:Gem::Version
20
21
  version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
21
25
  none: false
22
- requirement: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
27
33
  none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
28
39
  prerelease: false
29
- type: :runtime
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  description: ! ' Ruby bindings to the OpenNLP tools, a Java machine learning toolkit
31
47
  for natural language processing (NLP). '
32
48
  email:
@@ -39,8 +55,13 @@ files:
39
55
  - bin/opennlp-maxent-3.0.2-incubating.jar
40
56
  - bin/opennlp-tools-1.5.2-incubating.jar
41
57
  - bin/opennlp-uima-1.5.2-incubating.jar
42
- - lib/open-nlp.rb
58
+ - bin/utils.jar
59
+ - bin/Utils.java
60
+ - lib/open-nlp/base.rb
61
+ - lib/open-nlp/bindings.rb
62
+ - lib/open-nlp/classes.rb
43
63
  - lib/open-nlp/config.rb
64
+ - lib/open-nlp.rb
44
65
  - spec/english_spec.rb
45
66
  - spec/sample.txt
46
67
  - spec/spec_helper.rb
@@ -48,27 +69,26 @@ files:
48
69
  - LICENSE
49
70
  homepage: https://github.com/louismullie/open-nlp
50
71
  licenses: []
51
- post_install_message:
72
+ post_install_message:
52
73
  rdoc_options: []
53
74
  require_paths:
54
75
  - lib
55
76
  required_ruby_version: !ruby/object:Gem::Requirement
77
+ none: false
56
78
  requirements:
57
79
  - - ! '>='
58
80
  - !ruby/object:Gem::Version
59
81
  version: '0'
60
- none: false
61
82
  required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
62
84
  requirements:
63
85
  - - ! '>='
64
86
  - !ruby/object:Gem::Version
65
87
  version: '0'
66
- none: false
67
88
  requirements: []
68
- rubyforge_project:
89
+ rubyforge_project:
69
90
  rubygems_version: 1.8.24
70
- signing_key:
91
+ signing_key:
71
92
  specification_version: 3
72
93
  summary: Ruby bindings to the OpenNLP Java toolkit.
73
94
  test_files: []
74
- ...