freeling-analyzer 0.1.1 → 0.1.2
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/Guardfile +1 -0
- data/README.md +1 -0
- data/freeling-analyzer.gemspec +2 -2
- data/lib/freeling/analyzer.rb +26 -13
- data/lib/freeling/analyzer/freeling_default.rb +22 -4
- data/lib/freeling/analyzer/version.rb +1 -1
- data/test/analyzer_test.rb +1 -1
- data/test/freeling_default_test.rb +9 -6
- data/test/process_wrapper_test.rb +1 -1
- metadata +7 -7
data/Guardfile
CHANGED
@@ -6,6 +6,7 @@ guard :minitest do
|
|
6
6
|
#watch(%r|^test/(.*)\/?test_(.*)\.rb|)
|
7
7
|
#watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
|
8
8
|
#watch(%r|^test/test_helper\.rb|) { "test" }
|
9
|
+
|
9
10
|
watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1].split("/").last}_test.rb" }
|
10
11
|
watch(%r{^test/.+_test\.rb$})
|
11
12
|
watch('test/test_helper.rb') { "test" }
|
data/README.md
CHANGED
@@ -25,6 +25,7 @@ analyzer.tokens.map { |t| t.lemma }
|
|
25
25
|
the input text to `analyzer` on demand.
|
26
26
|
* It just works with the default instalation of FreeLing. Just set the language
|
27
27
|
to use and you're good to go.
|
28
|
+
* It supports Freeling's [client/server mode](http://nlp.lsi.upc.edu/freeling/doc/userman/html/node84.html). Ex: `FreeLing::Analyzer.new(text, :server_host => 'localhost:50005')` (`analyze` must be running in server mode)
|
28
29
|
|
29
30
|
## Installation
|
30
31
|
|
data/freeling-analyzer.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
|
|
9
9
|
`analyzer`, a binary tool included in FreeLing's
|
10
10
|
package that allows the user to process a stream of
|
11
11
|
text with FreeLing.}
|
12
|
-
gem.homepage = "
|
12
|
+
gem.homepage = "http://munshkr.github.io/freeling-analyzer-ruby"
|
13
13
|
|
14
14
|
gem.files = `git ls-files`.split($\)
|
15
15
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.add_development_dependency "rake"
|
22
22
|
gem.add_development_dependency "yard"
|
23
23
|
gem.add_development_dependency "mocha", "~> 0.14.0"
|
24
|
-
gem.add_development_dependency "minitest", "~>
|
24
|
+
gem.add_development_dependency "minitest", "~> 4.7.4"
|
25
25
|
gem.add_development_dependency "guard", "~> 1.8.0"
|
26
26
|
gem.add_development_dependency "guard-minitest", "~> 0.5.0"
|
27
27
|
|
data/lib/freeling/analyzer.rb
CHANGED
@@ -14,12 +14,14 @@ module FreeLing
|
|
14
14
|
@document = document
|
15
15
|
|
16
16
|
@options = {
|
17
|
-
:share_path
|
18
|
-
:analyze_path
|
19
|
-
:input_format
|
20
|
-
:output_format
|
21
|
-
:memoize
|
22
|
-
:language
|
17
|
+
:share_path => freeling_path,
|
18
|
+
:analyze_path => analyzer_path,
|
19
|
+
:input_format => :plain,
|
20
|
+
:output_format => :tagged,
|
21
|
+
:memoize => true,
|
22
|
+
:language => :es,
|
23
|
+
:server_host => nil,
|
24
|
+
:analyze_client_path => analyzer_client_path
|
23
25
|
}.merge(opts)
|
24
26
|
end
|
25
27
|
|
@@ -75,12 +77,16 @@ module FreeLing
|
|
75
77
|
|
76
78
|
private
|
77
79
|
def command
|
78
|
-
|
79
|
-
"
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
80
|
+
if @options[:server_host].nil?
|
81
|
+
"#{@options[:analyze_path]} " \
|
82
|
+
"-f #{config_path} " \
|
83
|
+
"--inpf #{@options[:input_format]} " \
|
84
|
+
"--outf #{@options[:output_format]} " \
|
85
|
+
"--nec " \
|
86
|
+
"--noflush"
|
87
|
+
else
|
88
|
+
"#{@options[:analyze_client_path]} #{@options[:server_host]}"
|
89
|
+
end
|
84
90
|
end
|
85
91
|
|
86
92
|
def config_path
|
@@ -93,7 +99,9 @@ module FreeLing
|
|
93
99
|
@process_wrapper = ProcessWrapper.new(command, output_fd, "FREELINGSHARE" => @options[:share_path])
|
94
100
|
|
95
101
|
@process_wrapper.run.each do |line|
|
96
|
-
if
|
102
|
+
if line.empty?
|
103
|
+
yielder << nil
|
104
|
+
else
|
97
105
|
yielder << parse_token_line(line)
|
98
106
|
end
|
99
107
|
end
|
@@ -126,5 +134,10 @@ module FreeLing
|
|
126
134
|
def analyzer_path
|
127
135
|
FreelingDefault.analyzer_path
|
128
136
|
end
|
137
|
+
|
138
|
+
def analyzer_client_path
|
139
|
+
FreelingDefault.analyzer_client_path
|
140
|
+
end
|
141
|
+
|
129
142
|
end
|
130
143
|
end
|
@@ -2,16 +2,23 @@ module FreeLing
|
|
2
2
|
class Analyzer
|
3
3
|
class FreelingDefault
|
4
4
|
|
5
|
-
LOCAL_ANALYZE_PATH
|
6
|
-
USR_ANALYZE_PATH
|
7
|
-
|
8
|
-
|
5
|
+
LOCAL_ANALYZE_PATH = "/usr/local/bin/analyzer"
|
6
|
+
USR_ANALYZE_PATH = "/usr/bin/analyzer"
|
7
|
+
LOCAL_ANALYZE_CLIENT_PATH = "/usr/local/bin/analyzer_client"
|
8
|
+
USR_ANALYZE_CLIENT_PATH = "/usr/bin/analyzer_client"
|
9
|
+
LOCAL_FREELING_SHARE_PATH = "/usr/local/share/freeling"
|
10
|
+
USR_FREELING_SHARE_PATH = "/usr/share/freeling"
|
9
11
|
|
10
12
|
class << self
|
11
13
|
def analyzer_path
|
12
14
|
self.new.analyzer_path
|
13
15
|
end
|
14
16
|
|
17
|
+
def analyzer_client_path
|
18
|
+
self.new.analyzer_client_path
|
19
|
+
end
|
20
|
+
|
21
|
+
|
15
22
|
def freeling_path
|
16
23
|
self.new.freeling_path
|
17
24
|
end
|
@@ -39,6 +46,17 @@ module FreeLing
|
|
39
46
|
end
|
40
47
|
end
|
41
48
|
|
49
|
+
def analyzer_client_path
|
50
|
+
if File.exists? LOCAL_ANALYZE_CLIENT_PATH
|
51
|
+
LOCAL_ANALYZE_CLIENT_PATH
|
52
|
+
elsif File.exists? USR_ANALYZE_CLIENT_PATH
|
53
|
+
USR_ANALYZE_CLIENT_PATH
|
54
|
+
else
|
55
|
+
raise_error(:analyze_client)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
|
42
60
|
def freeling_path
|
43
61
|
if Dir.exists? LOCAL_FREELING_SHARE_PATH
|
44
62
|
LOCAL_FREELING_SHARE_PATH
|
data/test/analyzer_test.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class FreelingDefaultTest < MiniTest::
|
3
|
+
class FreelingDefaultTest < MiniTest::Unit::TestCase
|
4
4
|
def setup
|
5
|
-
@usr_bin_analyzer
|
6
|
-
@local_bin_analyzer
|
7
|
-
@
|
8
|
-
@
|
5
|
+
@usr_bin_analyzer = "/usr/bin/analyzer"
|
6
|
+
@local_bin_analyzer = "/usr/local/bin/analyzer"
|
7
|
+
@usr_bin_analyze_client = "/usr/bin/analyzer_client"
|
8
|
+
@local_bin_analyze_client = "/usr/local/bin/analyzer_client"
|
9
|
+
@usr_share_freeling = "/usr/share/freeling"
|
10
|
+
@local_share_freeling = "/usr/local/share/freeling"
|
9
11
|
end
|
10
12
|
|
11
13
|
def test_freeling_installed_on_usr
|
@@ -31,8 +33,9 @@ class FreelingDefaultTest < MiniTest::Test
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
|
-
def
|
36
|
+
def test_instantiate_analyzer
|
35
37
|
File.stubs("exists?").with(@local_bin_analyzer).returns(true)
|
38
|
+
File.stubs("exists?").with(@local_bin_analyze_client).returns(true)
|
36
39
|
Dir.stubs("exists?").with(@local_share_freeling).returns(true)
|
37
40
|
document = mock("document")
|
38
41
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freeling-analyzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 4.7.4
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 4.7.4
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: guard
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,7 +149,7 @@ files:
|
|
149
149
|
- test/freeling_default_test.rb
|
150
150
|
- test/process_wrapper_test.rb
|
151
151
|
- test/test_helper.rb
|
152
|
-
homepage:
|
152
|
+
homepage: http://munshkr.github.io/freeling-analyzer-ruby
|
153
153
|
licenses: []
|
154
154
|
post_install_message:
|
155
155
|
rdoc_options: []
|
@@ -163,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
163
|
version: '0'
|
164
164
|
segments:
|
165
165
|
- 0
|
166
|
-
hash:
|
166
|
+
hash: 3533613494738759404
|
167
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
168
|
none: false
|
169
169
|
requirements:
|
@@ -172,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
172
|
version: '0'
|
173
173
|
segments:
|
174
174
|
- 0
|
175
|
-
hash:
|
175
|
+
hash: 3533613494738759404
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
178
|
rubygems_version: 1.8.25
|