Repository: incubator-joshua Updated Branches: refs/heads/master 4c0b55337 -> 98ad70a26
bugfix in writing nbest out file in Moses compat mode (added test case) Project: http://git-wip-us.apache.org/repos/asf/incubator-joshua/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-joshua/commit/98ad70a2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-joshua/tree/98ad70a2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-joshua/diff/98ad70a2 Branch: refs/heads/master Commit: 98ad70a26e8e272ffb61f200a7e2848558c1131d Parents: 4c0b553 Author: Matt Post <[email protected]> Authored: Sat Apr 2 00:14:53 2016 -0400 Committer: Matt Post <[email protected]> Committed: Sat Apr 2 00:14:53 2016 -0400 ---------------------------------------------------------------------- src/joshua/decoder/Decoder.java | 11 ++++++++++- src/joshua/server/ServerThread.java | 3 --- test/decoder/moses-compat/n-best.txt | 0 test/decoder/moses-compat/output.expected | 6 ++++++ test/decoder/moses-compat/test.sh | 25 +++++++++++++++++++++++++ 5 files changed, 41 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/98ad70a2/src/joshua/decoder/Decoder.java ---------------------------------------------------------------------- diff --git a/src/joshua/decoder/Decoder.java b/src/joshua/decoder/Decoder.java index 8e74d42..49b45ea 100644 --- a/src/joshua/decoder/Decoder.java +++ b/src/joshua/decoder/Decoder.java @@ -7,6 +7,7 @@ import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.io.FileNotFoundException; +import java.io.FileWriter; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.Collection; @@ -425,6 +426,11 @@ public class Decoder { /* Start a thread to handle requests on the input stream */ new RequestParallelizer(request, translations, out).start(); + // Create the n-best output stream + FileWriter nbest_out = null; + if (joshuaConfiguration.n_best_file != null) + nbest_out = new FileWriter(joshuaConfiguration.n_best_file); + for (;;) { Translation translation = translations.next(); if (translation == null) @@ -446,7 +452,7 @@ public class Decoder { text = translation.toString().replaceAll("=", "= "); // Write the complete formatted string to STDOUT if (joshuaConfiguration.n_best_file != null) - out.write(text.getBytes()); + nbest_out.write(text); // Extract just the translation and output that to STDOUT text = text.substring(0, text.indexOf('\n')); @@ -461,6 +467,9 @@ public class Decoder { } out.flush(); } + + if (joshuaConfiguration.n_best_file != null) + nbest_out.close(); } http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/98ad70a2/src/joshua/server/ServerThread.java ---------------------------------------------------------------------- diff --git a/src/joshua/server/ServerThread.java b/src/joshua/server/ServerThread.java index 2071344..253d80f 100644 --- a/src/joshua/server/ServerThread.java +++ b/src/joshua/server/ServerThread.java @@ -109,9 +109,6 @@ public class ServerThread extends Thread implements HttpHandler { public void handle(HttpExchange client) throws IOException { HashMap<String, String> params = queryToMap(URLDecoder.decode(client.getRequestURI().getQuery(), "UTF-8")); -// for (String key: params.keySet()) { -// System.err.println(String.format("%s = %s", key, params.get(key))); -// } String query = params.get("q"); BufferedReader reader = new BufferedReader(new StringReader(query)); http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/98ad70a2/test/decoder/moses-compat/n-best.txt ---------------------------------------------------------------------- diff --git a/test/decoder/moses-compat/n-best.txt b/test/decoder/moses-compat/n-best.txt new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/98ad70a2/test/decoder/moses-compat/output.expected ---------------------------------------------------------------------- diff --git a/test/decoder/moses-compat/output.expected b/test/decoder/moses-compat/output.expected new file mode 100644 index 0000000..5fb08bf --- /dev/null +++ b/test/decoder/moses-compat/output.expected @@ -0,0 +1,6 @@ +help +0 ||| help ||| tm_glue_0=1.000 ||| 0.000 +help + +# n-best stuff to follow: +0 ||| help ||| tm-glue-0= 1.000 ||| 0.000 http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/98ad70a2/test/decoder/moses-compat/test.sh ---------------------------------------------------------------------- diff --git a/test/decoder/moses-compat/test.sh b/test/decoder/moses-compat/test.sh new file mode 100755 index 0000000..dba9468 --- /dev/null +++ b/test/decoder/moses-compat/test.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -u + +rm -f output +# should write translation to stdout, output-format info to n-best.txt +echo help | joshua -v 0 -moses -n-best-list n-best1.txt 10 distinct > output +# should write output-format info to n-best.txt (since no -moses) +echo help | joshua -v 0 -n-best-list n-best2.txt 10 distinct >> output +# should write translation to stdout +echo help | joshua -v 0 -moses >> output + +echo >> output +echo "# n-best stuff to follow:" >> output +cat n-best1.txt n-best2.txt >> output + +# Compare +diff -u output output.expected > diff + +if [[ $? -eq 0 ]]; then + rm -f diff log output n-best1.txt n-best2.txt + exit 0 +else + exit 1 +fi
