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.
@@ -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