LeftState
- RightState
- public abstract class GenericCondensedIntersectionAutomaton<LeftState,RightState> extends TreeAutomaton<Pair<LeftState,RightState>>
TreeAutomaton
(left) and a CondensedTreeAutomaton
(right).
This class uses a CKY-style algorithm, which queries the right automaton
top-down and the left automaton bottom-up. A typical use-case is that the
left automaton is the derivation-tree RTG of an IRTG and the right automaton
is the inverse-homomorphism image of a decomposition automaton.Note that this automaton will not work correctly if right is recursive except if all recursive rules are of the form 'q -> {...}(q)' which is explicitly handled. Recursive right automata come up, for instance, when parsing with an IRTG that has ?1 on the input interpretation. (See issue #2 on Bitbucket.)
Modifier and Type | Class and Description |
---|---|
static interface |
GenericCondensedIntersectionAutomaton.IntersectionCall |
TreeAutomaton.BottomUpStateVisitor
Modifier and Type | Field and Description |
---|---|
static boolean |
DEBUG |
D, DEBUG_STORE
Constructor and Description |
---|
GenericCondensedIntersectionAutomaton(TreeAutomaton<LeftState> left,
CondensedTreeAutomaton<RightState> right,
SignatureMapper sigMapper) |
GenericCondensedIntersectionAutomaton(TreeAutomaton<LeftState> left,
CondensedTreeAutomaton<RightState> right,
SignatureMapper sigMapper,
PruningPolicy pp) |
Modifier and Type | Method and Description |
---|---|
IntSet |
getFinalStates()
Returns the IDs of the final states of the automaton.
|
Iterable<Rule> |
getRulesBottomUp(int label,
int[] childStates)
Finds automaton rules bottom-up for a given list of child states and a
given parent label.
|
Iterable<Rule> |
getRulesTopDown(int label,
int parentState)
Finds automaton rules top-down for a given parent state and label.
|
boolean |
isBottomUpDeterministic()
Determines whether the automaton is deterministic if read as a bottom-up
automaton.
|
static void |
main(String[] args,
boolean showViterbiTrees,
GenericCondensedIntersectionAutomaton.IntersectionCall icall)
Function to test the efficiency of this intersection algorithm by parsing
each sentence in a text file with a given IRTG.
|
void |
makeAllRulesExplicit()
Computes all rules in this automaton and stores them in the cache.
|
accepts, acceptsRaw, analyze, asConcreteTreeAutomaton, asConcreteTreeAutomatonBottomUp, asConcreteTreeAutomatonWithStringStates, countTrees, createRule, createRule, createRule, createRule, createRule, createRule, determinize, determinize, dumpToFile, equals, evaluateInSemiring, evaluateInSemiring, evaluateInSemiringTopDown, foreachRuleBottomUpForSets, foreachRuleTopDown, foreachStateInBottomUpOrder, getAllLabels, getAllRulesTopDown, getAllStates, getIdForState, getLabelsTopDown, getNumberOfRules, getNumberOfSeenStates, getRandomRuleTree, getRandomRuleTreeFromInside, getRandomTree, getRandomTreeFromInside, getReachableStates, getRulesBottomUp, getRulesBottomUp, getRuleSet, getRulesForRhsState, getRulesTopDown, getRuleTree, getSignature, getStateForId, getStateInterner, getStatesInBottomUpOrder, getStoredConstantsForID, getWeight, getWeightRaw, hasRuleWithPrefix, hasStoredConstants, homomorphism, inside, intersect, intersect, intersectBottomUp, intersectCondensed, intersectCondensed, intersectCondensed, intersectCondensedBottomUp, intersectCondensedBottomUp, intersectEarley, intersectViterbi, intersectViterbi, inverseCondensedHomomorphism, inverseHomomorphism, isCyclic, isEmpty, isStoring, language, languageIterable, languageIterator, languageIteratorRaw, languageRaw, newSiblingFinder, normalizeRuleWeights, outside, processAllRulesBottomUp, processAllRulesTopDown, reduceTopDown, run, run, runRaw, setRulePrintingFilter, setSkipFail, setStoring, sortedLanguageIterator, supportsBottomUpQueries, supportsTopDownQueries, toString, toStringBottomUp, useSiblingFinder, viterbi, viterbiRaw, write
public GenericCondensedIntersectionAutomaton(TreeAutomaton<LeftState> left, CondensedTreeAutomaton<RightState> right, SignatureMapper sigMapper)
public GenericCondensedIntersectionAutomaton(TreeAutomaton<LeftState> left, CondensedTreeAutomaton<RightState> right, SignatureMapper sigMapper, PruningPolicy pp)
public void makeAllRulesExplicit()
TreeAutomaton
makeAllRulesExplicit
in class TreeAutomaton<Pair<LeftState,RightState>>
public boolean isBottomUpDeterministic()
TreeAutomaton
isBottomUpDeterministic
in class TreeAutomaton<Pair<LeftState,RightState>>
public IntSet getFinalStates()
TreeAutomaton
getFinalStates
in class TreeAutomaton<Pair<LeftState,RightState>>
public Iterable<Rule> getRulesBottomUp(int label, int[] childStates)
TreeAutomaton
getRulesBottomUp
in class TreeAutomaton<Pair<LeftState,RightState>>
public Iterable<Rule> getRulesTopDown(int label, int parentState)
TreeAutomaton
Note that not every method of TreeAutomaton is safely available in your
implementation of getRulesTopDown. Most notably, you can't use the
default implementation of TreeAutomaton.getAllStates()
, because that method
makes all rules of the automaton explicit and calls TreeAutomaton.getRulesTopDown(int, int)
in the process, leading to an infinite recursion.
getRulesTopDown
in class TreeAutomaton<Pair<LeftState,RightState>>
public static void main(String[] args, boolean showViterbiTrees, GenericCondensedIntersectionAutomaton.IntersectionCall icall) throws FileNotFoundException, ParseException, IOException, ParserException, CodecParseException
args
- CMD argumentsshowViterbiTrees
- icall
- what intersection should be used?FileNotFoundException
ParseException
IOException
ParserException
AntlrIrtgBuilder.ParseException
ParseException
CodecParseException
Copyright © 2017. All rights reserved.