freeling-client 0.0.2 → 0.0.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 +4 -4
- data/Gemfile.lock +1 -3
- data/README.md +4 -0
- data/freeling-client.gemspec +0 -1
- data/lib/freeling_client/analyzer.rb +52 -35
- data/lib/freeling_client/client.rb +24 -0
- data/lib/freeling_client/language_detector.rb +15 -0
- data/lib/freeling_client/token.rb +18 -0
- data/lib/freeling_client/version.rb +1 -1
- data/lib/freeling_client.rb +1 -0
- metadata +2 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62a4acda4bd1089ad98e20cab65faed5e708cf02
|
4
|
+
data.tar.gz: c8d8cce46008af061eb11129376d7cc12563b2b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8a56248656d3176eef293c7dd121838e889605f88f0b1d4a913f0e0698afbc4aa771455174dc838e9faccd9648968f0440aa8c598a929a575288bfe56f775e0
|
7
|
+
data.tar.gz: 7ae997ecc681f90b20e36679c58d898f6c3f3af7a5bc9d68cfe0b8f4191bf622cee5aab7310cfd28c085d80be9d8206faa436261ef3e1ebfcd34c1e5ae9300d9
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -60,3 +60,7 @@ With `nec` analysis:
|
|
60
60
|
|
61
61
|
FREELINGSHARE=/usr/local/share/freeling/ analyzer \
|
62
62
|
-f config/freeling/analyzer.cfg --server --port 50005 --inpf plain --outf tagged --nec --noflush
|
63
|
+
|
64
|
+
## Testing Freeling stand-alone
|
65
|
+
|
66
|
+
FREELINGSHARE=/usr/local/share/freeling/ analyzer -f config/freeling/analyzer.cfg --inpf plain --locale es_ES.UTF-8 --outf morfo --noflush < file.txt
|
data/freeling-client.gemspec
CHANGED
@@ -20,7 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
21
21
|
s.require_paths = ["lib"]
|
22
22
|
|
23
|
-
s.add_dependency "hashie", "~> 3"
|
24
23
|
s.add_development_dependency "bundler", "~> 1.7"
|
25
24
|
s.add_development_dependency "rake", "~> 10.3"
|
26
25
|
s.add_development_dependency "minitest", "~> 5"
|
@@ -5,50 +5,27 @@ require "open3"
|
|
5
5
|
require "tempfile"
|
6
6
|
require "timeout"
|
7
7
|
|
8
|
-
require "hashie/mash"
|
9
8
|
require "freeling_client/base"
|
10
9
|
|
11
10
|
|
12
11
|
module FreelingClient
|
13
12
|
class Analyzer < Base
|
14
|
-
|
15
|
-
Token = Class.new(Hashie::Mash)
|
16
|
-
|
17
13
|
def initialize(opt={})
|
18
14
|
@config = opt.fetch(:config, 'config/freeling/analyzer.cfg')
|
19
|
-
@port = opt[:port]
|
20
|
-
@server = opt[:server]
|
21
15
|
@timeout = opt.fetch(:timeout, 60) # Three hours
|
22
16
|
end
|
23
17
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
output << line.chomp
|
36
|
-
end
|
37
|
-
|
38
|
-
message = stderr.readlines
|
39
|
-
unless message.empty?
|
40
|
-
raise ExtractionError, message.join("\n")
|
41
|
-
end
|
42
|
-
}
|
43
|
-
rescue Timeout::Error
|
44
|
-
raise ExtractionError, "Timeout"
|
45
|
-
ensure
|
46
|
-
file.close
|
47
|
-
file.unlink
|
48
|
-
end
|
49
|
-
output
|
50
|
-
end
|
51
|
-
|
18
|
+
# Generate tokens for a given text
|
19
|
+
#
|
20
|
+
# Example:
|
21
|
+
#
|
22
|
+
# >> analyzer = FreelingClient::Analyzer.new
|
23
|
+
# >> analyzer.token(:morfo, "Este texto está en español.")
|
24
|
+
#
|
25
|
+
# Arguments:
|
26
|
+
# cmd: (Symbol)
|
27
|
+
# text: (String)
|
28
|
+
#
|
52
29
|
def tokens(cmd, text)
|
53
30
|
valide_command!(cmd)
|
54
31
|
Enumerator.new do |yielder|
|
@@ -58,6 +35,18 @@ module FreelingClient
|
|
58
35
|
end
|
59
36
|
end
|
60
37
|
|
38
|
+
# Generate ptokens for a given text
|
39
|
+
# ptokens: Tokens with position
|
40
|
+
#
|
41
|
+
# Example:
|
42
|
+
#
|
43
|
+
# >> analyzer = FreelingClient::Analyzer.new
|
44
|
+
# >> analyzer.ptoken(:morfo, "Este texto está en español.")
|
45
|
+
#
|
46
|
+
# Arguments:
|
47
|
+
# cmd: (Symbol)
|
48
|
+
# text: (String)
|
49
|
+
#
|
61
50
|
def ptokens(cmd, text)
|
62
51
|
Enumerator.new do |yielder|
|
63
52
|
pos = 0
|
@@ -79,9 +68,37 @@ module FreelingClient
|
|
79
68
|
end
|
80
69
|
end
|
81
70
|
|
71
|
+
def call(cmd, text)
|
72
|
+
valide_command!(cmd)
|
73
|
+
|
74
|
+
output = []
|
75
|
+
file = Tempfile.new('foo', encoding: 'utf-8')
|
76
|
+
begin
|
77
|
+
file.write(text)
|
78
|
+
file.close
|
79
|
+
stdin, stdout, stderr = Open3.popen3(command(cmd, file.path))
|
80
|
+
Timeout::timeout(@timeout) {
|
81
|
+
until (line = stdout.gets).nil?
|
82
|
+
output << line.chomp
|
83
|
+
end
|
84
|
+
|
85
|
+
message = stderr.readlines
|
86
|
+
unless message.empty?
|
87
|
+
raise ExtractionError, message.join("\n")
|
88
|
+
end
|
89
|
+
}
|
90
|
+
rescue Timeout::Error
|
91
|
+
raise ExtractionError, "Timeout"
|
92
|
+
ensure
|
93
|
+
file.close
|
94
|
+
file.unlink
|
95
|
+
end
|
96
|
+
output
|
97
|
+
end
|
98
|
+
|
82
99
|
def parse_token_line(str)
|
83
100
|
form, lemma, tag, prob = str.split(' ')[0..3]
|
84
|
-
Token.new({
|
101
|
+
FreelingClient::Token.new({
|
85
102
|
:form => form,
|
86
103
|
:lemma => lemma,
|
87
104
|
:tag => tag,
|
@@ -4,12 +4,34 @@ require "freeling_client/base"
|
|
4
4
|
|
5
5
|
module FreelingClient
|
6
6
|
class Client < Base
|
7
|
+
|
8
|
+
# Initializes the client
|
9
|
+
#
|
10
|
+
# Example:
|
11
|
+
#
|
12
|
+
# >> client = FreelingClient::Client.new
|
13
|
+
#
|
14
|
+
# Arguments:
|
15
|
+
# server: (String)
|
16
|
+
# port: (String)
|
17
|
+
# timeout: (Integer)
|
18
|
+
#
|
7
19
|
def initialize(opt = {})
|
8
20
|
@server = opt.fetch(:server, 'localhost')
|
9
21
|
@port = opt.fetch(:port, 50005)
|
10
22
|
@timeout = opt.fetch(:timeout, 120)
|
11
23
|
end
|
12
24
|
|
25
|
+
# Calls the server with a given text
|
26
|
+
#
|
27
|
+
# Example:
|
28
|
+
#
|
29
|
+
# >> client = FreelingClient::Client.new
|
30
|
+
# >> client.call("Este texto está en español.")
|
31
|
+
#
|
32
|
+
# Arguments:
|
33
|
+
# text: (String)
|
34
|
+
#
|
13
35
|
def call(text)
|
14
36
|
output = []
|
15
37
|
file = Tempfile.new('foo', encoding: 'utf-8')
|
@@ -38,6 +60,8 @@ module FreelingClient
|
|
38
60
|
output
|
39
61
|
end
|
40
62
|
|
63
|
+
private
|
64
|
+
|
41
65
|
def command(file_path)
|
42
66
|
"/usr/local/bin/analyzer_client #{server}:#{port} < #{file_path}"
|
43
67
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require "open3"
|
2
4
|
require "freeling_client/base"
|
3
5
|
|
@@ -10,6 +12,17 @@ module FreelingClient
|
|
10
12
|
@timeout = opt.fetch(:timeout, 120)
|
11
13
|
end
|
12
14
|
|
15
|
+
# Detects language
|
16
|
+
#
|
17
|
+
# Example:
|
18
|
+
#
|
19
|
+
# >> detector = FreelingClient::LanguageDetector.new
|
20
|
+
# >> detector.detect("Este texto está en español.")
|
21
|
+
# => "es"
|
22
|
+
#
|
23
|
+
# Arguments:
|
24
|
+
# text: (String)
|
25
|
+
#
|
13
26
|
def detect(text)
|
14
27
|
output = []
|
15
28
|
file = Tempfile.new('foo', encoding: 'utf-8')
|
@@ -38,6 +51,8 @@ module FreelingClient
|
|
38
51
|
output[0].to_sym
|
39
52
|
end
|
40
53
|
|
54
|
+
private
|
55
|
+
|
41
56
|
def command(file_path)
|
42
57
|
"/usr/local/bin/analyzer --outf ident --fidn #{ident} -f #{config} < #{file_path}"
|
43
58
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module FreelingClient
|
2
|
+
class Token
|
3
|
+
|
4
|
+
attr_accessor :form, :lemma, :tag, :prob, :pos
|
5
|
+
|
6
|
+
def initialize(opt = {})
|
7
|
+
@form = opt[:form]
|
8
|
+
@lemma = opt[:lemma]
|
9
|
+
@tag = opt[:tag]
|
10
|
+
@prob = opt[:tag]
|
11
|
+
end
|
12
|
+
|
13
|
+
def [](key)
|
14
|
+
key = key.to_sym if key.is_a? String
|
15
|
+
self.send(key)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/freeling_client.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freeling-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcos Vanetta
|
@@ -10,20 +10,6 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2014-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: hashie
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '3'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '3'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: bundler
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -85,6 +71,7 @@ files:
|
|
85
71
|
- lib/freeling_client/base.rb
|
86
72
|
- lib/freeling_client/client.rb
|
87
73
|
- lib/freeling_client/language_detector.rb
|
74
|
+
- lib/freeling_client/token.rb
|
88
75
|
- lib/freeling_client/version.rb
|
89
76
|
- start-freeling.sh
|
90
77
|
- test/lib/freeling_client_test.rb
|