You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@joshua.apache.org by to...@apache.org on 2016/09/26 12:05:04 UTC
[2/7] incubator-joshua git commit: static analysis based code
improvements on metrics package
static analysis based code improvements on metrics package
Project: http://git-wip-us.apache.org/repos/asf/incubator-joshua/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-joshua/commit/23ebc372
Tree: http://git-wip-us.apache.org/repos/asf/incubator-joshua/tree/23ebc372
Diff: http://git-wip-us.apache.org/repos/asf/incubator-joshua/diff/23ebc372
Branch: refs/heads/master
Commit: 23ebc3721f6b17c2ea3eb40202fa33646590caf6
Parents: 2d3911c
Author: Tommaso Teofili <to...@apache.org>
Authored: Mon Sep 26 13:49:40 2016 +0200
Committer: Tommaso Teofili <to...@apache.org>
Committed: Mon Sep 26 13:49:40 2016 +0200
----------------------------------------------------------------------
.../java/org/apache/joshua/metrics/BLEU.java | 27 ++++----
.../java/org/apache/joshua/metrics/CHRF.java | 37 +++++-----
.../apache/joshua/metrics/EvaluationMetric.java | 72 ++++++++++++--------
.../apache/joshua/metrics/GradeLevelBLEU.java | 24 +++----
.../java/org/apache/joshua/metrics/METEOR.java | 40 ++++++-----
.../joshua/metrics/MinimumChangeBLEU.java | 8 +--
.../java/org/apache/joshua/metrics/Precis.java | 8 +--
.../joshua/metrics/PrecisMinusSourceBLEU.java | 24 +++----
.../java/org/apache/joshua/metrics/SARI.java | 26 ++++---
.../org/apache/joshua/metrics/SourceBLEU.java | 4 +-
.../java/org/apache/joshua/metrics/TER.java | 32 +++++----
.../org/apache/joshua/metrics/TERMinusBLEU.java | 24 +++----
.../org/apache/joshua/metrics/TercomRunner.java | 10 +--
13 files changed, 170 insertions(+), 166 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/BLEU.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/BLEU.java b/src/main/java/org/apache/joshua/metrics/BLEU.java
index f1b50e7..f80faa1 100644
--- a/src/main/java/org/apache/joshua/metrics/BLEU.java
+++ b/src/main/java/org/apache/joshua/metrics/BLEU.java
@@ -55,13 +55,16 @@ public class BLEU extends EvaluationMetric {
throw new RuntimeException("Maximum gram length must be positive");
}
- if (methodStr.equals("closest")) {
+ switch (methodStr) {
+ case "closest":
setEffLengthMethod(EffectiveLengthMethod.CLOSEST);
- } else if (methodStr.equals("shortest")) {
+ break;
+ case "shortest":
setEffLengthMethod(EffectiveLengthMethod.SHORTEST);
// } else if (methodStr.equals("average")) {
// effLengthMethod = EffectiveLengthMethod.AVERAGE;
- } else {
+ break;
+ default:
LOG.error("Unknown effective length method string {}", methodStr);
// System.out.println("Should be one of closest, shortest, or average.");
LOG.error("Should be one of closest or shortest.");
@@ -109,8 +112,8 @@ public class BLEU extends EvaluationMetric {
HashMap<String, Integer>[] temp_HMA = new HashMap[numSentences];
maxNgramCounts = temp_HMA;
- String gram = "";
- int oldCount = 0, nextCount = 0;
+ String gram;
+ int oldCount, nextCount;
for (int i = 0; i < numSentences; ++i) {
maxNgramCounts[i] = getNgramCountsAll(refSentences[i][0]);
@@ -188,14 +191,12 @@ public class BLEU extends EvaluationMetric {
for (int n = 1; n <= getMaxGramLength(); ++n) {
int correctGramCount = 0;
- String gram = "";
- int candGramCount = 0, maxRefGramCount = 0, clippedCount = 0;
-
- Iterator<String> it = (candCountsArray[n].keySet()).iterator();
+ String gram;
+ int candGramCount, maxRefGramCount, clippedCount;
- while (it.hasNext()) {
+ for (String s : (candCountsArray[n].keySet())) {
// for each n-gram type in the candidate
- gram = it.next();
+ gram = s;
candGramCount = candCountsArray[n].get(gram);
// if (maxNgramCounts[i][n].containsKey(gram)) {
// maxRefGramCount = maxNgramCounts[i][n].get(gram);
@@ -411,7 +412,7 @@ public class BLEU extends EvaluationMetric {
HashMap<String, Integer>[] ngramCountsArray = new HashMap[1 + getMaxGramLength()];
ngramCountsArray[0] = null;
for (int n = 1; n <= getMaxGramLength(); ++n) {
- ngramCountsArray[n] = new HashMap<String, Integer>();
+ ngramCountsArray[n] = new HashMap<>();
}
int len = words.length;
@@ -481,7 +482,7 @@ public class BLEU extends EvaluationMetric {
}
public HashMap<String, Integer> getNgramCountsAll(String[] words) {
- HashMap<String, Integer> ngramCountsAll = new HashMap<String, Integer>();
+ HashMap<String, Integer> ngramCountsAll = new HashMap<>();
int len = words.length;
String gram;
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/CHRF.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/CHRF.java b/src/main/java/org/apache/joshua/metrics/CHRF.java
index dcf606a..c1a0cff 100644
--- a/src/main/java/org/apache/joshua/metrics/CHRF.java
+++ b/src/main/java/org/apache/joshua/metrics/CHRF.java
@@ -131,12 +131,12 @@ public class CHRF extends EvaluationMetric {
HashMap<String, Integer>[] grams = new HashMap[1 + maxGramLength];
grams[0] = null;
for (int n = 1; n <= maxGramLength; ++n) {
- grams[n] = new HashMap<String, Integer>();
+ grams[n] = new HashMap<>();
}
for (int n=1; n<=maxGramLength; n++){
- String gram = "";
+ String gram;
for (int i = 0; i < s.length() - n + 1; i++){
gram = s.substring(i, i+n);
if(grams[n].containsKey(gram)){
@@ -169,26 +169,23 @@ public class CHRF extends EvaluationMetric {
int[] to_return = {0,0};
String gram;
int cand_grams = 0;
- int candGramCount = 0, refGramCount = 0;
+ int candGramCount, refGramCount;
int errors = 0;
- Iterator<String> it = (cand.keySet()).iterator();
-
- while (it.hasNext()) {
- gram = it.next();
- candGramCount = cand.get(gram);
- cand_grams += candGramCount;
- if (ref.containsKey(gram)) {
- refGramCount = ref.get(gram);
- if(candGramCount>refGramCount){
- int error_here = candGramCount - refGramCount;
- errors += error_here;
- }
- } else {
- refGramCount = 0;
- errors += candGramCount;
- }
+ for (String s : (cand.keySet())) {
+ gram = s;
+ candGramCount = cand.get(gram);
+ cand_grams += candGramCount;
+ if (ref.containsKey(gram)) {
+ refGramCount = ref.get(gram);
+ if (candGramCount > refGramCount) {
+ int error_here = candGramCount - refGramCount;
+ errors += error_here;
}
+ } else {
+ errors += candGramCount;
+ }
+ }
//System.out.println(" Ngrams not found: " + not_found);
@@ -236,7 +233,7 @@ public class CHRF extends EvaluationMetric {
double[] recalls = new double[maxGramLength+1];
double[] fs = new double[maxGramLength+1];
//double[] scs = new double[maxGramLength+1];
- double totalF = 0, totalSC = 0;
+ double totalF = 0, totalSC;
double lp = 1;
if (stats.length != suffStatsCount) {
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/EvaluationMetric.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/EvaluationMetric.java b/src/main/java/org/apache/joshua/metrics/EvaluationMetric.java
index 9ac77f1..3067d10 100644
--- a/src/main/java/org/apache/joshua/metrics/EvaluationMetric.java
+++ b/src/main/java/org/apache/joshua/metrics/EvaluationMetric.java
@@ -53,7 +53,7 @@ public abstract class EvaluationMetric {
/* static (=> also non-abstract) methods */
public static void set_knownMetrics() {
- metricOptionCount = new TreeMap<String, Integer>();
+ metricOptionCount = new TreeMap<>();
metricOptionCount.put("BLEU", 2);
// the "BLEU" metric expects an options array of length 2
@@ -83,44 +83,64 @@ public abstract class EvaluationMetric {
public static EvaluationMetric getMetric(String metricName, String[] metricOptions) {
EvaluationMetric retMetric = null;
- if (metricName.equals("BLEU")) {
+ switch (metricName) {
+ case "BLEU":
retMetric = new BLEU(metricOptions); // the "BLEU" metric corresponds to the BLEU class
- } else if (metricName.equals("BLEU_SBP")) {
+
+ break;
+ case "BLEU_SBP":
retMetric = new BLEU_SBP(metricOptions); // the "BLEU_SBP" metric corresponds to the BLEU_SBP
- // class
- } else if (metricName.equals("01LOSS")) {
+
+ // class
+ break;
+ case "01LOSS":
retMetric = new ZeroOneLoss(metricOptions); // the "01LOSS" metric corresponds to the
- // ZeroOneLoss class
- } else if (metricName.equals("TER")) {
+
+ // ZeroOneLoss class
+ break;
+ case "TER":
retMetric = new TER(metricOptions); // the "TER" metric corresponds to the TER class
+
// } else if (metricName.equals("METEOR")) {
// retMetric = new METEOR(metricOptions); // the "METEOR" metric corresponds to the METEOR
// class
// } else if (metricName.equals("RYPT")) {
// retMetric = new RYPT(metricOptions); // the "RYPT" metric corresponds to the RYPT class
- } else if (metricName.equals("TER-BLEU")) {
+ break;
+ case "TER-BLEU":
retMetric = new TERMinusBLEU(metricOptions); // the "TER-BLEU" metric corresponds to the
- // TERMinusBLEU class
+
+ // TERMinusBLEU class
// } else if (metricName.equals("WER")) {
// retMetric = new WordErrorRate(metricOptions); // the "WER" metric corresponds to the
// WordErrorRate class
- } else if (metricName.equals("MC_BLEU")) {
+ break;
+ case "MC_BLEU":
retMetric = new MinimumChangeBLEU(metricOptions); // the "MC_BLEU" metric corresponds to the
- // ParaphraseBLEU class
- } else if (metricName.equals("PRECIS")) {
+
+ // ParaphraseBLEU class
+ break;
+ case "PRECIS":
retMetric = new Precis(metricOptions);
- } else if (metricName.equals("SRC_BLEU")) {
+ break;
+ case "SRC_BLEU":
retMetric = new SourceBLEU(metricOptions);
- } else if (metricName.equals("PRECIS-SRC_BLEU")) {
+ break;
+ case "PRECIS-SRC_BLEU":
retMetric = new PrecisMinusSourceBLEU(metricOptions);
- } else if (metricName.equals("GL_BLEU")) {
+ break;
+ case "GL_BLEU":
retMetric = new GradeLevelBLEU(metricOptions); // the "GL_BLEU" metric corresponds to the
- // GradeLevelBLEU class
- } else if (metricName.equals("SARI")) {
+
+ // GradeLevelBLEU class
+ break;
+ case "SARI":
retMetric = new SARI(metricOptions);
-
- } else if (metricName.equals("CHRF")) {
- retMetric = new CHRF(metricOptions);
+
+ break;
+ case "CHRF":
+ retMetric = new CHRF(metricOptions);
+ break;
}
return retMetric;
@@ -145,9 +165,7 @@ public abstract class EvaluationMetric {
public static void set_refSentences(String[][] refs) {
refSentences = new String[numSentences][refsPerSen];
for (int i = 0; i < numSentences; ++i) {
- for (int r = 0; r < refsPerSen; ++r) {
- refSentences[i][r] = refs[i][r];
- }
+ System.arraycopy(refs[i], 0, refSentences[i], 0, refsPerSen);
}
}
@@ -190,9 +208,7 @@ public abstract class EvaluationMetric {
int[][] SS = suffStats(SA, IA);
int[] stats = new int[suffStatsCount];
- for (int s = 0; s < suffStatsCount; ++s) {
- stats[s] = SS[0][s];
- }
+ System.arraycopy(SS[0], 0, stats, 0, suffStatsCount);
return score(stats);
}
@@ -241,9 +257,7 @@ public abstract class EvaluationMetric {
for (int d = 0; d < candCount; ++d) {
int[] currStats = suffStats(cand_strings[d], cand_indices[d]);
- for (int s = 0; s < suffStatsCount; ++s) {
- stats[d][s] = currStats[s];
- }
+ System.arraycopy(currStats, 0, stats[d], 0, suffStatsCount);
} // for (d)
return stats;
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/GradeLevelBLEU.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/GradeLevelBLEU.java b/src/main/java/org/apache/joshua/metrics/GradeLevelBLEU.java
index e143572..8bda9b8 100644
--- a/src/main/java/org/apache/joshua/metrics/GradeLevelBLEU.java
+++ b/src/main/java/org/apache/joshua/metrics/GradeLevelBLEU.java
@@ -36,13 +36,14 @@ public class GradeLevelBLEU extends BLEU {
private static final Pattern syllable = Pattern.compile("([^aeiouy]*[aeiouy]+)");
private static final Pattern silentE = Pattern.compile("[^aeiou]e$");
private static final int SOURCE = 0, CANDIDATE = 1, REFERENCE = 2;
- private int srcIndex = 1, sentCountIndex;
+ private final int srcIndex = 1;
+ private int sentCountIndex;
private SourceBLEU srcBLEU;
private double targetGL = 9.87; // tune.simp avg GL = 9.8704 (tune.en =
// 14.0785
private double alpha = 0.9;
private boolean useTarget = true;
- private boolean useBLEUplus = true;
+ private final boolean useBLEUplus = true;
public GradeLevelBLEU() {
super();
@@ -76,9 +77,7 @@ public class GradeLevelBLEU extends BLEU {
String line;
int i = 0;
while (i < numSentences && (line = br.readLine()) != null) {
- for (int r = 0; r < refsPerSen; ++r) {
- newRefSentences[i][r] = refSentences[i][r];
- }
+ System.arraycopy(refSentences[i], 0, newRefSentences[i], 0, refsPerSen);
newRefSentences[i][refsPerSen] = line.trim();
i++;
}
@@ -98,7 +97,7 @@ public class GradeLevelBLEU extends BLEU {
public int[] suffStats(String cand_str, int i) {
int[] stats = new int[suffStatsCount];
- String[] candidate_tokens = null;
+ String[] candidate_tokens;
if (!cand_str.equals("")) {
candidate_tokens = cand_str.split("\\s+");
@@ -113,9 +112,8 @@ public class GradeLevelBLEU extends BLEU {
// set source BLEU stats
if (useBLEUplus) {
int[] src_prec_suffStats = srcBLEU.suffStats(cand_str, i);
- for (int j = 0; j < src_prec_suffStats.length; j++) {
- stats[2 * getMaxGramLength() + j] = src_prec_suffStats[j];
- }
+ System.arraycopy(src_prec_suffStats, 0, stats, 2 * getMaxGramLength() + 0,
+ src_prec_suffStats.length);
}
// now set the readability stats
@@ -194,7 +192,7 @@ public class GradeLevelBLEU extends BLEU {
double candGL =
gradeLevel(stats[tokenLength(CANDIDATE)], stats[syllableLength(CANDIDATE)],
stats[sentCountIndex]);
- double readabilityPenalty = 1;
+ double readabilityPenalty;
if (useTarget) {
readabilityPenalty = getReadabilityPenalty(candGL, targetGL);
@@ -207,9 +205,7 @@ public class GradeLevelBLEU extends BLEU {
if (useBLEUplus) {
int[] srcStats = new int[2 * getMaxGramLength()];
- for (int i = 0; i < 2 * getMaxGramLength(); i++) {
- srcStats[i] = stats[2 * getMaxGramLength() + i];
- }
+ System.arraycopy(stats, 2 * getMaxGramLength(), srcStats, 0, 2 * getMaxGramLength());
srcStats[2 * getMaxGramLength()] = stats[tokenLength(CANDIDATE)];
srcStats[2 * getMaxGramLength()] = stats[tokenLength(SOURCE)];
double srcBLEUscore = srcBLEU.score(stats);
@@ -246,7 +242,7 @@ public class GradeLevelBLEU extends BLEU {
double ref_gl =
gradeLevel(stats[tokenLength(REFERENCE)], stats[syllableLength(REFERENCE)],
stats[sentCountIndex]);
- double penalty = 1;
+ double penalty;
double bleu_ref = super.score(stats);
double bleu_src = srcBLEU.score(stats);
double bleu_plus = BLEU_plus(bleu_ref, bleu_src);
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/METEOR.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/METEOR.java b/src/main/java/org/apache/joshua/metrics/METEOR.java
index 33232db..370e707 100644
--- a/src/main/java/org/apache/joshua/metrics/METEOR.java
+++ b/src/main/java/org/apache/joshua/metrics/METEOR.java
@@ -31,7 +31,6 @@ public class METEOR extends EvaluationMetric {
protected String targetLanguage;
protected boolean normalize;
protected boolean keepPunctuation;
- private int maxComputations;
public METEOR(String[] Metric_options) {
// M_o[0]: -l language, one of {en,cz,fr,de,es}
@@ -41,27 +40,36 @@ public class METEOR extends EvaluationMetric {
// default in meteor v0.8: en, norm_no, removePunc
- if (Metric_options[0].equals("en")) {
+ switch (Metric_options[0]) {
+ case "en":
targetLanguage = "en";
- } else if (Metric_options[0].equals("cz")) {
+ break;
+ case "cz":
targetLanguage = "cz";
- } else if (Metric_options[0].equals("fr")) {
+ break;
+ case "fr":
targetLanguage = "fr";
- } else if (Metric_options[0].equals("de")) {
+ break;
+ case "de":
targetLanguage = "de";
- } else if (Metric_options[0].equals("es")) {
+ break;
+ case "es":
targetLanguage = "es";
- } else {
- String msg = "Unknown language string " + Metric_options[0]
- + ". Should be one of {en,cz,fr,de,es}.";
+ break;
+ default:
+ String msg =
+ "Unknown language string " + Metric_options[0] + ". Should be one of {en,cz,fr,de,es}.";
throw new RuntimeException(msg);
}
- if (Metric_options[1].equals("norm_yes")) {
+ switch (Metric_options[1]) {
+ case "norm_yes":
normalize = true;
- } else if (Metric_options[1].equals("norm_no")) {
+ break;
+ case "norm_no":
normalize = false;
- } else {
+ break;
+ default:
String msg = "Unknown normalize string " + Metric_options[1]
+ ". Should be one of norm_yes or norm_no.";
throw new RuntimeException(msg);
@@ -77,7 +85,7 @@ public class METEOR extends EvaluationMetric {
throw new RuntimeException(msg);
}
- maxComputations = Integer.parseInt(Metric_options[3]);
+ int maxComputations = Integer.parseInt(Metric_options[3]);
if (maxComputations < 1) {
throw new RuntimeException("Maximum computations must be positive");
}
@@ -127,8 +135,8 @@ public class METEOR extends EvaluationMetric {
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "utf8");
BufferedWriter outFile = new BufferedWriter(outStreamWriter);
- for (int d = 0; d < candCount; ++d) {
- writeLine(cand_strings[d], outFile);
+ for (String cand_string : cand_strings) {
+ writeLine(cand_string, outFile);
}
outFile.close();
@@ -175,7 +183,7 @@ public class METEOR extends EvaluationMetric {
// 3) Read SS from output file produced by meteor
BufferedReader inFile = new BufferedReader(new FileReader("TER_out.ter"));
- String line = "";
+ String line;
line = inFile.readLine(); // skip hyp line
line = inFile.readLine(); // skip ref line
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/MinimumChangeBLEU.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/MinimumChangeBLEU.java b/src/main/java/org/apache/joshua/metrics/MinimumChangeBLEU.java
index 6d19ba5..16444a7 100644
--- a/src/main/java/org/apache/joshua/metrics/MinimumChangeBLEU.java
+++ b/src/main/java/org/apache/joshua/metrics/MinimumChangeBLEU.java
@@ -31,8 +31,8 @@ public class MinimumChangeBLEU extends BLEU {
// we assume that the source for the paraphrasing run is
// part of the set of references
- private int sourceReferenceIndex;
- private double thresholdWER;
+ private final int sourceReferenceIndex;
+ private final double thresholdWER;
public MinimumChangeBLEU() {
@@ -67,8 +67,8 @@ public class MinimumChangeBLEU extends BLEU {
HashMap<String, Integer>[] temp_HMA = new HashMap[numSentences];
maxNgramCounts = temp_HMA;
- String gram = "";
- int oldCount = 0, nextCount = 0;
+ String gram;
+ int oldCount, nextCount;
for (int i = 0; i < numSentences; ++i) {
// update counts as necessary from the reference translations
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/Precis.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/Precis.java b/src/main/java/org/apache/joshua/metrics/Precis.java
index b2d852b..c620d7d 100644
--- a/src/main/java/org/apache/joshua/metrics/Precis.java
+++ b/src/main/java/org/apache/joshua/metrics/Precis.java
@@ -34,12 +34,12 @@ public class Precis extends BLEU {
// We assume that the source for the paraphrasing run is
// part of the set of references, this is its index.
- private int sourceReferenceIndex;
+ private final int sourceReferenceIndex;
// A global target compression rate to achieve
// if negative, we default to locally aiming for the compression
// rate given by the (closest) reference compression?
- private double targetCompressionRate;
+ private final double targetCompressionRate;
// Are we optimizing for character-based compression (as opposed
// to token-based)?
@@ -112,8 +112,8 @@ public class Precis extends BLEU {
HashMap<String, Integer>[] temp_HMA = new HashMap[numSentences];
maxNgramCounts = temp_HMA;
- String gram = "";
- int oldCount = 0, nextCount = 0;
+ String gram;
+ int oldCount, nextCount;
for (int i = 0; i < numSentences; ++i) {
// update counts as necessary from the reference translations
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/PrecisMinusSourceBLEU.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/PrecisMinusSourceBLEU.java b/src/main/java/org/apache/joshua/metrics/PrecisMinusSourceBLEU.java
index bfe15d0..4827fc9 100644
--- a/src/main/java/org/apache/joshua/metrics/PrecisMinusSourceBLEU.java
+++ b/src/main/java/org/apache/joshua/metrics/PrecisMinusSourceBLEU.java
@@ -27,10 +27,10 @@ import java.io.PrintWriter;
public class PrecisMinusSourceBLEU extends EvaluationMetric {
- private Precis myPrecis;
- private SourceBLEU mySourceBLEU;
+ private final Precis myPrecis;
+ private final SourceBLEU mySourceBLEU;
- private double bleuWeight;
+ private final double bleuWeight;
private int precisCount;
private int sourceBleuCount;
@@ -142,16 +142,12 @@ public class PrecisMinusSourceBLEU extends EvaluationMetric {
+ " vs. " + suffStatsCount + ") in PrecisMinusSourceBLEU.score(int[])");
}
- double sc = 0.0;
+ double sc;
int[] stats_Precis = new int[precisCount];
int[] stats_SourceBLEU = new int[sourceBleuCount];
- for (int s = 0; s < precisCount; ++s) {
- stats_Precis[s] = stats[s];
- }
- for (int s = 0; s < sourceBleuCount; ++s) {
- stats_SourceBLEU[s] = stats[s + precisCount];
- }
+ System.arraycopy(stats, 0, stats_Precis, 0, precisCount);
+ System.arraycopy(stats, 0 + precisCount, stats_SourceBLEU, 0, sourceBleuCount);
double sc_T = myPrecis.score(stats_Precis);
double sc_B = mySourceBLEU.score(stats_SourceBLEU);
@@ -164,12 +160,8 @@ public class PrecisMinusSourceBLEU extends EvaluationMetric {
public void printDetailedScore_fromStats(int[] stats, boolean oneLiner) {
int[] stats_Precis = new int[precisCount];
int[] stats_SourceBLEU = new int[sourceBleuCount];
- for (int s = 0; s < precisCount; ++s) {
- stats_Precis[s] = stats[s];
- }
- for (int s = 0; s < sourceBleuCount; ++s) {
- stats_SourceBLEU[s] = stats[s + precisCount];
- }
+ System.arraycopy(stats, 0, stats_Precis, 0, precisCount);
+ System.arraycopy(stats, 0 + precisCount, stats_SourceBLEU, 0, sourceBleuCount);
System.out.println("---PRECIS---");
myPrecis.printDetailedScore_fromStats(stats_Precis, oneLiner);
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/SARI.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/SARI.java b/src/main/java/org/apache/joshua/metrics/SARI.java
index 9ee3af3..990690b 100644
--- a/src/main/java/org/apache/joshua/metrics/SARI.java
+++ b/src/main/java/org/apache/joshua/metrics/SARI.java
@@ -119,8 +119,8 @@ public class SARI extends EvaluationMetric {
HashMap<String, Integer>[][] temp_HMA = new HashMap[numSentences][maxGramLength];
refNgramCounts = temp_HMA;
- String gram = "";
- int oldCount = 0, nextCount = 0;
+ String gram;
+ int oldCount, nextCount;
for (int i = 0; i < numSentences; ++i) {
refNgramCounts[i] = getNgramCountsArray(refSentences[i][0]);
@@ -133,10 +133,8 @@ public class SARI extends EvaluationMetric {
for (int n = 1; n <= maxGramLength; ++n) {
- Iterator<String> it = (nextNgramCounts[n].keySet()).iterator();
-
- while (it.hasNext()) {
- gram = it.next();
+ for (String s : (nextNgramCounts[n].keySet())) {
+ gram = s;
nextCount = nextNgramCounts[n].get(gram);
if (refNgramCounts[i][n].containsKey(gram)) { // update if necessary
@@ -378,7 +376,7 @@ public class SARI extends EvaluationMetric {
public HashMap<String, Integer> substractHashMap(HashMap<String, Integer> counter1,
HashMap<String, Integer> counter2) {
- HashMap<String, Integer> newcounter = new HashMap<String, Integer>();
+ HashMap<String, Integer> newcounter = new HashMap<>();
for (Map.Entry<String, Integer> e : counter1.entrySet()) {
String ngram = e.getKey();
@@ -394,7 +392,7 @@ public class SARI extends EvaluationMetric {
// HashMap result = counter1*ratio1 - counter2*ratio2
public HashMap<String, Integer> substractHashMap(HashMap<String, Integer> counter1,
HashMap<String, Integer> counter2, int ratio1, int ratio2) {
- HashMap<String, Integer> newcounter = new HashMap<String, Integer>();
+ HashMap<String, Integer> newcounter = new HashMap<>();
for (Map.Entry<String, Integer> e : counter1.entrySet()) {
String ngram = e.getKey();
@@ -411,7 +409,7 @@ public class SARI extends EvaluationMetric {
public HashMap<String, Double> divideHashMap(HashMap<String, Integer> counter1,
HashMap<String, Integer> counter2) {
- HashMap<String, Double> newcounter = new HashMap<String, Double>();
+ HashMap<String, Double> newcounter = new HashMap<>();
for (Map.Entry<String, Integer> e : counter1.entrySet()) {
String ngram = e.getKey();
@@ -427,7 +425,7 @@ public class SARI extends EvaluationMetric {
public HashMap<String, Integer> intersectHashMap(HashMap<String, Integer> counter1,
HashMap<String, Integer> counter2) {
- HashMap<String, Integer> newcounter = new HashMap<String, Integer>();
+ HashMap<String, Integer> newcounter = new HashMap<>();
for (Map.Entry<String, Integer> e : counter1.entrySet()) {
String ngram = e.getKey();
@@ -443,7 +441,7 @@ public class SARI extends EvaluationMetric {
// HashMap result = (counter1*ratio1) & (counter2*ratio2)
public HashMap<String, Integer> intersectHashMap(HashMap<String, Integer> counter1,
HashMap<String, Integer> counter2, int ratio1, int ratio2) {
- HashMap<String, Integer> newcounter = new HashMap<String, Integer>();
+ HashMap<String, Integer> newcounter = new HashMap<>();
for (Map.Entry<String, Integer> e : counter1.entrySet()) {
String ngram = e.getKey();
@@ -479,7 +477,7 @@ public class SARI extends EvaluationMetric {
HashMap<String, Integer>[] ngramCountsArray = new HashMap[1 + maxGramLength];
ngramCountsArray[0] = null;
for (int n = 1; n <= maxGramLength; ++n) {
- ngramCountsArray[n] = new HashMap<String, Integer>();
+ ngramCountsArray[n] = new HashMap<>();
}
int len = words.length;
@@ -549,7 +547,7 @@ public class SARI extends EvaluationMetric {
}
public HashMap<String, Integer> getNgramCountsAll(String[] words) {
- HashMap<String, Integer> ngramCountsAll = new HashMap<String, Integer>();
+ HashMap<String, Integer> ngramCountsAll = new HashMap<>();
int len = words.length;
String gram;
@@ -625,6 +623,6 @@ public class SARI extends EvaluationMetric {
private enum StatIndex {
KEEPBOTH, KEEPCAND, KEEPREF, DELBOTH, DELCAND, DELREF, ADDBOTH, ADDCAND, ADDREF, KEEPBOTH2
- };
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/SourceBLEU.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/SourceBLEU.java b/src/main/java/org/apache/joshua/metrics/SourceBLEU.java
index f594954..d9c5b3b 100644
--- a/src/main/java/org/apache/joshua/metrics/SourceBLEU.java
+++ b/src/main/java/org/apache/joshua/metrics/SourceBLEU.java
@@ -23,10 +23,10 @@ import java.util.HashMap;
public class SourceBLEU extends BLEU {
// We assume that the source for the paraphrasing run is
// part of the set of references
- private int sourceReferenceIndex;
+ private final int sourceReferenceIndex;
private int[] sourceWordCount;
- private boolean useBrevityPenalty;
+ private final boolean useBrevityPenalty;
public SourceBLEU() {
super();
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/TER.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/TER.java b/src/main/java/org/apache/joshua/metrics/TER.java
index 0dcf9d9..1cd2a00 100644
--- a/src/main/java/org/apache/joshua/metrics/TER.java
+++ b/src/main/java/org/apache/joshua/metrics/TER.java
@@ -52,21 +52,27 @@ public class TER extends EvaluationMetric {
// for 0-3, default values in tercom-0.7.25 are: nocase, punc, 20, 50
- if (Metric_options[0].equals("case")) {
+ switch (Metric_options[0]) {
+ case "case":
caseSensitive = true;
- } else if (Metric_options[0].equals("nocase")) {
+ break;
+ case "nocase":
caseSensitive = false;
- } else {
+ break;
+ default:
String msg = "Unknown case sensitivity string " + Metric_options[0]
+ ". Should be one of case or nocase.";
throw new RuntimeException(msg);
}
- if (Metric_options[1].equals("punc")) {
+ switch (Metric_options[1]) {
+ case "punc":
withPunctuation = true;
- } else if (Metric_options[1].equals("nopunc")) {
+ break;
+ case "nopunc":
withPunctuation = false;
- } else {
+ break;
+ default:
String msg = "Unknown with-punctuation string " + Metric_options[1]
+ ". Should be one of punc or nopunc.";
throw new RuntimeException(msg);
@@ -119,7 +125,7 @@ public class TER extends EvaluationMetric {
}
public double worstPossibleScore() {
- return (+1.0 / 0.0);
+ return Double.POSITIVE_INFINITY;
}
public int[] suffStats(String cand_str, int i) {
@@ -176,7 +182,7 @@ public class TER extends EvaluationMetric {
// 3) Read SS from output file produced by tercom.7.25.jar
BufferedReader inFile = new BufferedReader(new FileReader("TER_out.ter"));
- String line = "";
+ String line;
line = inFile.readLine(); // skip hyp line
line = inFile.readLine(); // skip ref line
@@ -283,7 +289,7 @@ public class TER extends EvaluationMetric {
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "utf8");
BufferedWriter outFile = new BufferedWriter(outStreamWriter);
- String line_cand = "";
+ String line_cand;
if (numCands > 0) {
for (int d = 0; d < numCands; ++d) {
@@ -326,7 +332,7 @@ public class TER extends EvaluationMetric {
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "utf8");
BufferedWriter outFile = new BufferedWriter(outStreamWriter);
- String line_index = "";
+ String line_index;
if (numIndices > 0) {
for (int d = 0; d < numIndices; ++d) {
@@ -366,7 +372,7 @@ public class TER extends EvaluationMetric {
}
public int runTercom(String refFileName, String hypFileName, String outFileNamePrefix, int memSize) {
- int exitValue = -1;
+ int exitValue;
try {
@@ -408,7 +414,7 @@ public class TER extends EvaluationMetric {
public void copySS(String inputFileName, PrintWriter outFile) {
try {
BufferedReader inFile = new BufferedReader(new FileReader(inputFileName));
- String line = "";
+ String line;
line = inFile.readLine(); // skip hyp line
line = inFile.readLine(); // skip ref line
@@ -434,7 +440,7 @@ public class TER extends EvaluationMetric {
+ " vs. " + suffStatsCount + ") in TER.score(int[])");
}
- double sc = 0.0;
+ double sc;
sc = stats[0] / (double) stats[1];
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/TERMinusBLEU.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/TERMinusBLEU.java b/src/main/java/org/apache/joshua/metrics/TERMinusBLEU.java
index bd40140..fe38913 100644
--- a/src/main/java/org/apache/joshua/metrics/TERMinusBLEU.java
+++ b/src/main/java/org/apache/joshua/metrics/TERMinusBLEU.java
@@ -27,8 +27,8 @@ import java.io.PrintWriter;
public class TERMinusBLEU extends EvaluationMetric {
// individual components
- private TER myTER;
- private BLEU myBLEU;
+ private final TER myTER;
+ private final BLEU myBLEU;
private int suffStatsCount_TER;
private int suffStatsCount_BLEU;
@@ -63,7 +63,7 @@ public class TERMinusBLEU extends EvaluationMetric {
}
public double worstPossibleScore() {
- return (+1.0 / 0.0);
+ return Double.POSITIVE_INFINITY;
}
public int[] suffStats(String cand_str, int i) {
@@ -154,16 +154,12 @@ public class TERMinusBLEU extends EvaluationMetric {
+ " vs. " + suffStatsCount + ") in TERMinusBLEU.score(int[])");
}
- double sc = 0.0;
+ double sc;
int[] stats_TER = new int[suffStatsCount_TER];
int[] stats_BLEU = new int[suffStatsCount_BLEU];
- for (int s = 0; s < suffStatsCount_TER; ++s) {
- stats_TER[s] = stats[s];
- }
- for (int s = 0; s < suffStatsCount_BLEU; ++s) {
- stats_BLEU[s] = stats[s + suffStatsCount_TER];
- }
+ System.arraycopy(stats, 0, stats_TER, 0, suffStatsCount_TER);
+ System.arraycopy(stats, 0 + suffStatsCount_TER, stats_BLEU, 0, suffStatsCount_BLEU);
double sc_T = myTER.score(stats_TER);
double sc_B = myBLEU.score(stats_BLEU);
@@ -176,12 +172,8 @@ public class TERMinusBLEU extends EvaluationMetric {
public void printDetailedScore_fromStats(int[] stats, boolean oneLiner) {
int[] stats_TER = new int[suffStatsCount_TER];
int[] stats_BLEU = new int[suffStatsCount_BLEU];
- for (int s = 0; s < suffStatsCount_TER; ++s) {
- stats_TER[s] = stats[s];
- }
- for (int s = 0; s < suffStatsCount_BLEU; ++s) {
- stats_BLEU[s] = stats[s + suffStatsCount_TER];
- }
+ System.arraycopy(stats, 0, stats_TER, 0, suffStatsCount_TER);
+ System.arraycopy(stats, 0 + suffStatsCount_TER, stats_BLEU, 0, suffStatsCount_BLEU);
System.out.println("---TER---");
myTER.printDetailedScore_fromStats(stats_TER, oneLiner);
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/23ebc372/src/main/java/org/apache/joshua/metrics/TercomRunner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/metrics/TercomRunner.java b/src/main/java/org/apache/joshua/metrics/TercomRunner.java
index d7eeae5..6c78eb2 100644
--- a/src/main/java/org/apache/joshua/metrics/TercomRunner.java
+++ b/src/main/java/org/apache/joshua/metrics/TercomRunner.java
@@ -27,12 +27,12 @@ import org.apache.joshua.util.StreamGobbler;
public class TercomRunner implements Runnable {
/* non-static data members */
- private Semaphore blocker;
+ private final Semaphore blocker;
- private String refFileName;
- private String hypFileName;
- private String outFileNamePrefix;
- private int memSize;
+ private final String refFileName;
+ private final String hypFileName;
+ private final String outFileNamePrefix;
+ private final int memSize;
/* static data members */
private static boolean caseSensitive;