You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@joshua.apache.org by mj...@apache.org on 2016/08/21 17:42:25 UTC
[16/22] incubator-joshua git commit: JOSHUA-291 - static analysis
based code improvements on decoder package
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/hypergraph/OutputStringExtractor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/hypergraph/OutputStringExtractor.java b/src/main/java/org/apache/joshua/decoder/hypergraph/OutputStringExtractor.java
index f20e063..77b76a4 100644
--- a/src/main/java/org/apache/joshua/decoder/hypergraph/OutputStringExtractor.java
+++ b/src/main/java/org/apache/joshua/decoder/hypergraph/OutputStringExtractor.java
@@ -34,7 +34,7 @@ public class OutputStringExtractor implements WalkerFunction, DerivationVisitor
this.extractSource = extractSource;
}
- private Stack<OutputString> outputStringStack = new Stack<>();
+ private final Stack<OutputString> outputStringStack = new Stack<>();
private final boolean extractSource;
@Override
@@ -103,7 +103,7 @@ public class OutputStringExtractor implements WalkerFunction, DerivationVisitor
private static String arrayToString(int[] ids) {
StringBuilder sb = new StringBuilder();
for (int i : ids) {
- sb.append(i + " ");
+ sb.append(i).append(" ");
}
return sb.toString().trim();
}
@@ -180,8 +180,8 @@ public class OutputStringExtractor implements WalkerFunction, DerivationVisitor
for (int i = 0; i < position; i++) {
result[resultIndex++] = this.words[i];
}
- for (int i = 0; i < words.length; i++) {
- result[resultIndex++] = words[i];
+ for (int word : words) {
+ result[resultIndex++] = word;
}
for (int i = position + 1; i < this.words.length; i++) {
result[resultIndex++] = this.words[i];
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/hypergraph/StringToTreeConverter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/hypergraph/StringToTreeConverter.java b/src/main/java/org/apache/joshua/decoder/hypergraph/StringToTreeConverter.java
index f393a01..d71cba6 100644
--- a/src/main/java/org/apache/joshua/decoder/hypergraph/StringToTreeConverter.java
+++ b/src/main/java/org/apache/joshua/decoder/hypergraph/StringToTreeConverter.java
@@ -32,16 +32,18 @@ public class StringToTreeConverter {
HyperGraph tree = null;
- Stack<String> stack = new Stack<String>();
+ Stack<String> stack = new Stack<>();
for (int i = 0; i < inputStr.length(); i++) {
char curChar = inputStr.charAt(i);
if (curChar == ')' && inputStr.charAt(i - 1) != ' ') {// end of a rule
StringBuffer ruleString = new StringBuffer();
+ label:
while (stack.empty() == false) {
String cur = stack.pop();
- if (cur.equals(beginSymbol)) {// stop
+ switch (cur) {
+ case beginSymbol: // stop
// setup a node
// HGNode(int i, int j, int lhs, HashMap<Integer,DPState> dpStates, HyperEdge
// initHyperedge, double estTotalLogP)
@@ -50,13 +52,15 @@ public class StringToTreeConverter {
// public Rule(int lhs, int[] sourceRhs, int[] targetRhs, float[]
// featureScores, int arity, int owner, float latticeCost, int ruleID)
-
stack.add(nodeSymbol);// TODO: should be lHS+id
- break;
- } else if (cur.equals(nodeSymbol)) {
- } else {
+ break label;
+ case nodeSymbol:
+
+ break;
+ default:
ruleString.append(cur);
+ break;
}
}
} else if (curChar == '(' && inputStr.charAt(i + 1) != ' ') {// begin of a rule
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/hypergraph/ViterbiExtractor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/hypergraph/ViterbiExtractor.java b/src/main/java/org/apache/joshua/decoder/hypergraph/ViterbiExtractor.java
index 734e0aa..51ae3c8 100644
--- a/src/main/java/org/apache/joshua/decoder/hypergraph/ViterbiExtractor.java
+++ b/src/main/java/org/apache/joshua/decoder/hypergraph/ViterbiExtractor.java
@@ -157,7 +157,7 @@ public class ViterbiExtractor {
// TODO: tbl_states
private static HGNode cloneNodeWithBestHyperedge(HGNode inNode) {
- List<HyperEdge> hyperedges = new ArrayList<HyperEdge>(1);
+ List<HyperEdge> hyperedges = new ArrayList<>(1);
HyperEdge cloneEdge = cloneHyperedge(inNode.bestHyperedge);
hyperedges.add(cloneEdge);
return new HGNode(inNode.i, inNode.j, inNode.lhs, hyperedges, cloneEdge, inNode.getDPStates());
@@ -167,12 +167,10 @@ public class ViterbiExtractor {
private static HyperEdge cloneHyperedge(HyperEdge inEdge) {
List<HGNode> antNodes = null;
if (null != inEdge.getTailNodes()) {
- antNodes = new ArrayList<HGNode>(inEdge.getTailNodes());// l_ant_items will be changed in
+ antNodes = new ArrayList<>(inEdge.getTailNodes());// l_ant_items will be changed in
// get_1best_tree_item
}
- HyperEdge res =
- new HyperEdge(inEdge.getRule(), inEdge.getBestDerivationScore(), inEdge.getTransitionLogP(false),
- antNodes, inEdge.getSourcePath());
- return res;
+ return new HyperEdge(inEdge.getRule(), inEdge.getBestDerivationScore(), inEdge.getTransitionLogP(false),
+ antNodes, inEdge.getSourcePath());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentExtractor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentExtractor.java b/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentExtractor.java
index 04d0897..c949699 100644
--- a/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentExtractor.java
+++ b/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentExtractor.java
@@ -38,7 +38,7 @@ import org.apache.joshua.decoder.hypergraph.KBestExtractor.DerivationVisitor;
*/
public class WordAlignmentExtractor implements WalkerFunction, DerivationVisitor {
- private final Stack<WordAlignmentState> stack = new Stack<WordAlignmentState>();
+ private final Stack<WordAlignmentState> stack = new Stack<>();
/**
* Merges a state with the top of the stack if applicable or places it on top of the stack.
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentState.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentState.java b/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentState.java
index f057f23..aef4665 100644
--- a/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentState.java
+++ b/src/main/java/org/apache/joshua/decoder/hypergraph/WordAlignmentState.java
@@ -42,7 +42,7 @@ public class WordAlignmentState {
* rule. The values of the elements correspond to the aligned source token on
* the source side of the rule.
*/
- private List<AlignedSourceTokens> trgPoints;
+ private final List<AlignedSourceTokens> trgPoints;
private final int srcStart;
/** number of NTs we need to substitute. */
private int numNT;
@@ -57,7 +57,7 @@ public class WordAlignmentState {
* @param start the start index
*/
public WordAlignmentState(final Rule rule, final int start) {
- trgPoints = new LinkedList<AlignedSourceTokens>();
+ trgPoints = new LinkedList<>();
srcLength = rule.getFrench().length;
numNT = rule.getArity();
srcStart = start;
@@ -123,7 +123,7 @@ public class WordAlignmentState {
* @return a final alignment list
*/
public List<List<Integer>> toFinalList() {
- final List<List<Integer>> alignment = new ArrayList<List<Integer>>(trgPoints.size());
+ final List<List<Integer>> alignment = new ArrayList<>(trgPoints.size());
if (trgPoints.isEmpty()) {
return alignment;
}
@@ -132,7 +132,7 @@ public class WordAlignmentState {
while (it.hasNext()) {
final AlignedSourceTokens alignedSourceTokens = it.next();
if (it.hasNext()) { // if not last element in trgPoints
- final List<Integer> newAlignedSourceTokens = new ArrayList<Integer>();
+ final List<Integer> newAlignedSourceTokens = new ArrayList<>();
for (Integer sourceIndex : alignedSourceTokens) {
newAlignedSourceTokens.add(sourceIndex - 1); // shift by one to disregard sentence marker
}
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/io/JSONMessage.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/io/JSONMessage.java b/src/main/java/org/apache/joshua/decoder/io/JSONMessage.java
index 5056aaa..36415fe 100644
--- a/src/main/java/org/apache/joshua/decoder/io/JSONMessage.java
+++ b/src/main/java/org/apache/joshua/decoder/io/JSONMessage.java
@@ -51,14 +51,14 @@ public class JSONMessage {
public Data data = null;
public List<String> metadata = null;
public JSONMessage() {
- metadata = new ArrayList<String>();
+ metadata = new ArrayList<>();
}
public class Data {
- public List<TranslationItem> translations;
+ public final List<TranslationItem> translations;
public Data() {
- translations = new ArrayList<TranslationItem>();
+ translations = new ArrayList<>();
}
}
//
@@ -119,12 +119,12 @@ public class JSONMessage {
}
public class TranslationItem {
- public String translatedText;
- public List<NBestItem> raw_nbest;
+ public final String translatedText;
+ public final List<NBestItem> raw_nbest;
public TranslationItem(String value) {
this.translatedText = value;
- this.raw_nbest = new ArrayList<NBestItem>();
+ this.raw_nbest = new ArrayList<>();
}
/**
@@ -139,8 +139,8 @@ public class JSONMessage {
}
public class NBestItem {
- public String hyp;
- public float totalScore;
+ public final String hyp;
+ public final float totalScore;
public NBestItem(String hyp, float score) {
this.hyp = hyp;
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/io/TranslationRequestStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/io/TranslationRequestStream.java b/src/main/java/org/apache/joshua/decoder/io/TranslationRequestStream.java
index 0287688..afb63ab 100644
--- a/src/main/java/org/apache/joshua/decoder/io/TranslationRequestStream.java
+++ b/src/main/java/org/apache/joshua/decoder/io/TranslationRequestStream.java
@@ -51,9 +51,7 @@ public class TranslationRequestStream {
private final JoshuaConfiguration joshuaConfiguration;
private int sentenceNo = -1;
- private Sentence nextSentence = null;
-
- /* Plain text or JSON input */
+ /* Plain text or JSON input */
private StreamHandler requestHandler = null;
/* Whether the request has been killed by a broken client connection. */
@@ -139,7 +137,7 @@ public class TranslationRequestStream {
* new one.
*/
public synchronized Sentence next() {
- nextSentence = null;
+ Sentence nextSentence = null;
if (isShutDown)
return null;
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/Candidate.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/Candidate.java b/src/main/java/org/apache/joshua/decoder/phrase/Candidate.java
index ee8a2a9..93e21cd 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/Candidate.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/Candidate.java
@@ -37,19 +37,19 @@ import org.apache.joshua.decoder.hypergraph.HGNode;
public class Candidate {
// the set of hypotheses that can be paired with phrases from this span
- private List<Hypothesis> hypotheses;
+ private final List<Hypothesis> hypotheses;
// the list of target phrases gathered from a span of the input
- private TargetPhrases phrases;
+ private final TargetPhrases phrases;
// source span of new phrase
- public Span span;
+ public final Span span;
// future cost of applying phrases to hypotheses
- float future_delta;
+ final float future_delta;
// indices into the hypotheses and phrases arrays (used for cube pruning)
- private int[] ranks;
+ private final int[] ranks;
// scoring and state information
private ComputeNodeResult result;
@@ -186,7 +186,7 @@ public class Candidate {
* @return a list of size one, wrapping the tail node pointer
*/
public List<HGNode> getTailNodes() {
- List<HGNode> tailNodes = new ArrayList<HGNode>();
+ List<HGNode> tailNodes = new ArrayList<>();
tailNodes.add(getHypothesis());
return tailNodes;
}
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/Coverage.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/Coverage.java b/src/main/java/org/apache/joshua/decoder/phrase/Coverage.java
index 2c674fc..4ef0ede 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/Coverage.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/Coverage.java
@@ -39,7 +39,7 @@ public class Coverage {
private BitSet bits;
// Default bit vector length
- private static int INITIAL_LENGTH = 10;
+ private static final int INITIAL_LENGTH = 10;
public Coverage() {
firstZero = 0;
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/Future.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/Future.java b/src/main/java/org/apache/joshua/decoder/phrase/Future.java
index 0ece4a3..83baf9c 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/Future.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/Future.java
@@ -27,9 +27,9 @@ public class Future {
private static final Logger LOG = LoggerFactory.getLogger(Future.class);
// Square matrix with half the values ignored.
- private ChartSpan<Float> entries;
+ private final ChartSpan<Float> entries;
- private int sentlen;
+ private final int sentlen;
/**
* Computes bottom-up the best way to cover all spans of the input sentence, using the phrases
@@ -42,7 +42,7 @@ public class Future {
public Future(PhraseChart chart) {
sentlen = chart.SentenceLength();
- entries = new ChartSpan<Float>(sentlen + 1, Float.NEGATIVE_INFINITY);
+ entries = new ChartSpan<>(sentlen + 1, Float.NEGATIVE_INFINITY);
/*
* The sentence is represented as a sequence of words, with the first and last words set
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/Header.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/Header.java b/src/main/java/org/apache/joshua/decoder/phrase/Header.java
index 30d771c..d55c08b 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/Header.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/Header.java
@@ -30,7 +30,7 @@ public class Header implements Comparable<Header>, Comparator<Header> {
private static final Logger LOG = LoggerFactory.getLogger(Header.class);
private float score;
- private int arity;
+ private final int arity;
private Note note;
protected Header() {
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/Hypothesis.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/Hypothesis.java b/src/main/java/org/apache/joshua/decoder/phrase/Hypothesis.java
index 71d3df9..af5069d 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/Hypothesis.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/Hypothesis.java
@@ -39,15 +39,14 @@ import org.apache.joshua.decoder.hypergraph.HyperEdge;
public class Hypothesis extends HGNode implements Comparable<Hypothesis> {
// The hypothesis' coverage vector
- private Coverage coverage;
+ private final Coverage coverage;
- public static Rule BEGIN_RULE = new HieroFormatReader().parseLine("[X] ||| <s> ||| <s> ||| ||| 0-0");
- public static Rule END_RULE = new HieroFormatReader().parseLine("[GOAL] ||| [X,1] </s> ||| [X,1] </s> ||| ||| 0-0 1-1");
+ public static final Rule BEGIN_RULE = new HieroFormatReader().parseLine("[X] ||| <s> ||| <s> ||| ||| 0-0");
+ public static final Rule END_RULE = new HieroFormatReader().parseLine("[GOAL] ||| [X,1] </s> ||| [X,1] </s> ||| ||| 0-0 1-1");
public String toString() {
StringBuffer sb = new StringBuffer();
- for (DPState state: getDPStates())
- sb.append(state);
+ getDPStates().forEach(sb::append);
String words = bestHyperedge.getRule().getEnglishWords();
// return String.format("HYP[%s] %.5f j=%d words=%s state=%s", coverage, score, j, words, sb);
return String.format("HYP[%s] j=%d words=[%s] state=%s", coverage, j, words, sb);
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/PhraseChart.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/PhraseChart.java b/src/main/java/org/apache/joshua/decoder/phrase/PhraseChart.java
index 9803d9b..8f8bafe 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/PhraseChart.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/PhraseChart.java
@@ -38,15 +38,15 @@ public class PhraseChart {
private static final Logger LOG = LoggerFactory.getLogger(PhraseChart.class);
- private int sentence_length;
+ private final int sentence_length;
private int max_source_phrase_length;
// Banded array: different source lengths are next to each other.
- private List<TargetPhrases> entries;
+ private final List<TargetPhrases> entries;
// number of translation options
int numOptions = 20;
- private List<FeatureFunction> features;
+ private final List<FeatureFunction> features;
/**
* Create a new PhraseChart object, which represents all phrases that are
@@ -67,16 +67,16 @@ public class PhraseChart {
this.features = features;
max_source_phrase_length = 0;
- for (int i = 0; i < tables.length; i++)
- max_source_phrase_length = Math.max(max_source_phrase_length,
- tables[i].getMaxSourcePhraseLength());
+ for (PhraseTable table1 : tables)
+ max_source_phrase_length = Math
+ .max(max_source_phrase_length, table1.getMaxSourcePhraseLength());
sentence_length = source.length();
// System.err.println(String.format(
// "PhraseChart()::Initializing chart for sentlen %d max %d from %s", sentence_length,
// max_source_phrase_length, source));
- entries = new ArrayList<TargetPhrases>();
+ entries = new ArrayList<>();
for (int i = 0; i < sentence_length * max_source_phrase_length; i++)
entries.add(null);
@@ -93,10 +93,8 @@ public class PhraseChart {
}
}
- for (TargetPhrases phrases : entries) {
- if (phrases != null)
- phrases.finish(features, Decoder.weights, num_options);
- }
+ entries.stream().filter(phrases -> phrases != null)
+ .forEach(phrases -> phrases.finish(features, Decoder.weights, num_options));
LOG.info("Input {}: Collecting options took {} seconds", source.id(),
(System.currentTimeMillis() - startTime) / 1000.0f);
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/PhraseTable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/PhraseTable.java b/src/main/java/org/apache/joshua/decoder/phrase/PhraseTable.java
index 2c8a3e9..4c347dd 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/PhraseTable.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/PhraseTable.java
@@ -18,8 +18,6 @@
*/
package org.apache.joshua.decoder.phrase;
-import static org.apache.joshua.decoder.ff.tm.OwnerMap.UNKNOWN_OWNER;
-
import java.io.File;
import java.io.IOException;
import java.util.List;
@@ -43,7 +41,7 @@ import org.apache.joshua.decoder.ff.tm.packed.PackedGrammar;
*/
public class PhraseTable implements Grammar {
- private JoshuaConfiguration config;
+ private final JoshuaConfiguration config;
private Grammar backend;
/**
@@ -118,7 +116,7 @@ public class PhraseTable implements Grammar {
* @param rule the rule to add
*/
public void addRule(Rule rule) {
- ((MemoryBasedBatchGrammar)backend).addRule(rule);
+ backend.addRule(rule);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/Stack.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/Stack.java b/src/main/java/org/apache/joshua/decoder/phrase/Stack.java
index d0ae2da..6661dfb 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/Stack.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/Stack.java
@@ -43,20 +43,20 @@ public class Stack extends ArrayList<Hypothesis> {
private static final long serialVersionUID = 7885252799032416068L;
- private HashMap<Coverage, ArrayList<Hypothesis>> coverages;
+ private final HashMap<Coverage, ArrayList<Hypothesis>> coverages;
- private Sentence sentence;
- private List<FeatureFunction> featureFunctions;
- private JoshuaConfiguration config;
+ private final Sentence sentence;
+ private final List<FeatureFunction> featureFunctions;
+ private final JoshuaConfiguration config;
/* The list of states we've already visited. */
- private HashSet<Candidate> visitedStates;
+ private final HashSet<Candidate> visitedStates;
/* A list of candidates sorted for consideration for entry to the chart (for cube pruning) */
- private PriorityQueue<Candidate> candidates;
+ private final PriorityQueue<Candidate> candidates;
/* Short-circuits adding a cube-prune state more than once */
- private HashMap<Hypothesis, Hypothesis> deduper;
+ private final HashMap<Hypothesis, Hypothesis> deduper;
/**
* Create a new stack. Stacks are organized one for each number of source words that are covered.
@@ -70,10 +70,10 @@ public class Stack extends ArrayList<Hypothesis> {
this.sentence = sentence;
this.config = config;
- this.candidates = new PriorityQueue<Candidate>(1, new CandidateComparator());
- this.coverages = new HashMap<Coverage, ArrayList<Hypothesis>>();
- this.visitedStates = new HashSet<Candidate>();
- this.deduper = new HashMap<Hypothesis,Hypothesis>();
+ this.candidates = new PriorityQueue<>(1, new CandidateComparator());
+ this.coverages = new HashMap<>();
+ this.visitedStates = new HashSet<>();
+ this.deduper = new HashMap<>();
}
/**
@@ -86,7 +86,7 @@ public class Stack extends ArrayList<Hypothesis> {
public boolean add(Hypothesis hyp) {
if (! coverages.containsKey((hyp.getCoverage())))
- coverages.put(hyp.getCoverage(), new ArrayList<Hypothesis>());
+ coverages.put(hyp.getCoverage(), new ArrayList<>());
coverages.get(hyp.getCoverage()).add(hyp);
return super.add(hyp);
@@ -153,7 +153,7 @@ public class Stack extends ArrayList<Hypothesis> {
String newWords = cand.getRule().getEnglishWords().replace("[X,1] ", "");
// If the string is not found in the target sentence, explore the cube neighbors
- if (sentence.fullTarget().indexOf(oldWords + " " + newWords) == -1) {
+ if (!sentence.fullTarget().contains(oldWords + " " + newWords)) {
Candidate next = cand.extendPhrase();
if (next != null)
addCandidate(next);
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/phrase/Stacks.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/phrase/Stacks.java b/src/main/java/org/apache/joshua/decoder/phrase/Stacks.java
index 8c092ec..2802d65 100644
--- a/src/main/java/org/apache/joshua/decoder/phrase/Stacks.java
+++ b/src/main/java/org/apache/joshua/decoder/phrase/Stacks.java
@@ -63,14 +63,14 @@ public class Stacks {
// The end state
private Hypothesis end;
- List<FeatureFunction> featureFunctions;
+ final List<FeatureFunction> featureFunctions;
- private Sentence sentence;
+ private final Sentence sentence;
- private JoshuaConfiguration config;
+ private final JoshuaConfiguration config;
/* Contains all the phrase tables */
- private PhraseChart chart;
+ private final PhraseChart chart;
/**
* Entry point. Initialize everything. Create pass-through (OOV) phrase table and glue phrase
@@ -89,8 +89,8 @@ public class Stacks {
this.config = config;
int num_phrase_tables = 0;
- for (int i = 0; i < grammars.length; i++)
- if (grammars[i] instanceof PhraseTable)
+ for (Grammar grammar : grammars)
+ if (grammar instanceof PhraseTable)
++num_phrase_tables;
PhraseTable[] phraseTables = new PhraseTable[num_phrase_tables + 2];
@@ -118,7 +118,7 @@ public class Stacks {
long startTime = System.currentTimeMillis();
Future future = new Future(chart);
- stacks = new ArrayList<Stack>();
+ stacks = new ArrayList<>();
// <s> counts as the first word. Pushing null lets us count from one.
stacks.add(null);
@@ -233,11 +233,8 @@ public class Stacks {
/* If a gap is created by applying this phrase, make sure that you can reach the first
* zero later on without violating the distortion constraint.
*/
- if (end - firstZero > config.reordering_limit) {
- return false;
- }
-
- return true;
+ return end - firstZero <= config.reordering_limit;
+
}
@@ -254,7 +251,7 @@ public class Stacks {
for (Hypothesis hyp: lastStack) {
float score = hyp.getScore();
- List<HGNode> tailNodes = new ArrayList<HGNode>();
+ List<HGNode> tailNodes = new ArrayList<>();
tailNodes.add(hyp);
float finalTransitionScore = ComputeNodeResult.computeFinalCost(featureFunctions, tailNodes, 0, sentence.length(), null, sentence);
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/segment_file/ConstraintRule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/segment_file/ConstraintRule.java b/src/main/java/org/apache/joshua/decoder/segment_file/ConstraintRule.java
index 5146e2c..0db76cb 100644
--- a/src/main/java/org/apache/joshua/decoder/segment_file/ConstraintRule.java
+++ b/src/main/java/org/apache/joshua/decoder/segment_file/ConstraintRule.java
@@ -54,9 +54,9 @@ public interface ConstraintRule {
* The interpretation of a RHS is that it provides a hard constraint to filter the regular grammar
* such that only rules generating the desired translation can be used.</p>
*/
- public enum Type {
+ enum Type {
RULE, LHS, RHS
- };
+ }
/**
* Return the type of this ConstraintRule.
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/segment_file/Sentence.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/segment_file/Sentence.java b/src/main/java/org/apache/joshua/decoder/segment_file/Sentence.java
index e323ef6..7127870 100644
--- a/src/main/java/org/apache/joshua/decoder/segment_file/Sentence.java
+++ b/src/main/java/org/apache/joshua/decoder/segment_file/Sentence.java
@@ -91,7 +91,7 @@ public class Sentence {
config = joshuaConfiguration;
- this.constraints = new LinkedList<ConstraintSpan>();
+ this.constraints = new LinkedList<>();
// Check if the sentence has SGML markings denoting the
// sentence ID; if so, override the id passed in to the
@@ -103,7 +103,7 @@ public class Sentence {
this.id = Integer.parseInt(idstr);
} else {
- if (inputString.indexOf(" ||| ") != -1) {
+ if (inputString.contains(" ||| ")) {
/* Target-side given; used for parsing and forced decoding */
String[] pieces = inputString.split("\\s?\\|{3}\\s?");
source = pieces[0];
@@ -178,7 +178,7 @@ public class Sentence {
Lattice<Token> oldLattice = this.getLattice();
/* Build a list of terminals across all grammars */
- HashSet<Integer> vocabulary = new HashSet<Integer>();
+ HashSet<Integer> vocabulary = new HashSet<>();
for (Grammar grammar : grammars) {
Iterator<Integer> iterator = grammar.getTrieRoot().getTerminalExtensionIterator();
while (iterator.hasNext())
@@ -197,11 +197,11 @@ public class Sentence {
List<Arc<Token>> savedArcs = oldNodes.get(nodeid).getOutgoingArcs();
char[] chars = word.toCharArray();
- ChartSpan<Boolean> wordChart = new ChartSpan<Boolean>(chars.length + 1, false);
- ArrayList<Node<Token>> nodes = new ArrayList<Node<Token>>(chars.length + 1);
+ ChartSpan<Boolean> wordChart = new ChartSpan<>(chars.length + 1, false);
+ ArrayList<Node<Token>> nodes = new ArrayList<>(chars.length + 1);
nodes.add(oldNodes.get(nodeid));
for (int i = 1; i < chars.length; i++)
- nodes.add(new Node<Token>(i));
+ nodes.add(new Node<>(i));
nodes.add(oldNodes.get(nodeid + 1));
for (int width = 1; width <= chars.length; width++) {
for (int i = 0; i <= chars.length - width; i++) {
@@ -228,7 +228,7 @@ public class Sentence {
/* If there's a path from beginning to end */
if (wordChart.get(0, chars.length)) {
// Remove nodes not part of a complete path
- HashSet<Node<Token>> deletedNodes = new HashSet<Node<Token>>();
+ HashSet<Node<Token>> deletedNodes = new HashSet<>();
for (int k = 1; k < nodes.size() - 1; k++)
if (!(wordChart.get(0, k) && wordChart.get(k, chars.length)))
nodes.set(k, null);
@@ -382,7 +382,7 @@ public class Sentence {
*/
public List<Token> getTokens() {
assert isLinearChain();
- List<Token> tokens = new ArrayList<Token>();
+ List<Token> tokens = new ArrayList<>();
for (Node<Token> node: getLattice().getNodes())
if (node != null && node.getOutgoingArcs().size() > 0)
tokens.add(node.getOutgoingArcs().get(0).getLabel());
@@ -435,7 +435,7 @@ public class Sentence {
public String toString() {
StringBuilder sb = new StringBuilder(source());
if (target() != null) {
- sb.append(" ||| " + target());
+ sb.append(" ||| ").append(target());
}
return sb.toString();
}
http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/029cbbcc/src/main/java/org/apache/joshua/decoder/segment_file/Token.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/joshua/decoder/segment_file/Token.java b/src/main/java/org/apache/joshua/decoder/segment_file/Token.java
index b84826d..4cbc7fa 100644
--- a/src/main/java/org/apache/joshua/decoder/segment_file/Token.java
+++ b/src/main/java/org/apache/joshua/decoder/segment_file/Token.java
@@ -42,10 +42,9 @@ public class Token {
// The token without the annotations
private String token;
- private int tokenID;
+ private final int tokenID;
private HashMap<String,String> annotations = null;
- private JoshuaConfiguration joshuaConfiguration;
/**
* <p>Constructor : Creates a Token object from a raw word
@@ -75,10 +74,10 @@ public class Token {
*
*/
public Token(String rawWord, JoshuaConfiguration config) {
+
+ JoshuaConfiguration joshuaConfiguration = config;
- this.joshuaConfiguration = config;
-
- annotations = new HashMap<String,String>();
+ annotations = new HashMap<>();
// Matches a word with an annotation
// Check guidelines in constructor description