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    }