ajax-cat 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|