public class TreeNormalizer extends Object implements Serializable
TreeNormalizer
may wish to perform is interning the String
s passed to
it. Can be reused as a Singleton. Designed to be extended.
The TreeNormalizer
methods are in two groups.
The contract for this class is that first normalizeTerminal or
normalizeNonterminal will be called on each String
that will
be put into a Tree
, when they are read from files or
otherwise created. Then normalizeWholeTree
will
be called on the Tree
. It normally walks the
Tree
making whatever modifications it wishes to. A
TreeNormalizer
need not make a deep copy of a
Tree
. It is assumed to be able to work destructively,
because afterwards we will only use the normalized Tree
.
Implementation note: This is a very old legacy class used in conjunction
with PennTreeReader. It seems now that it would be better to move the
String normalization into the tokenizer, and then we are just left with a
(possibly destructive) TreeTransformer.Constructor and Description |
---|
TreeNormalizer() |
Modifier and Type | Method and Description |
---|---|
String |
normalizeNonterminal(String category)
Normalizes a nonterminal contents (and maybe intern it).
|
String |
normalizeTerminal(String leaf)
Normalizes a leaf contents (and maybe intern it).
|
Tree |
normalizeWholeTree(Tree tree,
TreeFactory tf)
Normalize a whole tree -- this method assumes that the argument
that it is passed is the root of a complete
Tree . |
public String normalizeTerminal(String leaf)
leaf
- The String that decorates the leafpublic String normalizeNonterminal(String category)
category
- The String that decorates this nonterminal nodepublic Tree normalizeWholeTree(Tree tree, TreeFactory tf)
Tree
.
It is normally implemented as a Tree-walking routine.
This method may return null
. This is interpreted to
mean that this is a tree that should not be included in further
processing. PennTreeReader recognizes this return value, and
asks for another Tree from the input Reader.
tree
- The tree to be normalizedtf
- the TreeFactory to create new nodes (if needed)