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.
@@ -1,4 +1,3 @@
1
- 2
2
1
  <!DOCTYPE html>
3
2
  <html>
4
3
 
@@ -29,7 +28,14 @@
29
28
  <ul class="nav">
30
29
 
31
30
  </ul>
32
- <p class="pull-right"><button class="btn btn-success" id="new-translation">New translation</button></p>
31
+ <p class="pull-right">
32
+ <button class="btn btn-info" id="new-experiment-translation">
33
+ New experiment translation
34
+ </button>
35
+ <button class="btn btn-success" id="new-translation">
36
+ New translation
37
+ </button>
38
+ </p>
33
39
  </div><!--/.nav-collapse -->
34
40
  </div>
35
41
  </div>
@@ -144,6 +150,27 @@ Gibb last performed on stage at the London Palladium in February, supporting inj
144
150
  </div>
145
151
 
146
152
 
153
+ <div class="modal" id="new-experiment-modal">
154
+ <div class="modal-header">
155
+ <a class="close" data-dismiss="modal">×</a>
156
+ <h3>Start New Experiment</h3>
157
+ </div>
158
+ <div class="modal-body">
159
+ <p>
160
+ <label>Email</label>
161
+ <input id="new-experiment-email" placeholder="your email">
162
+ <label>Language pair</label>
163
+ <select id="new-experiment-pair">
164
+ <option value="en-cs">en-cs</option>
165
+ </select>
166
+ </p>
167
+
168
+ </div>
169
+ <div class="modal-footer">
170
+ <a href="#" class="btn btn-primary" id="create-new-experiment">Start experiment</a>
171
+ </div>
172
+ </div>
173
+
147
174
 
148
175
 
149
176
  </body>
@@ -30,6 +30,9 @@
30
30
  <li><a href="#about" id="preview">Preview</a></li>
31
31
  </ul>
32
32
  <p class="pull-right">
33
+ <button class="btn btn-info" id="send-experiment">
34
+ Send experiment results
35
+ </button>
33
36
  <button class="btn btn-info" id="save">
34
37
  Save into browser
35
38
  </button>
@@ -44,6 +47,7 @@
44
47
  <div class="container-fluid">
45
48
  <div class="row-fluid">
46
49
  <h1>Translations</h1>
50
+ <span id="time"></span>
47
51
 
48
52
  <table class=" table-bordered table-condensed" id="translation">
49
53
  <tr>
@@ -66,6 +70,8 @@
66
70
 
67
71
  </div><!--/row-->
68
72
 
73
+ <div id="log"></div>
74
+
69
75
  <hr>
70
76
 
71
77
  <footer>
@@ -13,7 +13,10 @@ module AjaxCat
13
13
  @lines = []
14
14
  @lock = Mutex.new
15
15
  @processed = false
16
- #@lock.lock
16
+ end
17
+
18
+ def prepare_moses_request
19
+ @sentence
17
20
  end
18
21
 
19
22
  def result
@@ -28,6 +31,10 @@ module AjaxCat
28
31
  Integer(line.split(" ||| ").first)
29
32
  end
30
33
 
34
+ def tokenize(str)
35
+ str.strip.split(/[\t\n ]+/)
36
+ end
37
+
31
38
  end
32
39
 
33
40
  end
@@ -0,0 +1,40 @@
1
+ module AjaxCat
2
+
3
+ module Request
4
+
5
+ class Suggestion < Raw
6
+
7
+ @@rows = 5
8
+ @@suggestion_length = 3
9
+
10
+ def initialize(sentence, covered, translated)
11
+ super(sentence)
12
+ @covered = covered
13
+ @translated = translated
14
+ @translated_length = tokenize(translated).length
15
+ @suggestions = []
16
+ end
17
+
18
+ def prepare_moses_request
19
+ "#{@translated} ||| #{@covered} ||| #{@sentence}"
20
+ end
21
+
22
+ def result
23
+ {
24
+ "suggestions" => @suggestions
25
+ }
26
+ end
27
+
28
+ def process_line(line)
29
+ words = line.split(" ||| ")[1].strip.split(" ")
30
+ if @suggestions.length < @@rows
31
+ suggestion = words[@translated_length, @@suggestion_length].join(" ")
32
+ @suggestions.push(suggestion) unless @suggestions.member?(suggestion)
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,94 @@
1
+ module AjaxCat
2
+
3
+ module Request
4
+
5
+ class Table < Raw
6
+
7
+ @@rows = 5
8
+
9
+ def initialize(sentence)
10
+ super(sentence)
11
+ @ret = {}
12
+ @ret["source"] = @sentence.strip.split(" ")
13
+ @buckets = []
14
+ @ret["source"].size.times {@buckets.push([])}
15
+ end
16
+
17
+ def result
18
+ @ret["table"] = []
19
+ @@rows.times do |row_number|
20
+ i = 0
21
+ free_space = 0
22
+ row = []
23
+ while i < @buckets.size
24
+ el = @buckets[i].shift
25
+ if el
26
+ if free_space > 0
27
+ row.push({"w" => free_space})
28
+ end
29
+ this_space = el.to - el.from + 1
30
+ row.push({
31
+ "str" => el.words,
32
+ "w" => this_space
33
+ })
34
+ free_space = 0
35
+ i += this_space
36
+ else
37
+ free_space += 1
38
+ i += 1
39
+ end
40
+ end
41
+ @ret["table"].push(row) if row.size > 0
42
+ end
43
+ return @ret
44
+ end
45
+
46
+ def process_line(line)
47
+ splited = line.split(" ||| ")
48
+ words = splited[1].strip.split(" ")
49
+ alignment = splited[4].strip.split(" ")
50
+ alignment.each do |al|
51
+ phrase = Phrase.new(words, al)
52
+ finded = @buckets[phrase.from].find do |el|
53
+ el.words == phrase.words and el.to == phrase.to
54
+ end
55
+ @buckets[phrase.from].push(phrase) if finded == nil
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ class Phrase
62
+
63
+ attr_reader :from, :to, :words
64
+
65
+ def initialize(words_list, alignment)
66
+ alignment = alignment.split("=")
67
+ source_alignment = parse(alignment[0])
68
+ target_alignment = parse(alignment[1])
69
+ @from = source_alignment[:from]
70
+ @to = source_alignment[:to]
71
+ @words = ""
72
+ target_alignment[:from].upto(target_alignment[:to]) do |position|
73
+ @words += " #{words_list[position]}"
74
+ end
75
+ @words.strip!
76
+ end
77
+
78
+ def parse(alignment)
79
+ if alignment.include?("-")
80
+ alignment = alignment.split("-")
81
+ from = alignment[0].to_i
82
+ to = alignment[1].to_i
83
+ else
84
+ from = alignment.to_i
85
+ to = from
86
+ end
87
+ return {from: from, to: to}
88
+ end
89
+
90
+ end
91
+
92
+ end
93
+
94
+ end
@@ -0,0 +1,6 @@
1
+
2
+
3
+ class Task < ActiveRecord::Base
4
+ has_many :logs
5
+
6
+ end
@@ -0,0 +1,83 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
6
+ <link rel="stylesheet" type="text/css" href="/bootstrap.css" />
7
+ <link rel="stylesheet" type="text/css" href="/style.css" />
8
+ <script src="/jquery.js"></script>
9
+ <script src="/bootstrap.js"></script>
10
+ <script src="/ajax-cat.js"></script>
11
+
12
+
13
+ <title>AJAX-CAT | admin</title>
14
+ </head>
15
+ <body>
16
+ <div class="navbar navbar-fixed-top">
17
+ <div class="navbar-inner">
18
+ <div class="container-fluid">
19
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
20
+ <span class="icon-bar"></span>
21
+ <span class="icon-bar"></span>
22
+ <span class="icon-bar"></span>
23
+ </a>
24
+ <a class="brand" href="#">AJAX-CAT | admin</a>
25
+ <div class="nav-collapse">
26
+ <ul class="nav">
27
+
28
+ </ul>
29
+ </div><!--/.nav-collapse -->
30
+ </div>
31
+ </div>
32
+ </div>
33
+
34
+ <br><br><br>
35
+
36
+ <div class="container-fluid">
37
+ <div class="row-fluid">
38
+ <h1>Experiments</h1>
39
+
40
+ <table class="table table-bordered table-striped table-condensed" id="translation-list">
41
+ <tr><th>#</th><th>Pair</th><th>Sentence</th><th></th><th></th></tr>
42
+ <% Task.all.each do |task| %>
43
+ <tr>
44
+ <td><%= task.id %></td>
45
+ <td><%= task.pair %></td>
46
+ <td><%= task.sentence %></td>
47
+ <td><a href="/experiment/<%= task.id %>">detail</a></td>
48
+ <td><form class="form-inline" method="post" action="/admin/remove_task?id=<%= task.id %>">
49
+ <input type="submit" class="btn btn-danger" value="Delete">
50
+ </form>
51
+ </td>
52
+ </tr>
53
+ <% end %>
54
+ </table>
55
+
56
+
57
+ <form class="well form-inline" method="post" action="/admin/add_task">
58
+ <select id="new-translation-pair" name="pair">
59
+ <% @pairs.each do |pair| %>
60
+ <option values="<%= pair %>"><%= pair %></option>
61
+ <% end %>
62
+ </select>
63
+ <input type="text" name="sentence" class="input-small" placeholder="New experiment task sentence" style="width: 600px;">
64
+ <button type="submit" class="btn btn-success">Create experiment task</button>
65
+ </form>
66
+
67
+ </div><!--/row-->
68
+
69
+ <hr>
70
+
71
+ <footer>
72
+ <p>Created by Ondřej Odcházel & Ondřej Bojar - <a href="http://ufal.mff.cuni.cz/">Institute of Formal and Applied Linguistics</a>,
73
+ Charles University in Prague<br>
74
+ Supported by the grant:
75
+ FP7-ICT-2007-3-231720 (EuroMatrix Plus)</p>
76
+ </footer>
77
+
78
+ </div>
79
+
80
+
81
+
82
+ </body>
83
+ </html>
@@ -0,0 +1,62 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
6
+ <link rel="stylesheet" type="text/css" href="/bootstrap.css" />
7
+ <link rel="stylesheet" type="text/css" href="/style.css" />
8
+ <script src="/jquery.js"></script>
9
+ <script src="/bootstrap.js"></script>
10
+ <script src="/ajax-cat.js"></script>
11
+
12
+
13
+ <title>AJAX-CAT | experiment</title>
14
+ </head>
15
+ <body>
16
+ <div class="navbar navbar-fixed-top">
17
+ <div class="navbar-inner">
18
+ <div class="container-fluid">
19
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
20
+ <span class="icon-bar"></span>
21
+ <span class="icon-bar"></span>
22
+ <span class="icon-bar"></span>
23
+ </a>
24
+ <a class="brand" href="#">AJAX-CAT | experiment</a>
25
+ <div class="nav-collapse">
26
+ <ul class="nav">
27
+
28
+ </ul>
29
+ </div><!--/.nav-collapse -->
30
+ </div>
31
+ </div>
32
+ </div>
33
+
34
+ <br><br><br>
35
+
36
+ <div class="container-fluid">
37
+ <div class="row-fluid">
38
+ <h1><%= @task.sentence %> <small><%= @task.pair %></small></h1>
39
+
40
+ <table class="table table-bordered table-striped table-condensed">
41
+ <% @task.logs.each do |log| %>
42
+ <tr><td><%= log.id %></td><td><%= log.time %></td><td><%= log.email %></td></tr>
43
+ <tr><td colspan="3"><%= log.log %></td></tr>
44
+ <% end %>
45
+ </table>
46
+ </div><!--/row-->
47
+
48
+ <hr>
49
+
50
+ <footer>
51
+ <p>Created by Ondřej Odcházel & Ondřej Bojar - <a href="http://ufal.mff.cuni.cz/">Institute of Formal and Applied Linguistics</a>,
52
+ Charles University in Prague<br>
53
+ Supported by the grant:
54
+ FP7-ICT-2007-3-231720 (EuroMatrix Plus)</p>
55
+ </footer>
56
+
57
+ </div>
58
+
59
+
60
+
61
+ </body>
62
+ </html>
data/logs.db ADDED
Binary file
@@ -0,0 +1,14 @@
1
+ {
2
+ "pairs": [
3
+ {
4
+ "name": "de-en",
5
+ "moses_path": "moses",
6
+ "moses_ini_path": "moses.ini"
7
+ },
8
+ {
9
+ "name": "de-en-2",
10
+ "moses_path": "moses",
11
+ "moses_ini_path": "moses.ini"
12
+ }
13
+ ]
14
+ }
@@ -12,11 +12,11 @@ T 0
12
12
 
13
13
  # translation tables: source-factors, target-factors, number of scores, file
14
14
  [ttable-file]
15
- 0 0 0 1 /Users/ondrejodchazel/projects/ajax-cat/ajax-cat-new/test/fixtures/phrase-table
15
+ 0 0 0 1 /Users/ondrejodchazel/projects/ajax-cat/ajax-cat-new/lib/../test/fixtures/phrase-table
16
16
 
17
17
  # language models: type(srilm/irstlm/kenlm), factors, order, file
18
18
  [lmodel-file]
19
- 8 0 3 /Users/ondrejodchazel/projects/ajax-cat/ajax-cat-new/test/fixtures/europarl.srilm.gz
19
+ 8 0 3 /Users/ondrejodchazel/projects/ajax-cat/ajax-cat-new/lib/../test/fixtures/europarl.srilm.gz
20
20
 
21
21
  # limit on how many phrase translations e for each phrase f are loaded
22
22
  [ttable-limit]
@@ -38,5 +38,9 @@ T 0
38
38
  [weight-w]
39
39
  0
40
40
 
41
+ [n-best-list]
42
+ nbest.txt
43
+ 100
44
+
41
45
 
42
46
 
@@ -0,0 +1,19 @@
1
+ 0 ||| this is ||| d: 0 lm: -14.9312 w: -2 tm: -0.223144 ||| -15.1543
2
+ 0 ||| it is ||| d: 0 lm: -14.205 w: -2 tm: -1.60944 ||| -15.8144
3
+ 0 ||| it is ||| d: 0 lm: -14.205 w: -2 tm: -2.30259 ||| -16.5075
4
+ 0 ||| this is ||| d: 0 lm: -14.9312 w: -2 tm: -2.30259 ||| -17.2337
5
+ 0 ||| the is ||| d: 0 lm: -19.4273 w: -2 tm: -0.916291 ||| -20.3436
6
+ 0 ||| it 's ||| d: 0 lm: -18.1748 w: -2 tm: -2.30259 ||| -20.4773
7
+ 0 ||| the 's ||| d: 0 lm: -19.7502 w: -2 tm: -0.916291 ||| -20.6664
8
+ 0 ||| is the ||| d: -3 lm: -17.4521 w: -2 tm: -0.916291 ||| -21.3684
9
+ 0 ||| is it ||| d: -3 lm: -16.1942 w: -2 tm: -2.30259 ||| -21.4968
10
+ 0 ||| is this ||| d: -3 lm: -16.681 w: -2 tm: -2.30259 ||| -21.9836
11
+ 0 ||| this 's ||| d: 0 lm: -20.5331 w: -2 tm: -2.30259 ||| -22.8357
12
+ 1 ||| tamto is a ||| d: 0 lm: -20.0002 w: -2 tm: 0 ||| -20.0002
13
+ 1 ||| tamto is an ||| d: 0 lm: -22.2533 w: -2 tm: 0 ||| -22.2533
14
+ 1 ||| tamto a is ||| d: -3 lm: -21.003 w: -2 tm: 0 ||| -24.003
15
+ 1 ||| tamto a 's ||| d: -3 lm: -21.3488 w: -2 tm: 0 ||| -24.3488
16
+ 1 ||| tamto 's a ||| d: 0 lm: -25.0755 w: -2 tm: 0 ||| -25.0755
17
+ 1 ||| tamto an is ||| d: -3 lm: -22.2279 w: -2 tm: 0 ||| -25.2279
18
+ 1 ||| tamto an 's ||| d: -3 lm: -22.5508 w: -2 tm: 0 ||| -25.5508
19
+ 1 ||| tamto 's an ||| d: 0 lm: -25.8532 w: -2 tm: 0 ||| -25.8532