ajax-cat 0.3.0 → 0.4.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/Gemfile +2 -0
- data/Gemfile.lock +21 -0
- data/Rakefile +8 -2
- data/VERSION +1 -1
- data/ajax-cat.gemspec +22 -3
- data/bin/ajax-cat +20 -5
- data/lib/ajax-cat.rb +95 -8
- data/lib/ajax-cat/ajax_cat_server.rb +74 -6
- data/lib/ajax-cat/log.rb +6 -0
- data/lib/ajax-cat/moses_pair.rb +3 -4
- data/lib/ajax-cat/pairs.rb +56 -0
- data/lib/ajax-cat/public/AjaxCatList.coffee +62 -11
- data/lib/ajax-cat/public/AjaxCatTranslation.coffee +55 -7
- data/lib/ajax-cat/public/Suggestions.coffee +1 -1
- data/lib/ajax-cat/public/TranslationTable.coffee +7 -6
- data/lib/ajax-cat/public/ajax-cat.js +166 -29
- data/lib/ajax-cat/public/index.html +29 -2
- data/lib/ajax-cat/public/translation.html +6 -0
- data/lib/ajax-cat/request/raw.rb +8 -1
- data/lib/ajax-cat/request/suggestion.rb +40 -0
- data/lib/ajax-cat/request/table.rb +94 -0
- data/lib/ajax-cat/task.rb +6 -0
- data/lib/ajax-cat/views/admin.erb +83 -0
- data/lib/ajax-cat/views/experiment.erb +62 -0
- data/logs.db +0 -0
- data/test/fixtures/ajax-cat.ini.json +14 -0
- data/test/fixtures/moses.ini +6 -2
- data/test/fixtures/nbest.txt +19 -0
- data/test/helper.rb +2 -52
- data/test/integration/test_start_and_stop.rb +31 -3
- data/test/unit/test_moses_pair.rb +1 -4
- data/test/unit/test_pairs.rb +43 -0
- data/test/unit/test_suggestion_request.rb +32 -0
- data/test/unit/test_table_request.rb +61 -0
- metadata +56 -21
data/test/helper.rb
CHANGED
@@ -16,55 +16,5 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
16
16
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
17
17
|
require 'ajax-cat'
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
### MOSES CONFIG FILE ###
|
22
|
-
#########################
|
23
|
-
|
24
|
-
# input factors
|
25
|
-
[input-factors]
|
26
|
-
0
|
27
|
-
|
28
|
-
# mapping steps, either (T) translation or (G) generation
|
29
|
-
[mapping]
|
30
|
-
T 0
|
31
|
-
|
32
|
-
# translation tables: source-factors, target-factors, number of scores, file
|
33
|
-
[ttable-file]
|
34
|
-
0 0 0 1 #{Dir.pwd}/test/fixtures/phrase-table
|
35
|
-
|
36
|
-
# language models: type(srilm/irstlm/kenlm), factors, order, file
|
37
|
-
[lmodel-file]
|
38
|
-
8 0 3 #{Dir.pwd}/test/fixtures/europarl.srilm.gz
|
39
|
-
|
40
|
-
# limit on how many phrase translations e for each phrase f are loaded
|
41
|
-
[ttable-limit]
|
42
|
-
10
|
43
|
-
|
44
|
-
# distortion (reordering) weight
|
45
|
-
[weight-d]
|
46
|
-
1
|
47
|
-
|
48
|
-
# language model weights
|
49
|
-
[weight-l]
|
50
|
-
1
|
51
|
-
|
52
|
-
# translation model weights
|
53
|
-
[weight-t]
|
54
|
-
1
|
55
|
-
|
56
|
-
# word penalty
|
57
|
-
[weight-w]
|
58
|
-
0
|
59
|
-
|
60
|
-
[n-best-list]
|
61
|
-
nbest.txt
|
62
|
-
100
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
END
|
67
|
-
|
68
|
-
f = File.new(File.dirname(__FILE__) + "/fixtures/moses.ini", "w")
|
69
|
-
f.write(@moses_ini)
|
70
|
-
f.close
|
19
|
+
AjaxCat::Logger.print_log(false)
|
20
|
+
AjaxCat::Runner.create_sample_moses_ini
|
@@ -6,16 +6,44 @@ module AjaxCat
|
|
6
6
|
context "run app" do
|
7
7
|
|
8
8
|
setup do
|
9
|
+
Dir.chdir(File.dirname(__FILE__) + "/../fixtures/")
|
9
10
|
@port = 8585
|
10
11
|
@pid = fork do
|
11
|
-
|
12
|
+
Runner.new(@port)
|
12
13
|
end
|
14
|
+
server_started = false
|
15
|
+
1000.times do
|
16
|
+
raised = false
|
17
|
+
begin
|
18
|
+
Curl::Easy.perform("http://localhost:#{@port}/index.html")
|
19
|
+
rescue
|
20
|
+
raised = true
|
21
|
+
end
|
22
|
+
unless raised
|
23
|
+
server_started = true
|
24
|
+
break
|
25
|
+
end
|
26
|
+
sleep 0.01
|
27
|
+
end
|
28
|
+
raise "cant start server" unless server_started
|
13
29
|
end
|
14
30
|
|
15
|
-
should "start server on default port
|
16
|
-
sleep 3
|
31
|
+
should "start server on default port" do
|
17
32
|
result = Curl::Easy.perform("http://localhost:#{@port}/index.html")
|
18
33
|
assert_equal 200, result.response_code
|
34
|
+
|
35
|
+
result = Curl::Easy.perform("http://localhost:#{@port}/api/raw?q=das+ist&pair=de-en")
|
36
|
+
assert_equal 200, result.response_code
|
37
|
+
assert_equal(724, result.body_str.size)
|
38
|
+
|
39
|
+
result = Curl::Easy.perform("http://localhost:#{@port}/api/table?q=das+ist&pair=de-en")
|
40
|
+
assert_equal 200, result.response_code
|
41
|
+
|
42
|
+
result = Curl::Easy.perform("http://localhost:#{@port}/api/table?q=das+ist")
|
43
|
+
assert_equal 404, result.response_code
|
44
|
+
|
45
|
+
result = Curl::Easy.perform("http://localhost:#{@port}/api/suggestion?q=das+ist+ein&pair=de-en&covered=100&translated=tohle")
|
46
|
+
assert_equal 200, result.response_code
|
19
47
|
end
|
20
48
|
|
21
49
|
teardown do
|
@@ -4,15 +4,12 @@ module AjaxCat
|
|
4
4
|
|
5
5
|
class TestMosesPair < Test::Unit::TestCase
|
6
6
|
def test_moses_pair
|
7
|
-
|
8
|
-
Logger.print_log(false)
|
9
|
-
|
10
7
|
moses_ini_path = File.dirname(__FILE__) + "/../fixtures/moses.ini"
|
11
8
|
@pair = MosesPair.new('cs-en',"moses",moses_ini_path)
|
12
9
|
assert_equal(@pair.class, MosesPair, "right class")
|
13
10
|
request = Request::Raw.new("das ist")
|
14
11
|
result = @pair.process_request(request)
|
15
|
-
assert_equal(
|
12
|
+
assert_equal(724, result.size)
|
16
13
|
end
|
17
14
|
end
|
18
15
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module AjaxCat
|
4
|
+
|
5
|
+
class TestPairs < Test::Unit::TestCase
|
6
|
+
context "run pairs from file" do
|
7
|
+
|
8
|
+
setup do
|
9
|
+
moses_ini_path = File.dirname(__FILE__) + "/../fixtures/moses.ini"
|
10
|
+
@pair_name = 'de-en'
|
11
|
+
@settings = {
|
12
|
+
"pairs" => [
|
13
|
+
{
|
14
|
+
"name" => @pair_name,
|
15
|
+
"moses_path" => 'moses',
|
16
|
+
"moses_ini_path" => moses_ini_path
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"name" => @pair_name + "-2",
|
20
|
+
"moses_path" => 'moses',
|
21
|
+
"moses_ini_path" => moses_ini_path
|
22
|
+
}
|
23
|
+
]
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
should "pairs should be started" do
|
28
|
+
|
29
|
+
pairs = Pairs.new(@settings)
|
30
|
+
|
31
|
+
result = pairs.process_request(Request::Raw.new("das ist"), @pair_name)
|
32
|
+
assert_equal(724, result.size)
|
33
|
+
assert_equal(['de-en','de-en-2'], pairs.list)
|
34
|
+
end
|
35
|
+
|
36
|
+
teardown do
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module AjaxCat
|
4
|
+
|
5
|
+
class TestSuggestionRequest < Test::Unit::TestCase
|
6
|
+
context "process suggestions" do
|
7
|
+
|
8
|
+
setup do
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
should "parse suggestions right" do
|
13
|
+
request = Request::Suggestion.new("das ist ein kleines haus", "11000", " tohle je")
|
14
|
+
request.process_line("0 ||| tohle je a small house ||| d: 0 lm: -25.9604 w: -3 tm: -1.60944 ||| -27.5698 ||| 2=2 3=3 4=4")
|
15
|
+
request.process_line("0 ||| tohle je a little house ||| d: 0 lm: -25.9604 w: -3 tm: -1.60944 ||| -27.5698 ||| 2=2 3=3 4=4")
|
16
|
+
request.process_line("0 ||| tohle je an small house ||| d: 0 lm: -25.9604 w: -3 tm: -1.60944 ||| -27.5698 ||| 2=2 3=3 4=4")
|
17
|
+
request.process_line("0 ||| tohle je an small house ||| d: 0 lm: -25.9604 w: -3 tm: -1.60944 ||| -27.5698 ||| 2=2 3=3 4=4")
|
18
|
+
|
19
|
+
|
20
|
+
assert_equal(
|
21
|
+
{
|
22
|
+
"suggestions" => [
|
23
|
+
"a small house",
|
24
|
+
"a little house",
|
25
|
+
"an small house"
|
26
|
+
]
|
27
|
+
}, request.result)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module AjaxCat
|
4
|
+
|
5
|
+
class TestTableRequest < Test::Unit::TestCase
|
6
|
+
context "process table" do
|
7
|
+
|
8
|
+
setup do
|
9
|
+
@logger = Logger.new("prefix")
|
10
|
+
end
|
11
|
+
|
12
|
+
should "parse table right" do
|
13
|
+
request = Request::Table.new(" das ist ein ")
|
14
|
+
request.process_line("464 ||| this is a ||| d: 0 lm: -15.6027 w: -3 tm: -0.223144 ||| -15.8259 ||| 0-1=0-1 2=2")
|
15
|
+
request.process_line("464 ||| this is an ||| d: 0 lm: -16.3011 w: -3 tm: -0.223144 ||| -16.5242 ||| 0-1=0-1 2=2")
|
16
|
+
request.process_line("464 ||| ann this is ||| d: -5 lm: -29.8134 w: -3 tm: -0.223144 ||| -35.0366 ||| 2=0 0=1-2")
|
17
|
+
|
18
|
+
assert_equal(
|
19
|
+
{
|
20
|
+
"source" => ["das","ist","ein"],
|
21
|
+
"table" =>
|
22
|
+
[
|
23
|
+
[
|
24
|
+
{
|
25
|
+
"str" => "this is",
|
26
|
+
"w" => 2
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"str" => "a",
|
30
|
+
"w" => 1
|
31
|
+
}
|
32
|
+
],
|
33
|
+
[
|
34
|
+
{
|
35
|
+
"str" => "this is",
|
36
|
+
"w" => 1
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"w" => 1
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"str" => "an",
|
43
|
+
"w" => 1
|
44
|
+
}
|
45
|
+
],
|
46
|
+
[
|
47
|
+
{
|
48
|
+
"w" => 2
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"str" => "ann",
|
52
|
+
"w" => 1
|
53
|
+
}
|
54
|
+
]
|
55
|
+
]
|
56
|
+
}, request.result)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ajax-cat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-22 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &2165628220 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.3.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2165628220
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: colorize
|
27
|
-
requirement: &
|
27
|
+
requirement: &2165627620 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.5.8
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2165627620
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: thin
|
38
|
-
requirement: &
|
38
|
+
requirement: &2165624860 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.3.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2165624860
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: thor
|
49
|
-
requirement: &
|
49
|
+
requirement: &2165624380 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,32 @@ dependencies:
|
|
54
54
|
version: 0.15.2
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2165624380
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: sqlite3-ruby
|
60
|
+
requirement: &2165623860 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.3.3
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2165623860
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activerecord
|
71
|
+
requirement: &2165623100 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2165623100
|
58
80
|
- !ruby/object:Gem::Dependency
|
59
81
|
name: rdoc
|
60
|
-
requirement: &
|
82
|
+
requirement: &2165622420 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
84
|
requirements:
|
63
85
|
- - ~>
|
@@ -65,10 +87,10 @@ dependencies:
|
|
65
87
|
version: '3.12'
|
66
88
|
type: :development
|
67
89
|
prerelease: false
|
68
|
-
version_requirements: *
|
90
|
+
version_requirements: *2165622420
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
92
|
name: bundler
|
71
|
-
requirement: &
|
93
|
+
requirement: &2165621660 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
96
|
- - ~>
|
@@ -76,10 +98,10 @@ dependencies:
|
|
76
98
|
version: 1.0.0
|
77
99
|
type: :development
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *2165621660
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
103
|
name: jeweler
|
82
|
-
requirement: &
|
104
|
+
requirement: &2165621040 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
107
|
- - ~>
|
@@ -87,10 +109,10 @@ dependencies:
|
|
87
109
|
version: 1.8.3
|
88
110
|
type: :development
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *2165621040
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
114
|
name: shoulda
|
93
|
-
requirement: &
|
115
|
+
requirement: &2165620540 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ~>
|
@@ -98,10 +120,10 @@ dependencies:
|
|
98
120
|
version: 3.0.1
|
99
121
|
type: :development
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *2165620540
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
125
|
name: curb
|
104
|
-
requirement: &
|
126
|
+
requirement: &2165619980 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ~>
|
@@ -109,7 +131,7 @@ dependencies:
|
|
109
131
|
version: 0.8.0
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *2165619980
|
113
135
|
description: computer-aided translation backed by machine translation
|
114
136
|
email: odchazel@gmail.com
|
115
137
|
executables:
|
@@ -131,8 +153,10 @@ files:
|
|
131
153
|
- lib/.DS_Store
|
132
154
|
- lib/ajax-cat.rb
|
133
155
|
- lib/ajax-cat/ajax_cat_server.rb
|
156
|
+
- lib/ajax-cat/log.rb
|
134
157
|
- lib/ajax-cat/logger.rb
|
135
158
|
- lib/ajax-cat/moses_pair.rb
|
159
|
+
- lib/ajax-cat/pairs.rb
|
136
160
|
- lib/ajax-cat/public/AjaxCatList.coffee
|
137
161
|
- lib/ajax-cat/public/AjaxCatTranslation.coffee
|
138
162
|
- lib/ajax-cat/public/Suggestions.coffee
|
@@ -150,8 +174,16 @@ files:
|
|
150
174
|
- lib/ajax-cat/public/translation.js
|
151
175
|
- lib/ajax-cat/request/raw.rb
|
152
176
|
- lib/ajax-cat/request/simple.rb
|
177
|
+
- lib/ajax-cat/request/suggestion.rb
|
178
|
+
- lib/ajax-cat/request/table.rb
|
179
|
+
- lib/ajax-cat/task.rb
|
180
|
+
- lib/ajax-cat/views/admin.erb
|
181
|
+
- lib/ajax-cat/views/experiment.erb
|
182
|
+
- logs.db
|
183
|
+
- test/fixtures/ajax-cat.ini.json
|
153
184
|
- test/fixtures/europarl.srilm.gz
|
154
185
|
- test/fixtures/moses.ini
|
186
|
+
- test/fixtures/nbest.txt
|
155
187
|
- test/fixtures/phrase-table
|
156
188
|
- test/fixtures/translation_table
|
157
189
|
- test/helper.rb
|
@@ -159,8 +191,11 @@ files:
|
|
159
191
|
- test/unit/.DS_Store
|
160
192
|
- test/unit/test_logger.rb
|
161
193
|
- test/unit/test_moses_pair.rb
|
194
|
+
- test/unit/test_pairs.rb
|
162
195
|
- test/unit/test_raw_request.rb
|
163
196
|
- test/unit/test_simple_request.rb
|
197
|
+
- test/unit/test_suggestion_request.rb
|
198
|
+
- test/unit/test_table_request.rb
|
164
199
|
homepage: http://github.com/hypertornado/ajax-cat
|
165
200
|
licenses:
|
166
201
|
- MIT
|
@@ -176,7 +211,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
211
|
version: '0'
|
177
212
|
segments:
|
178
213
|
- 0
|
179
|
-
hash: -
|
214
|
+
hash: -801702601233484845
|
180
215
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
216
|
none: false
|
182
217
|
requirements:
|