(new DFSATransition<>("", tSource, new DFSAState<>(-1, null), "1", "", 0)); double transitionCost = transition.score(); if (transitionCost < minCost) { if (predictSpace != null) { DFSAState<String, Integer> tDest = transition.target(); DFSAState<String, Integer> newASource = aSource; DFSAState<String, Integer> aDest = stateLinks.get(tSource); newASource.addTransition (new DFSATransition<>("", newASource, aDest, newAnswer.toString(), "", newCost)); DFSAState<String, Integer> aDest = new DFSAState<>(nodeId.intValue(), answerLattice, 0.0); stateLinks.put(tSource,aDest); newASource.addTransition(new DFSATransition<>("", newASource, aDest, newAnswer.toString(), "", newCost)); newCost += transition.score(); if (newCost < flags.searchGraphPrune || ChineseStringUtils.isLetterASCII(curChr.charAt(0)))
public void printAttFsmFormat(Writer w) throws IOException { Queue<DFSAState<T,S>> q = new LinkedList<>(); Set<DFSAState<T,S>> visited = Generics.newHashSet(); q.offer(initialState); while(q.peek() != null) { DFSAState<T, S> state = q.poll(); if(state == null || visited.contains(state)) continue; visited.add(state); if (state.isAccepting()) { w.write(state.toString()+"\t"+state.score()+"\n"); continue; } TreeSet<T> inputs = new TreeSet<>(state.continuingInputs()); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); DFSAState<T,S> target = transition.target(); if(!visited.contains(target)) q.add(target); w.write(state.toString()+"\t"+target.toString()+"\t"+transition.getInput()+"\t"+transition.score()+"\n"); } } }
Collection<DFSATransition<Word, Integer>> trs = fromState.transitions(); for (DFSATransition<Word, Integer> tr : trs) { DFSAState<Word, Integer> toState = tr.getTarget(); double lcost = tr.score(); int end = toState.stateID(); while (i>0) { DFSATransition<Word, Integer> tr = bptrs.get(i); DFSAState<Word, Integer> fromState = tr.getSource(); Word word = tr.getInput(); if (!word.word().equals(" ")) segmentedWords.add(0, word);
private static <T, S> void printTrieDFSAHelper(DFSAState<T, S> state, int level) { if (state.isAccepting()) { return; } Set<T> inputs = state.continuingInputs(); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); System.out.print(level); System.out.print(input); for (int i = 0; i < level; i++) { System.out.print(" "); } System.out.print(transition.score()); System.out.print(" "); System.out.println(input); printTrieDFSAHelper(transition.target(), level + 1); } }
public Set<DFSAState<T,S>> successorStates() { Set<DFSAState<T,S>> successors = Generics.newHashSet(); Collection<DFSATransition<T, S>> transitions = inputToTransition.values(); for (DFSATransition<T,S> transition : transitions) { successors.add(transition.getTarget()); } return successors; }
double cost = isInDict ? 1 : 100; DFSATransition<Word, Integer> trans = new DFSATransition<>(null, states.get(start), states.get(end), new Word(str), null, cost);
public void addTransition(DFSATransition<T,S> transition) { inputToTransition.put(transition.input(), transition); }
private static <T, S> void printTrieAsRulesHelper(DFSAState<T, S> state, String prefix, Writer w) throws IOException { if (state.isAccepting()) { return; } Set<T> inputs = state.continuingInputs(); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); DFSAState<T, S> target = transition.target(); Set<T> inputs2 = target.continuingInputs(); boolean allTerminate = true; for (T input2 : inputs2) { DFSATransition<T, S> transition2 = target.transition(input2); DFSAState<T, S> target2 = transition2.target(); if (target2.isAccepting()) { // it's a binary end rule. Print it. w.write(prefix + " --> " + input + " " + input2 + "\n"); } else { allTerminate = false; } } if (!allTerminate) { // there are some longer continuations. Print continuation rule String newPrefix = prefix + "_" + input; w.write(prefix + " --> " + input + " " + newPrefix + "\n"); printTrieAsRulesHelper(transition.target(), newPrefix, w); } } }
private static <T, S> void printTrieDFSAHelper(DFSAState<T, S> state, int level) { if (state.isAccepting()) { return; } Set<T> inputs = state.continuingInputs(); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); System.out.print(level); System.out.print(input); for (int i = 0; i < level; i++) { System.out.print(" "); } System.out.print(transition.score()); System.out.print(" "); System.out.println(input); printTrieDFSAHelper(transition.target(), level + 1); } }
new DFSATransition<>("", startState, graphStates[pos][product], classIndex.get(curTag), "", -windowScore[pos][product]); startState.addTransition(tr); } else { DFSAState<String, Integer> destState = (pos-leftWindow+1==graphStates.length) ? endState : graphStates[pos-leftWindow+1][curTag]; DFSATransition<String, Integer> tr = new DFSATransition<>("", sourceState, destState, classIndex.get(curTag), "", -windowScore[pos][product]); graphStates[pos-leftWindow][predTag].addTransition(tr);
public void addTransition(DFSATransition<T,S> transition) { inputToTransition.put(transition.input(), transition); }
private static <T, S> void printTrieAsRulesHelper(DFSAState<T, S> state, String prefix, Writer w) throws IOException { if (state.isAccepting()) { return; } Set<T> inputs = state.continuingInputs(); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); DFSAState<T, S> target = transition.target(); Set<T> inputs2 = target.continuingInputs(); boolean allTerminate = true; for (T input2 : inputs2) { DFSATransition<T, S> transition2 = target.transition(input2); DFSAState<T, S> target2 = transition2.target(); if (target2.isAccepting()) { // it's a binary end rule. Print it. w.write(prefix + " --> " + input + " " + input2 + "\n"); } else { allTerminate = false; } } if (!allTerminate) { // there are some longer continuations. Print continuation rule String newPrefix = prefix + "_" + input; w.write(prefix + " --> " + input + " " + newPrefix + "\n"); printTrieAsRulesHelper(transition.target(), newPrefix, w); } } }
public void printAttFsmFormat(Writer w) throws IOException { Queue<DFSAState<T,S>> q = new LinkedList<>(); Set<DFSAState<T,S>> visited = Generics.newHashSet(); q.offer(initialState); while(q.peek() != null) { DFSAState<T, S> state = q.poll(); if(state == null || visited.contains(state)) continue; visited.add(state); if (state.isAccepting()) { w.write(state.toString()+"\t"+state.score()+"\n"); continue; } TreeSet<T> inputs = new TreeSet<>(state.continuingInputs()); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); DFSAState<T,S> target = transition.target(); if(!visited.contains(target)) q.add(target); w.write(state.toString()+"\t"+target.toString()+"\t"+transition.getInput()+"\t"+transition.score()+"\n"); } } }
(new DFSATransition<String, Integer>("", tSource, new DFSAState<String, Integer>(-1, null), "1", "", 0)); double transitionCost = transition.score(); if (transitionCost < minCost) { if (predictSpace != null) { DFSAState<String, Integer> tDest = transition.target(); DFSAState<String, Integer> newASource = aSource; DFSAState<String, Integer> aDest = stateLinks.get(tSource); newASource.addTransition (new DFSATransition<String, Integer>("", newASource, aDest, newAnswer.toString(), "", newCost)); DFSAState<String, Integer> aDest = new DFSAState<String, Integer>(nodeId.intValue(), answerLattice, 0.0); stateLinks.put(tSource,aDest); newASource.addTransition(new DFSATransition<String, Integer>("", newASource, aDest, newAnswer.toString(), "", newCost)); newCost += transition.score(); if (newCost < flags.searchGraphPrune || ChineseStringUtils.isLetterASCII(curChr.charAt(0)))
private static <T, S> void printTrieDFSAHelper(DFSAState<T, S> state, int level) { if (state.isAccepting()) { return; } Set<T> inputs = state.continuingInputs(); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); System.out.print(level); System.out.print(input); for (int i = 0; i < level; i++) { System.out.print(" "); } System.out.print(transition.score()); System.out.print(" "); System.out.println(input); printTrieDFSAHelper(transition.target(), level + 1); } }
new DFSATransition<String, Integer>("",startState,graphStates[pos][product],classIndex.get(curTag),"",-windowScore[pos][product]); startState.addTransition(tr); } else { DFSAState<String, Integer> destState = (pos-leftWindow+1==graphStates.length) ? endState : graphStates[pos-leftWindow+1][curTag]; DFSATransition<String, Integer> tr = new DFSATransition<String, Integer>("",sourceState,destState,classIndex.get(curTag),"",-windowScore[pos][product]); graphStates[pos-leftWindow][predTag].addTransition(tr);
public void addTransition(DFSATransition<T,S> transition) { inputToTransition.put(transition.input(), transition); }
private static <T, S> void printTrieAsRulesHelper(DFSAState<T, S> state, String prefix, Writer w) throws IOException { if (state.isAccepting()) { return; } Set<T> inputs = state.continuingInputs(); for (T input : inputs) { DFSATransition<T, S> transition = state.transition(input); DFSAState<T, S> target = transition.target(); Set<T> inputs2 = target.continuingInputs(); boolean allTerminate = true; for (T input2 : inputs2) { DFSATransition<T, S> transition2 = target.transition(input2); DFSAState<T, S> target2 = transition2.target(); if (target2.isAccepting()) { // it's a binary end rule. Print it. w.write(prefix + " --> " + input + " " + input2 + "\n"); } else { allTerminate = false; } } if (!allTerminate) { // there are some longer continuations. Print continuation rule String newPrefix = prefix + "_" + input; w.write(prefix + " --> " + input + " " + newPrefix + "\n"); printTrieAsRulesHelper(transition.target(), newPrefix, w); } } }