Search in sources :

Example 1 with ParameterSpace

use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.

the class BatchTaskTest method testNested.

@Test
public void testNested() throws Exception {
    Dimension innerDim = Dimension.create("inner", "1", "2", "3");
    ParameterSpace innerPSpace = new ParameterSpace(innerDim);
    DefaultBatchTask innerTask = new DefaultBatchTask() {

        @Override
        public void setConfiguration(Map<String, Object> aConfig) {
            super.setConfiguration(aConfig);
            System.out.printf("A %10d %s %s%n", this.hashCode(), getType(), aConfig);
        }
    };
    innerTask.setParameterSpace(innerPSpace);
    innerTask.addTask(new ConfigDumperTask1());
    Dimension outerDim = Dimension.create("outer", "1", "2", "3");
    ParameterSpace outerPSpace = new ParameterSpace(outerDim);
    DefaultBatchTask outerTask = new DefaultBatchTask() {

        @Override
        public void setConfiguration(Map<String, Object> aConfig) {
            super.setConfiguration(aConfig);
            System.out.printf("B %10d %s %s%n", this.hashCode(), getType(), aConfig);
        }
    };
    outerTask.setParameterSpace(outerPSpace);
    outerTask.addTask(innerTask);
    outerTask.addTask(new ConfigDumperTask2());
    Lab.getInstance().run(outerTask);
}
Also used : ParameterSpace(org.dkpro.lab.task.ParameterSpace) Dimension(org.dkpro.lab.task.Dimension) Map(java.util.Map) DefaultBatchTask(org.dkpro.lab.task.impl.DefaultBatchTask) Test(org.junit.Test)

Example 2 with ParameterSpace

use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.

the class BatchTaskTest method testNested2.

@Test
public void testNested2() throws Exception {
    DefaultBatchTask innerTask = new DefaultBatchTask() {

        @Discriminator
        private Integer outer;

        @Override
        public ParameterSpace getParameterSpace() {
            // Dynamically configure parameter space of nested batch task
            Integer[] values = new Integer[outer];
            for (int i = 0; i < outer; i++) {
                values[i] = i;
            }
            Dimension<Integer> innerDim = Dimension.create("inner", values);
            ParameterSpace innerPSpace = new ParameterSpace(innerDim);
            return innerPSpace;
        }

        @Override
        public void setConfiguration(Map<String, Object> aConfig) {
            super.setConfiguration(aConfig);
            System.out.printf("A %10d %s %s%n", this.hashCode(), getType(), aConfig);
        }
    };
    innerTask.addTask(new ConfigDumperTask1());
    Dimension<Integer> outerDim = Dimension.create("outer", 1, 2, 3);
    ParameterSpace outerPSpace = new ParameterSpace(outerDim);
    DefaultBatchTask outerTask = new DefaultBatchTask() {

        @Override
        public void setConfiguration(Map<String, Object> aConfig) {
            super.setConfiguration(aConfig);
            System.out.printf("B %10d %s %s%n", this.hashCode(), getType(), aConfig);
        }
    };
    outerTask.setParameterSpace(outerPSpace);
    outerTask.addTask(innerTask);
    outerTask.addTask(new ConfigDumperTask2());
    Lab.getInstance().run(outerTask);
}
Also used : ParameterSpace(org.dkpro.lab.task.ParameterSpace) Map(java.util.Map) DefaultBatchTask(org.dkpro.lab.task.impl.DefaultBatchTask) Test(org.junit.Test)

Example 3 with ParameterSpace

use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.

the class FoldDimensionBundleTest method testComparator.

/**
 * Tests that instances in the same cluster (here, parent folder) go into a fold together.
 */
@Test
public void testComparator() {
    Dimension<String> baseData = Dimension.create("base", "aa/1.txt", "aa/2.txt", "aa/3.txt", "bb/4.txt", "bb/5.txt", "bb/6.txt", "cc/7.txt", "cc/8.txt", "cc/9.txt", "cc/10.txt");
    Comparator<String> comp = new Comparator<String>() {

        @Override
        public int compare(String filename1, String filename2) {
            File file1 = new File(filename1);
            File file2 = new File(filename2);
            String folder1 = file1.getParentFile().getName();
            String folder2 = file2.getParentFile().getName();
            if (folder1.equals(folder2)) {
                return 0;
            }
            return 1;
        }
    };
    FoldDimensionBundle<String> foldBundle = new FoldDimensionBundle<String>("fold", baseData, 3, comp);
    String expected = "0 - [aa/1.txt, aa/2.txt, aa/3.txt] [bb/4.txt, bb/5.txt, bb/6.txt, cc/7.txt, cc/8.txt, cc/9.txt, cc/10.txt]\n" + "1 - [bb/4.txt, bb/5.txt, bb/6.txt] [aa/1.txt, aa/2.txt, aa/3.txt, cc/7.txt, cc/8.txt, cc/9.txt, cc/10.txt]\n" + "2 - [cc/7.txt, cc/8.txt, cc/9.txt, cc/10.txt] [aa/1.txt, aa/2.txt, aa/3.txt, bb/4.txt, bb/5.txt, bb/6.txt]\n";
    StringBuilder actual = new StringBuilder();
    int n = 0;
    ParameterSpace pSpace = new ParameterSpace(foldBundle);
    for (Map<String, Object> config : pSpace) {
        actual.append(String.format("%d - %s %s\n", n, config.get("fold_validation"), config.get("fold_training")));
        n++;
    }
    assertEquals(3, n);
    assertEquals(3, pSpace.getStepCount());
    assertEquals(expected, actual.toString());
}
Also used : FoldDimensionBundle(org.dkpro.lab.task.impl.FoldDimensionBundle) ParameterSpace(org.dkpro.lab.task.ParameterSpace) File(java.io.File) Comparator(java.util.Comparator) Test(org.junit.Test)

Example 4 with ParameterSpace

use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.

the class FoldDimensionBundleTest method testFoldDistribution.

/**
 * Tests to see that instances are evenly distributed across folds.
 */
@Test
public void testFoldDistribution() {
    Dimension<String> baseData = Dimension.create("base", "aa/1.txt", "aa/2.txt", "bb/3.txt", "cc/4.txt", "dd/5.txt", "dd/6.txt", "ee/7.txt", "ff/8.txt", "gg/9.txt", "gg/10.txt");
    Comparator<String> comp = new Comparator<String>() {

        @Override
        public int compare(String filename1, String filename2) {
            File file1 = new File(filename1);
            File file2 = new File(filename2);
            String folder1 = file1.getParentFile().getName();
            String folder2 = file2.getParentFile().getName();
            if (folder1.equals(folder2)) {
                return 0;
            }
            return 1;
        }
    };
    FoldDimensionBundle<String> foldBundle = new FoldDimensionBundle<String>("fold", baseData, 3, comp);
    String expected = "0 - [aa/1.txt, aa/2.txt, ff/8.txt] [bb/3.txt, dd/5.txt, dd/6.txt, cc/4.txt, ee/7.txt, gg/9.txt, gg/10.txt]\n" + "1 - [bb/3.txt, dd/5.txt, dd/6.txt] [aa/1.txt, aa/2.txt, ff/8.txt, cc/4.txt, ee/7.txt, gg/9.txt, gg/10.txt]\n" + "2 - [cc/4.txt, ee/7.txt, gg/9.txt, gg/10.txt] [aa/1.txt, aa/2.txt, ff/8.txt, bb/3.txt, dd/5.txt, dd/6.txt]\n";
    StringBuilder actual = new StringBuilder();
    int n = 0;
    ParameterSpace pSpace = new ParameterSpace(foldBundle);
    for (Map<String, Object> config : pSpace) {
        actual.append(String.format("%d - %s %s\n", n, config.get("fold_validation"), config.get("fold_training")));
        n++;
    }
    // System.out.println(actual.toString());
    assertEquals(3, n);
    assertEquals(3, pSpace.getStepCount());
    assertEquals(expected, actual.toString());
}
Also used : FoldDimensionBundle(org.dkpro.lab.task.impl.FoldDimensionBundle) ParameterSpace(org.dkpro.lab.task.ParameterSpace) File(java.io.File) Comparator(java.util.Comparator) Test(org.junit.Test)

Example 5 with ParameterSpace

use of org.dkpro.lab.task.ParameterSpace in project dkpro-lab by dkpro.

the class FoldDimensionBundleTest method testFoldInjection.

@Test
public void testFoldInjection() throws Exception {
    File repo = new File("target/repository/" + getClass().getSimpleName() + "/" + name.getMethodName());
    FileUtils.deleteDirectory(repo);
    repo.mkdirs();
    ((FileSystemStorageService) Lab.getInstance().getStorageService()).setStorageRoot(repo);
    Dimension<String> baseData = Dimension.create("base", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
    FoldDimensionBundle<String> foldBundle = new FoldDimensionBundle<String>("fold", baseData, 3);
    String expected = "0 - [1, 4, 7, 10] [2, 5, 8, 3, 6, 9]\n" + "1 - [2, 5, 8] [1, 4, 7, 10, 3, 6, 9]\n" + "2 - [3, 6, 9] [1, 4, 7, 10, 2, 5, 8]\n";
    ParameterSpace pSpace = new ParameterSpace(foldBundle);
    final StringBuilder actual = new StringBuilder();
    Task testTask = new ExecutableTaskBase() {

        int n = 0;

        @Discriminator
        Collection<String> fold_validation;

        @Discriminator
        Collection<String> fold_training;

        @Override
        public void execute(TaskContext aContext) throws Exception {
            System.out.printf("%d training  : %s\n", n, fold_training);
            System.out.printf("%d validation: %s\n", n, fold_validation);
            actual.append(String.format("%d - %s %s\n", n, fold_validation, fold_training));
            n++;
        }
    };
    DefaultBatchTask batchTask = new DefaultBatchTask();
    batchTask.setParameterSpace(pSpace);
    batchTask.addTask(testTask);
    Lab.getInstance().run(batchTask);
    assertEquals(3, pSpace.getStepCount());
    assertEquals(expected, actual.toString());
}
Also used : Task(org.dkpro.lab.task.Task) DefaultBatchTask(org.dkpro.lab.task.impl.DefaultBatchTask) FoldDimensionBundle(org.dkpro.lab.task.impl.FoldDimensionBundle) TaskContext(org.dkpro.lab.engine.TaskContext) ExecutableTaskBase(org.dkpro.lab.task.impl.ExecutableTaskBase) ParameterSpace(org.dkpro.lab.task.ParameterSpace) Collection(java.util.Collection) File(java.io.File) FileSystemStorageService(org.dkpro.lab.storage.filesystem.FileSystemStorageService) DefaultBatchTask(org.dkpro.lab.task.impl.DefaultBatchTask) Test(org.junit.Test)

Aggregations

ParameterSpace (org.dkpro.lab.task.ParameterSpace)130 HashMap (java.util.HashMap)60 CollectionReaderDescription (org.apache.uima.collection.CollectionReaderDescription)51 Map (java.util.Map)45 Test (org.junit.Test)44 TcFeatureSet (org.dkpro.tc.api.features.TcFeatureSet)42 File (java.io.File)26 WekaAdapter (org.dkpro.tc.ml.weka.WekaAdapter)21 DefaultBatchTask (org.dkpro.lab.task.impl.DefaultBatchTask)12 ArrayList (java.util.ArrayList)10 LiblinearAdapter (org.dkpro.tc.ml.liblinear.LiblinearAdapter)9 NaiveBayes (weka.classifiers.bayes.NaiveBayes)9 TaskContext (org.dkpro.lab.engine.TaskContext)7 CrfSuiteAdapter (org.dkpro.tc.ml.crfsuite.CrfSuiteAdapter)7 LibsvmAdapter (org.dkpro.tc.ml.libsvm.LibsvmAdapter)7 List (java.util.List)6 XgboostAdapter (org.dkpro.tc.ml.xgboost.XgboostAdapter)6 FoldDimensionBundle (org.dkpro.lab.task.impl.FoldDimensionBundle)5 SMO (weka.classifiers.functions.SMO)5 Task (org.dkpro.lab.task.Task)4