public class ChineseLexiconAndWordSegmenter extends java.lang.Object implements Lexicon, WordSegmenter
BOUNDARY, BOUNDARY_TAG, UNKNOWN_WORD
Constructor and Description |
---|
ChineseLexiconAndWordSegmenter(ChineseLexicon lex,
WordSegmenter seg) |
ChineseLexiconAndWordSegmenter(java.lang.String segmenterFileOrUrl,
Options op)
Construct a new ChineseLexiconAndWordSegmenter.
|
Modifier and Type | Method and Description |
---|---|
void |
finishTraining()
Done collecting statistics for the lexicon.
|
static ChineseLexiconAndWordSegmenter |
getSegmenterDataFromFile(java.lang.String parserFileOrUrl,
Options op) |
protected static ChineseLexiconAndWordSegmenter |
getSegmenterDataFromSerializedFile(java.lang.String serializedFileOrUrl) |
UnknownWordModel |
getUnknownWordModel() |
void |
incrementTreesRead(double weight)
If training on a per-word basis instead of on a per-tree basis,
we will want to increment the tree count as this happens.
|
void |
initializeTraining(double numTrees)
Start training this lexicon on the expected number of trees.
|
boolean |
isKnown(int word)
Checks whether a word is in the lexicon.
|
boolean |
isKnown(java.lang.String word)
Checks whether a word is in the lexicon.
|
void |
loadSegmenter(java.lang.String filename) |
static void |
main(java.lang.String[] args)
This method lets you train and test a segmenter relative to a
Treebank.
|
int |
numRules()
Returns the number of rules (tag rewrites as word) in the Lexicon.
|
void |
readData(java.io.BufferedReader in)
Read the lexicon from the BufferedReader in the format written by
writeData.
|
java.util.Iterator<IntTaggedWord> |
ruleIteratorByWord(int word,
int loc,
java.lang.String featureSpec)
Get an iterator over all rules (pairs of (word, POS)) for this word.
|
java.util.Iterator<IntTaggedWord> |
ruleIteratorByWord(java.lang.String word,
int loc,
java.lang.String featureSpec)
Same thing, but with a string that needs to be translated by the
lexicon's word index
|
float |
score(IntTaggedWord iTW,
int loc,
java.lang.String word,
java.lang.String featureSpec)
Get the score of this word with this tag (as an IntTaggedWord) at this
loc.
|
java.util.List<HasWord> |
segment(java.lang.String s) |
void |
setUnknownWordModel(UnknownWordModel uwm) |
java.util.Set<java.lang.String> |
tagSet(java.util.function.Function<java.lang.String,java.lang.String> basicCategoryFunction)
Return the Set of tags used by this tagger (available after training the tagger).
|
void |
train(java.util.Collection<Tree> trees)
Trains this lexicon on the Collection of trees.
|
void |
train(java.util.Collection<Tree> trees,
java.util.Collection<Tree> rawTrees) |
void |
train(java.util.Collection<Tree> trees,
double weight) |
void |
train(java.util.List<TaggedWord> sentence) |
void |
train(java.util.List<TaggedWord> sentence,
double weight)
Not all subclasses support this particular method.
|
void |
train(TaggedWord tw,
int loc,
double weight)
Not all subclasses support this particular method.
|
void |
train(Tree tree) |
void |
train(Tree tree,
double weight) |
void |
trainUnannotated(java.util.List<TaggedWord> sentence,
double weight)
Sometimes we might have a sentence of tagged words which we would
like to add to the lexicon, but they weren't part of a binarized,
markovized, or otherwise annotated tree.
|
void |
writeData(java.io.Writer w)
Write the lexicon in human-readable format to the Writer.
|
public ChineseLexiconAndWordSegmenter(ChineseLexicon lex, WordSegmenter seg)
public ChineseLexiconAndWordSegmenter(java.lang.String segmenterFileOrUrl, Options op)
java.lang.IllegalArgumentException
- If segmenter data cannot be loadedpublic java.util.List<HasWord> segment(java.lang.String s)
segment
in interface WordSegmenter
public boolean isKnown(int word)
Lexicon
public boolean isKnown(java.lang.String word)
Lexicon
public java.util.Set<java.lang.String> tagSet(java.util.function.Function<java.lang.String,java.lang.String> basicCategoryFunction)
public java.util.Iterator<IntTaggedWord> ruleIteratorByWord(int word, int loc, java.lang.String featureSpec)
Lexicon
ruleIteratorByWord
in interface Lexicon
word
- The word, represented as an integer in Indexloc
- The position of the word in the sentence (counting from 0).
Implementation note: The BaseLexicon class doesn't
actually make use of this position information.featureSpec
- Additional word features like morphosyntactic information.tag -> word rule.)
public java.util.Iterator<IntTaggedWord> ruleIteratorByWord(java.lang.String word, int loc, java.lang.String featureSpec)
Lexicon
ruleIteratorByWord
in interface Lexicon
public int numRules()
public void initializeTraining(double numTrees)
Lexicon
initializeTraining
in interface Lexicon
initializeTraining
in interface WordSegmenter
public void train(java.util.Collection<Tree> trees)
Lexicon
train
in interface Lexicon
train
in interface WordSegmenter
trees
- Trees to train onpublic void train(java.util.Collection<Tree> trees, double weight)
public void train(Tree tree)
train
in interface WordSegmenter
public void train(java.util.List<TaggedWord> sentence)
train
in interface WordSegmenter
public void train(java.util.List<TaggedWord> sentence, double weight)
Lexicon
public void trainUnannotated(java.util.List<TaggedWord> sentence, double weight)
Lexicon
trainUnannotated
in interface Lexicon
public void incrementTreesRead(double weight)
Lexicon
incrementTreesRead
in interface Lexicon
public void train(TaggedWord tw, int loc, double weight)
Lexicon
public void finishTraining()
Lexicon
finishTraining
in interface Lexicon
finishTraining
in interface WordSegmenter
public float score(IntTaggedWord iTW, int loc, java.lang.String word, java.lang.String featureSpec)
Lexicon
score
in interface Lexicon
iTW
- An IntTaggedWord pairing a word and POS tagloc
- The position in the sentence. In the default implementation
this is used only for unknown words to change their
probability distribution when sentence initial.word
- The word itself; useful so we don't have to look it
up in an indexfeatureSpec
- TODOpublic void loadSegmenter(java.lang.String filename)
loadSegmenter
in interface WordSegmenter
public void readData(java.io.BufferedReader in) throws java.io.IOException
Lexicon
public void writeData(java.io.Writer w) throws java.io.IOException
Lexicon
public static ChineseLexiconAndWordSegmenter getSegmenterDataFromFile(java.lang.String parserFileOrUrl, Options op)
protected static ChineseLexiconAndWordSegmenter getSegmenterDataFromSerializedFile(java.lang.String serializedFileOrUrl)
public static void main(java.lang.String[] args)
Implementation note: This method is largely cloned from LexicalizedParser's main method. Should we try to have it be able to train segmenters to stop things going out of sync?
public UnknownWordModel getUnknownWordModel()
getUnknownWordModel
in interface Lexicon
public void setUnknownWordModel(UnknownWordModel uwm)
setUnknownWordModel
in interface Lexicon