001 package org.maltparser.ml;
002
003 import java.io.BufferedWriter;
004 import java.util.ArrayList;
005 import java.util.Map;
006 import java.util.Set;
007
008 import org.maltparser.core.exception.MaltChainedException;
009 import org.maltparser.core.feature.FeatureVector;
010 import org.maltparser.core.feature.function.FeatureFunction;
011 import org.maltparser.core.syntaxgraph.DependencyStructure;
012 import org.maltparser.ml.liblinear.LiblinearException;
013 import org.maltparser.parser.history.action.SingleDecision;
014
015
016 public interface LearningMethod {
017 public static final int BATCH = 0;
018 public static final int CLASSIFY = 1;
019 public void addInstance(SingleDecision decision, FeatureVector featureVector) throws MaltChainedException;
020 public void finalizeSentence(DependencyStructure dependencyGraph) throws MaltChainedException;
021 public void noMoreInstances() throws MaltChainedException;
022 public void train(FeatureVector featureVector) throws MaltChainedException;
023
024 /**
025 * This method does a cross validation of the training instances added and return the average score over the
026 * nrOfSplit divisions. This method is used by the decision tree model when deciding which parts
027 * of the tree that shall be pruned.
028 *
029 * @param featureVector
030 * @param nrOfSplits
031 * @return a double
032 * @throws MaltChainedException
033 */
034 public double crossValidate(FeatureVector featureVector, int nrOfSplits) throws MaltChainedException;
035 public void moveAllInstances(LearningMethod method, FeatureFunction divideFeature, ArrayList<Integer> divideFeatureIndexVector) throws MaltChainedException;
036 public void terminate() throws MaltChainedException;
037 public boolean predict(FeatureVector features, SingleDecision decision) throws MaltChainedException;
038 public BufferedWriter getInstanceWriter();
039 public void increaseNumberOfInstances();
040 public void decreaseNumberOfInstances();
041
042
043 void divideByFeatureSet(
044 Set<Integer> featureIdsToCreateSeparateBranchesForSet,
045 ArrayList<Integer> divideFeatureIndexVector, String otherId)
046 throws MaltChainedException;
047 public Map<Integer, Integer> createFeatureIdToCountMap(
048 ArrayList<Integer> divideFeatureIndexVector) throws MaltChainedException;
049 }