diff options
-rw-r--r-- | prototype/README.md | 3 | ||||
-rwxr-xr-x | prototype/test_hg.rb | 4 | ||||
-rwxr-xr-x | prototype/test_parse.rb | 33 | ||||
-rwxr-xr-x | prototype/weaver_proto.rb (renamed from prototype/weaver.rb) | 1 |
4 files changed, 21 insertions, 20 deletions
diff --git a/prototype/README.md b/prototype/README.md new file mode 100644 index 0000000..7216d49 --- /dev/null +++ b/prototype/README.md @@ -0,0 +1,3 @@ +experimental scfg machine translation decoder in ruby, currently implements cky+ +parsing and viterbi on hypergraphs + diff --git a/prototype/test_hg.rb b/prototype/test_hg.rb index 65b61f1..d8071fb 100755 --- a/prototype/test_hg.rb +++ b/prototype/test_hg.rb @@ -6,9 +6,6 @@ def main # viterbi semiring = ViterbiSemiring.new hypergraph, nodes_by_id = HG::read_hypergraph_from_json('../example/toy/toy.json', semiring, true) - #hypergraph, nodes_by_id = HG::read_hypergraph_from_json('../example/toy/toy-test.json', semiring, true) - #hypergraph, nodes_by_id = HG::read_hypergraph_from_json('../example/glue/glue.json', semiring, true) - #hypergraph, nodes_by_id = HG::read_hypergraph_from_json('../example/3/3.json', semiring, true) path, score = HG::viterbi_path hypergraph, nodes_by_id[-1], semiring s = HG::derive path, path.last.head, [] path.each { |e| puts "#{e.rule}" } @@ -26,6 +23,5 @@ def main } end - main diff --git a/prototype/test_parse.rb b/prototype/test_parse.rb index cae6168..f57984a 100755 --- a/prototype/test_parse.rb +++ b/prototype/test_parse.rb @@ -1,24 +1,24 @@ #!/usr/bin/env ruby +require 'zipf' require_relative 'parse' def main - STDERR.write "> reading input from TODO\n" - input = 'ich sah ein kleines haus'.split - #input = 'lebensmittel schuld an europäischer inflation'.split - #input = 'offizielle prognosen sind von nur 3 prozent ausgegangen , meldete bloomberg .'.split + fn = '../example/toy/in' + #fn = '../example/glue/in' + STDERR.write "> reading input from #{fn}\n" + input = ReadFile.new(fn).readlines_strip.first.split n = input.size STDERR.write "> reading grammar\n" - #grammar = Grammar::Grammar.new '../example/toy/grammar' - grammar = Grammar::Grammar.new '../example/toy/grammar-test' + grammar = Grammar::Grammar.new '../example/toy/grammar' + #grammar = Grammar::Grammar.new '../example/toy/grammar-test' #grammar = Grammar::Grammar.new '../example/glue/grammar' - #grammar = Grammar::Grammar.new '../example/3/grammar' STDERR.write ">> adding glue grammar\n" grammar.add_glue_rules - STDERR.write ">> adding pass-through grammar\n" + #STDERR.write ">> adding pass-through grammar\n" #grammar.add_pass_through_rules input STDERR.write "> initializing charts\n" @@ -29,15 +29,16 @@ def main STDERR.write "> parsing\n" Parse::parse input, n, active_chart, passive_chart, grammar - puts "\n---\npassive chart" - Parse::visit(1, 0, n) { |i,j| k=0; puts "#{i},#{j}"; passive_chart.at(i,j).each { |item| puts " #{k} #{item.to_s}"; k+=1 }; puts } + STDERR.write "\n---\npassive chart\n" + Parse::visit(1, 0, n) { |i,j| k=0; STDERR.write "#{i},#{j}\n"; passive_chart.at(i,j).each { |item| STDERR.write " #{k} #{item.to_s}\n"; k+=1 }; STDERR.write "\n" } - weights_file = '../example/toy/weights' - #weights_file = '../example/glue/weights' - #weights_file = '../example/3/weights.init' - weights = SparseVector.from_kv(ReadFile.read(weights_file), ' ', "\n") - if !weights - weights = SparseVector.new + weights_fn = '../example/toy/weights.toy' + #weights_fn = nil + weights = nil + if weights_fn + weights = SparseVector.from_kv(ReadFile.read(weights_fn), ' ', "\n") + else + weights = SparseVector.new end puts passive_chart.to_hg.to_json weights diff --git a/prototype/weaver.rb b/prototype/weaver_proto.rb index 5cda844..912090b 100755 --- a/prototype/weaver.rb +++ b/prototype/weaver_proto.rb @@ -75,6 +75,7 @@ def main path, score = HG::viterbi_path hypergraph, hypergraph.nodes_by_id[-1], semiring s = HG::derive path, path.last.head, [] STDOUT.write "#{s.map { |i| i.word }.join ' '} ||| #{Math.log score}\n" + } end |